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 本章知识体系

下面这张图把文件系统创建与挂载的核心流程串起来了。你可以把它当作操作前的“检查清单”。

文件系统创建与挂载流程 文件系统创建与挂载核心流程 分区就绪(/dev/sdb1) mkfs.ext4 /dev/sdb1 swap: mkswap mount /dev/sdb1 /mnt swapon /dev/sdc1 df -h / swapon --show /etc/fstab 写入 UUID ⚠️ 关键提醒 用 UUID 代替设备名 💡 验证命令 mount -a 测试 fstab

嗯,到这里,文件系统的创建、挂载、持久化以及 swap 管理就全了。这些操作看起来简单,但每一步都有细节。我建议你在测试环境里多练几遍,特别是 fstab 写错后的恢复方法——真到生产环境出问题时,能救命。