第78课 - 创建文件系统与挂载
学习目标
完成本课学习后,你将能够:
- 识别并理解需要格式化的块设备(如
/dev/sdb1)。 - 区分常见的 Linux 文件系统类型(如 ext4, xfs)。
- 使用
mkfs命令在分区上创建文件系统。 - 使用
mount和umount命令临时挂载和卸载文件系统。 - 理解“挂载点”的概念,并将其与设备关联。
核心概念
上一课我们学会了使用 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
可以看到 sdb1 的 FSTYPE 为空,说明还未创建文件系统。
2. 创建文件系统 (mkfs)
我们使用 mkfs 命令(Make FileSystem 的缩写)来格式化分区。常用选项如下:
-t <类型>:指定文件系统类型,如ext4,xfs。在较新的系统中,也可以直接使用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,请忽略细节,将其视为一个普通分区)。请完成以下任务:
- 将其格式化为
xfs文件系统。 - 创建一个挂载点
/test_mount。 - 将其挂载到该挂载点。
- 使用
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中的分区卸载。
- 使用
mkfs.ext4 -L TEST_LV重新格式化它(会清空数据)。 - 使用卷标
TEST_LV而非设备名来进行挂载。 提示: 挂载时可以使用mount LABEL=TEST_LV /test_mount。
练习 3:对比不同文件系统
- 创建两个大小相同的分区(例如各1GB),分别命名为
/dev/sdc1和/dev/sdc2。 - 将
/dev/sdc1格式化为ext4,/dev/sdc2格式化为xfs。 - 将它们分别挂载到
/mnt/ext4和/mnt/xfs。 - 使用
df -Th命令查看,思考输出中的Type列有什么变化。
常见错误
- 挂载前未卸载:试图对一个已经挂载的设备再次执行
mount命令,系统会提示mount: /mnt/data: /dev/sdb1 already mounted on /mnt/data.。需要先umount。 - 设备名错误:对一个不存在的设备(如
/dev/sdz1)执行mkfs或mount,会报错No such file or directory。务必使用lsblk确认设备名。 - 挂载点目录非空:如果挂载点目录下已有文件,挂载后这些文件会被隐藏(被新文件系统的根目录覆盖),但数据并未丢失,卸载后会重新显示。通常建议使用空目录作为挂载点。
- 权限不足:
mkfs和mount操作通常需要sudo或 root 权限。 - 忘记创建挂载点:
mount命令不会自动创建目录,如果目标目录不存在,会报错mount: mount point /new_point does not exist。必须先用mkdir创建。
小结
本节课我们掌握了 Linux 存储管理中的关键步骤:
- mkfs (Make FileSystem):在分区(或逻辑卷等块设备)上创建文件系统,这是存储数据前的必要格式化步骤。常用
mkfs.ext4或mkfs.xfs。 - mount:将一个已格式化的文件系统“连接”到系统目录树上的一个点(挂载点),使其内容可以被访问。
- umount:安全地断开文件系统与挂载点的连接,是维护数据完整性的重要操作。
- 挂载点:一个普通的目录,作为访问文件系统的入口。
关键要点: 创建文件系统 (mkfs) 和挂载 (mount) 是使用任何新分区或逻辑卷存储数据的标准流程。临时挂载在系统重启后会失效,要实现开机自动挂载,需要配置 /etc/fstab 文件,这将是下一节课的内容。