挂载会把文件系统附加到可见命名空间中的一个目录。来源可以是块设备、网络导出、虚拟文件系统、绑定挂载来源或其他实现特有的对象。目标目录称为挂载点。
文件系统 · 第 6 课
mount 与 umount
学习如何使用核实过的来源和挂载点附加、检查并安全分离文件系统。
准备并检查挂载点
本地策略要求时,创建一个用途明确的目录:
$ sudo mkdir -p /mnt/mydrive
挂载前先检查它:
$ findmnt --target /mnt/mydrive
$ sudo ls -la /mnt/mydrive
在非空目录上挂载文件系统,会把原有条目隐藏在新文件系统之后,直到卸载为止;原有条目不会被删除。这可能使应用程序困惑,并在不可见处占用磁盘空间,因此应使用空的专用挂载点。
在一个目录上挂载另一个文件系统后,其中已有的文件会怎样?
挂载核实过的文件系统
确认来源身份、检测到的类型和预期内容后,明确执行挂载:
$ sudo mount -t ext4 /dev/VERIFIED-PARTITION /mnt/mydrive
-t 选项指定文件系统实现。Mount 通常能够检测类型,但显式指定类型并审查选项可以让意图更清楚。对于不受信任或可移动的内容,可在符合工作负载需要时考虑 ro、nosuid、nodev 和 noexec 等限制性选项;每项选项都有局限,不能当作完整沙箱。
验证实际挂载的内容:
$ findmnt --target /mnt/mydrive -o TARGET,SOURCE,FSTYPE,OPTIONS
挂载受命名空间限制。在容器或私有服务命名空间中创建的挂载,可能不会出现在另一个进程的视图中。
在所示工作流程中,mount 命令会做什么?
使用文件系统 UUID
/dev/sdb2 这样的枚举名称可能变化。可以用以下命令发现文件系统标识符:
$ lsblk -f
$ sudo blkid
然后按 UUID 挂载已经核实的文件系统:
$ sudo mount UUID=130b882f-7d79-436d-a096-1e594c92bb76 /mnt/mydrive
UUID 标识文件系统,而不一定标识物理磁盘。重新格式化会改变它,克隆则可能复制它。把原始文件系统和克隆件同时附加到一个系统前,应确认 UUID 唯一。
为什么在持久配置中,文件系统 UUID 通常优于 /dev/sdX?
安全卸载
使用准确的挂载点进行分离:
$ sudo umount /mnt/mydrive
命令拼写为 umount,开头没有第一个 n。成功卸载表示内核完成了必要的回写,并在引用允许时分离文件系统。拔出存储设备前,应使用 findmnt 再次确认。
对于可移动介质,成功卸载不一定就是安全移除的最后一步。桌面存储栈可能提供弹出或断电操作,用于刷新设备缓存并禁用 USB 设备。应遵循平台和硬件的工作流程。
哪个命令会分离 /mnt/mydrive?
诊断繁忙的文件系统
如果命名空间中仍有活动引用,卸载会失败,例如打开的文件、进程工作目录、嵌套挂载、交换空间或其他存储层。应调查原因,而不是立即强制卸载:
$ findmnt --submounts /mnt/mydrive
$ sudo fuser -vm /mnt/mydrive
让 shell 离开该目录树,干净地停止相关应用程序,并先卸载子挂载再卸载父挂载。延迟卸载和强制选项有专门语义,可能留下活动引用或造成数据丢失;只有在具备文档支持的恢复理由时才能使用。
哪种情况会让 umount 报告文件系统繁忙?
可以在管理 Linux 分区和文件系统实验指定的可丢弃存储上练习。
课程已完成
你已完成 mount 与 umount
现在,你可以在可验证的范围内附加和分离文件系统。
使用空的专用挂载点。
核实来源、类型、选项和最终挂载结果。
在持久引用中优先使用唯一的文件系统标识符。
按目标卸载,并在移除设备前确认已经分离。
诊断活动引用,而不是强制卸载繁忙的文件系统。