78·存储管理进阶

创建文件系统与挂载

mkfsmount

第78课 - 创建文件系统与挂载

学习目标

完成本课学习后,你将能够:

  1. 识别并理解需要格式化的块设备(如 /dev/sdb1)。
  2. 区分常见的 Linux 文件系统类型(如 ext4, xfs)。
  3. 使用 mkfs 命令在分区上创建文件系统。
  4. 使用 mountumount 命令临时挂载和卸载文件系统。
  5. 理解“挂载点”的概念,并将其与设备关联。

核心概念

上一课我们学会了使用 parted 工具对新磁盘进行分区。分区完成后,操作系统还不能直接在上面存储文件,因为分区是“裸”的,就像一片划好边界但未建房的空地。我们需要在上面“建好房子”,这个“建房子”的过程就叫做 创建文件系统(Create Filesystem),也就是格式化。

创建文件系统后,我们需要告诉操作系统:“请把这个‘建好房子’的分区,放到目录树上的某个位置,让用户可以通过这个路径访问它。” 这个过程就叫做 挂载(Mount)。那个被指定的目录,我们称为 挂载点(Mount Point)

简单比喻:

  • 磁盘 /dev/sdb:一块完整的地皮。
  • 分区 /dev/sdb1:在地皮上划出的一块特定区域。
  • 创建文件系统(mkfs):在这块区域上盖好一栋楼(设置好楼层、房间号等结构,以便存放物品)。
  • 挂载点 /mnt/data:一个指定的地址(比如“幸福路100号”)。
  • 挂载(mount):把盖好的楼(/dev/sdb1)的地址正式注册为“幸福路100号”(/mnt/data)。之后,你去“幸福路100号”,就等于去了那栋楼。

代码示例

1. 准备工作与查看设备

首先,确认我们要操作的磁盘和分区。假设我们已经用 parted 创建好了分区 /dev/sdb1

# 使用 lsblk 命令查看块设备信息,-f 选项会显示文件系统类型(目前为空)
lsblk -f /dev/sdb

输出可能类似:

NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb
└─sdb1

可以看到 sdb1FSTYPE 为空,说明还未创建文件系统。

2. 创建文件系统 (mkfs)

我们使用 mkfs 命令(Make FileSystem 的缩写)来格式化分区。常用选项如下:

  • -t <类型>:指定文件系统类型,如 ext4xfs。在较新的系统中,也可以直接使用 mkfs.ext4 这种形式的命令。
  • -L <标签>:为文件系统设置一个卷标(Label),方便识别。

我们将 /dev/sdb1 格式化为 ext4 文件系统,并设置卷标为 MYDATA

# 为 /dev/sdb1 创建 ext4 文件系统
sudo mkfs.ext4 -L MYDATA /dev/sdb1

执行后,会输出一系列创建文件系统的详细信息。完成后,再次用 lsblk -f 查看:

lsblk -f /dev/sdb

输出变为:

NAME   FSTYPE LABEL  UUID                                 MOUNTPOINT
sdb
└─sdb1 ext4   MYDATA 1a2b3c4d-5e6f-7890-abcd-ef1234567890

现在 FSTYPE 已经显示为 ext4,并出现了唯一的 UUID(通用唯一识别码)和我们设置的 LABEL

3. 创建挂载点并临时挂载 (mount)

挂载点是一个普通的空目录。我们通常将它创建在 /mnt/media 目录下。

# 创建挂载点目录
sudo mkdir -p /mnt/data

现在,使用 mount 命令将文件系统挂载到这个目录上。

# 将 /dev/sdb1 挂载到 /mnt/data
sudo mount /dev/sdb1 /mnt/data

挂载成功后,命令不会输出任何信息。我们来验证一下:

# 查看挂载情况
df -h /mnt/data

输出会显示该挂载点的文件系统、大小、已用空间、可用空间和使用率等信息。

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        19G   45M   18G   1% /mnt/data

现在,你可以在 /mnt/data 目录下读写文件,所有数据都将实际存储在 /dev/sdb1 这个分区上了。

4. 卸载文件系统 (umount)

当不再需要使用该文件系统时,为了数据安全和系统整洁,应该将其卸载。注意:卸载前请确保没有程序正在使用该挂载点下的文件,否则会卸载失败。

# 卸载文件系统,可以使用设备名或挂载点
sudo umount /mnt/data
# 或者
# sudo umount /dev/sdb1

卸载后,/mnt/data 目录将变回一个普通的空目录。

实践练习

练习 1:基础格式化与挂载

假设你有一个新的逻辑分区 /dev/vg_data/lv_test(基于LVM,请忽略细节,将其视为一个普通分区)。请完成以下任务:

  1. 将其格式化为 xfs 文件系统。
  2. 创建一个挂载点 /test_mount
  3. 将其挂载到该挂载点。
  4. 使用 df -h 命令查看挂载是否成功。 预期操作命令序列:
sudo mkfs.xfs /dev/vg_data/lv_test
sudo mkdir /test_mount
sudo mount /dev/vg_data/lv_test /test_mount
df -h /test_mount

练习 2:使用卷标挂载

  1. 将练习1中的分区卸载。
  2. 使用 mkfs.ext4 -L TEST_LV 重新格式化它(会清空数据)。
  3. 使用卷标 TEST_LV 而非设备名来进行挂载。 提示: 挂载时可以使用 mount LABEL=TEST_LV /test_mount

练习 3:对比不同文件系统

  1. 创建两个大小相同的分区(例如各1GB),分别命名为 /dev/sdc1/dev/sdc2
  2. /dev/sdc1 格式化为 ext4/dev/sdc2 格式化为 xfs
  3. 将它们分别挂载到 /mnt/ext4/mnt/xfs
  4. 使用 df -Th 命令查看,思考输出中的 Type 列有什么变化。

常见错误

  1. 挂载前未卸载:试图对一个已经挂载的设备再次执行 mount 命令,系统会提示 mount: /mnt/data: /dev/sdb1 already mounted on /mnt/data.。需要先 umount
  2. 设备名错误:对一个不存在的设备(如 /dev/sdz1)执行 mkfsmount,会报错 No such file or directory。务必使用 lsblk 确认设备名。
  3. 挂载点目录非空:如果挂载点目录下已有文件,挂载后这些文件会被隐藏(被新文件系统的根目录覆盖),但数据并未丢失,卸载后会重新显示。通常建议使用空目录作为挂载点。
  4. 权限不足mkfsmount 操作通常需要 sudo 或 root 权限。
  5. 忘记创建挂载点mount 命令不会自动创建目录,如果目标目录不存在,会报错 mount: mount point /new_point does not exist。必须先用 mkdir 创建。

小结

本节课我们掌握了 Linux 存储管理中的关键步骤:

  • mkfs (Make FileSystem):在分区(或逻辑卷等块设备)上创建文件系统,这是存储数据前的必要格式化步骤。常用 mkfs.ext4mkfs.xfs
  • mount:将一个已格式化的文件系统“连接”到系统目录树上的一个点(挂载点),使其内容可以被访问。
  • umount:安全地断开文件系统与挂载点的连接,是维护数据完整性的重要操作。
  • 挂载点:一个普通的目录,作为访问文件系统的入口。

关键要点: 创建文件系统 (mkfs) 和挂载 (mount) 是使用任何新分区或逻辑卷存储数据的标准流程。临时挂载在系统重启后会失效,要实现开机自动挂载,需要配置 /etc/fstab 文件,这将是下一节课的内容。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「/etc/fstab 持久化挂载」 以巩固所学知识。