3. 文件系统创建与挂载
分区搞定了,接下来就是给它安上“灵魂”——文件系统。说白了,文件系统就是硬盘上的“书架”,决定了数据怎么摆、怎么找。我见过不少新手,分区完直接格式化就开干,结果后面扩容、迁移时哭都来不及。嗯,咱们一步步来,把这块吃透。
3.1 mkfs:给分区“格式化”
mkfs 是 Make Filesystem 的缩写。它的工作就是把一个空分区变成能被操作系统识别的文件系统。我个人习惯用 mkfs.ext4,因为 ext4 在稳定性和性能之间平衡得最好。
常用命令示例:
# 将 /dev/sdb1 格式化为 ext4
mkfs.ext4 /dev/sdb1
# 指定 inode 数量(适合存大量小文件)
mkfs.ext4 -N 1000000 /dev/sdb1
# 格式化为 xfs(适合大文件、高并发)
mkfs.xfs /dev/sdb1
这里有个坑:mkfs 会清空分区上的所有数据。我曾经在客户现场,手一抖把 /dev/sda 写成了 /dev/sdb,还好只是测试机……从那以后,我每次执行 mkfs 前都会用 lsblk 确认三遍。
| 文件系统类型 | 适用场景 | 最大单文件 | 最大分区 |
|---|---|---|---|
| ext4 | 通用 Linux 系统盘 | 16 TB | 1 EB |
| xfs | 大文件、数据库、视频 | 8 EB | 8 EB |
| btrfs | 快照、压缩、子卷 | 16 EB | 16 EB |
小技巧:如果你不确定分区上原来有什么数据,可以用 blkid /dev/sdb1 查看现有文件系统类型。别上来就 mkfs,万一里面有重要数据呢?
3.2 mount 与 umount:挂载与卸载
格式化完,分区还不能直接用。你得把它“挂”到目录树上,这就是 mount 做的事。挂载点就是一个空目录,比如 /mnt/data。
# 创建挂载点
mkdir -p /mnt/data
# 挂载分区
mount /dev/sdb1 /mnt/data
# 查看挂载情况
df -h
# 卸载分区
umount /mnt/data
你想想看,挂载就像给书架贴标签。标签贴错了,数据就找不到了。我遇到过最离谱的事:有人把 /dev/sdb1 挂到了 / 根目录上,结果系统直接崩了。因为根目录原本的内容被“盖住”了。
注意:卸载时,确保没有进程在使用该目录。可以用 lsof /mnt/data 或 fuser -m /mnt/data 查看。强制卸载用 umount -l,但可能会丢数据。
3.3 /etc/fstab:持久化配置
重启后挂载会消失,除非你写进 /etc/fstab。这个文件是 Linux 的“开机自动挂载清单”。
典型的 fstab 条目长这样:
# <设备> <挂载点> <类型> <选项> <dump> <pass>
/dev/sdb1 /mnt/data ext4 defaults 0 2
UUID=abc123 /mnt/data ext4 defaults 0 2
我个人强烈建议用 UUID 而不是设备名。为什么?因为设备名(如 /dev/sdb1)在插拔硬盘后可能会变。UUID 是唯一的,不会变。用 blkid 就能查到。
| 字段 | 说明 | 常用值 |
|---|---|---|
| 设备 | 分区路径或 UUID | /dev/sdb1 或 UUID=xxx |
| 挂载点 | 目录路径 | /mnt/data |
| 类型 | 文件系统类型 | ext4, xfs, swap |
| 选项 | 挂载参数 | defaults, noatime, ro |
| dump | 备份标志(0=不备份) | 0 |
| pass | 开机检查顺序(0=不检查) | 0 或 2 |
验证方法:修改 fstab 后,用 mount -a 测试所有条目是否能正常挂载。如果报错,赶紧改回来,否则下次开机可能进不了系统。
3.4 swap 分区管理
swap 是 Linux 的“虚拟内存”。物理内存不够时,系统会把不常用的数据挪到 swap 里。说白了,就是拿硬盘当内存用——虽然慢,但总比 OOM(内存溢出)强。
创建 swap 分区
# 1. 创建分区(假设是 /dev/sdc1)
# 2. 格式化为 swap
mkswap /dev/sdc1
# 3. 启用 swap
swapon /dev/sdc1
# 4. 查看 swap 状态
swapon --show
free -h
创建 swap 文件
如果你不想动分区,也可以直接用文件当 swap。我在云服务器上经常这么干,因为云盘不好重新分区。
# 创建 2GB 的 swap 文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
# 设置权限(安全考虑)
chmod 600 /swapfile
# 格式化为 swap
mkswap /swapfile
# 启用
swapon /swapfile
持久化 swap
同样,重启后 swap 会消失。把它写进 /etc/fstab:
/swapfile none swap sw 0 0
避坑指南:我曾经给一台 64GB 内存的服务器配了 128GB 的 swap,结果系统频繁在内存和 swap 之间交换数据,性能反而下降了。swap 不是越大越好,一般建议:
- 内存 ≤ 2GB:swap = 内存 × 2
- 内存 2-8GB:swap = 内存
- 内存 > 8GB:swap = 4-8GB 足够
3.5 本章知识体系
下面这张图把文件系统创建与挂载的核心流程串起来了。你可以把它当作操作前的“检查清单”。
嗯,到这里,文件系统的创建、挂载、持久化以及 swap 管理就全了。这些操作看起来简单,但每一步都有细节。我建议你在测试环境里多练几遍,特别是 fstab 写错后的恢复方法——真到生产环境出问题时,能救命。