当前位置:首页>Linux>挂载是什么?Linux为啥要把磁盘“挂”到目录上?

挂载是什么?Linux为啥要把磁盘“挂”到目录上?

  • 2026-10-11 06:36:25
挂载是什么?Linux为啥要把磁盘“挂”到目录上?
 本文目标:理解挂载概念,熟练掌握 `mount` 命令,配置 `/etc/fstab` 实现开机自动挂载。上回我们给虚拟机添加了新硬盘,分区、格式化,然后用 `mount` 命令挂载到目录上。但很多人第一次接触“挂载”这个词时都会懵:为什么不是像 Windows 那样自动出来一个 D 盘?今天我们就来彻底搞懂 Linux 的挂载哲学。

一、Windows 的“分列式” vs Linux 的“树状一体化”

在 Windows 中,每个分区独立存在:C盘、D盘、E盘,各管各的。U盘插上就多一个 F盘,拔了就消失。

而 Linux 采用的是 单一目录树 架构,只有一个根 /。所有分区、U盘、光盘都不是独立的“盘符”,而是以目录的形式嫁接在目录树的某个枝桠上。这个“嫁接”的动作,就叫 挂载(mount)。

打个比方:

  • Windows 像是在客厅里摆了几个独立的书架,每个书架有自己的标签(C盘、D盘)。

  • Linux 则是只有一棵巨大的圣诞树,每个分区、U盘都是挂在这棵树上的装饰品或礼物盒,挂在哪里由你决定。


二、挂载的入口:挂载点(Mount Point)

挂载点本质上就是一个空目录。你把设备(如分区 /dev/sdb1)挂载到这个空目录上之后,往这个目录里存放的所有文件,实际上就存到了该分区里。

关键规则:

  1. 挂载点必须是已存在的目录。

  2. 最好使用空目录。如果目录原本有文件,挂载后这些文件会被暂时“隐藏”,直到你卸载该分区才重新出现。

  3. 一个目录只能挂载一个设备。一个设备可以挂载到多个目录上(但一般没必要)。

查看当前挂载情况:

df -h# 人类可读的方式显示挂载信息mount          # 显示所有挂载详情(输出很长)lsblk          # 树形显示块设备及其挂载点

三、mount 命令详解

基本挂载

mount 设备 挂载点

例如:

sudo mount /dev/sdb1 /mnt/part1

卸载

sudo umount 设备# 或sudo umount 挂载点

注意是 umount 不是 unmount。卸载前,确保没有进程正在使用该目录,否则会报 target is busy。

常用挂载选项(-o 指定)

# 以只读方式挂载sudo mount -o ro /dev/sdb1 /mnt/part1# 允许执行程序(默认)sudo mount -o exec /dev/sdb2 /mnt/part2# 不允许执行(安全加固)sudo mount -o noexec /dev/sdb2 /mnt/part2# 挂载 NTFS 格式的 U盘(需要 ntfs-3g)sudo mount -t ntfs-3g /dev/sdc1 /mnt/usb

-t 指定文件系统类型,一般 Linux 能自动识别。

四、开机自动挂载:/etc/fstab

mount 命令实现的挂载是临时的,重启就没了。想让系统每次开机都自动挂载分区,需要写入配置文件 /etc/fstab(File System Table)。

fstab 文件格式

每一行记录一个设备,有 6 个字段:

设备      挂载点    文件系统类型    挂载选项      dump   pass

示例:

/dev/sdb1   /mnt/part1   ext4   defaults   0   2

字段解释:

  • 设备:可以是 /dev/sdb1,也可以用 UUID(推荐,因为设备路径可能变化)。

  • 挂载点:你准备的目录,如 /mnt/part1。

  • 文件系统类型:如 ext4, xfs。

  • 挂载选项:常用 defaults(默认), ro(只读), noauto(不自动挂载)等。

  • dump:备份标志,0 表示不备份。

  • pass:开机 fsck 检查顺序,0 不检查,1 给根分区 /,2 其他。

实战:让 /dev/sdb1 开机自动挂载

第一步:查看分区的 UUID

bash

sudo blkid /dev/sdb1

输出类似:

/dev/sdb1: UUID="a1b2c3d4-..." TYPE="ext4"

复制那一串 UUID。

第二步:编辑 /etc/fstab

bash

sudo nano /etc/fstab

在文件末尾添加一行:

UUID=a1b2c3d4-...   /mnt/part1   ext4   defaults   0   2

保存并退出(Ctrl+O 回车,Ctrl+X)。

第三步:测试挂载(不重启验证)

# 先卸载sudo umount /mnt/part1# 根据 fstab 重新挂载所有文件系统sudo mount -a# 检查df -h | grep sdb1

如果没报错且能看到挂载,说明配置正确。以后每次开机都会自动挂载。


五、场景扩展:U盘的挂载

当你插入一个 U盘,Ubuntu 桌面版通常会自动挂载到 /media/用户名/U盘卷标 下。但在纯服务器版系统中,你可能需要手动挂载。

# 1. 查看 U盘设备名(假设 sdc)lsblk# 2. 创建挂载点sudo mkdir /mnt/usb# 3. 挂载(假设是 NTFS 格式)sudo mount -t ntfs-3g /dev/sdc1 /mnt/usb# 4. 用完后卸载sudo umount /mnt/usb

拔 U盘前一定要卸载,否则可能丢数据。


🎯 动手练一练

  1. 将上篇创建的 /dev/sdb1 和 /dev/sdb2 卸载,再重新挂载。

  2. 用 blkid 获取两个分区的 UUID。

  3. 编辑 /etc/fstab,让两个分区分别自动挂载到 /mnt/part1 和 /mnt/part2。

  4. 执行 sudo mount -a 测试,没有报错则重启虚拟机验证是否自动挂载。

  5. (可选)找一个U盘插入电脑,在 VMware 中将U盘连接到虚拟机,观察 lsblk 的变化,手动挂载并查看内容。


💬 留言互动

第一次听到“挂载”这个词,你脑子里浮现的画面是什么? 是给圣诞树挂礼物,还是给墙上挂衣服?来评论区分享你的脑洞解释,帮助更多同学理解!


第二阶段结束语: 恭喜你完成了“文件与磁盘”模块的修炼!从文件的增删改查,到权限精控,再到磁盘分区和挂载,你已经掌握了 Linux 磁盘管理的核心。下一阶段我们将进入 Shell 编程 的殿堂,从命令行配置开始,逐步写出自己的自动化脚本!

最新文章

随机文章