Linux 磁盘挂载

点击上方"程序猿技术大咖",关注并选择"设为星标"

回复"加群"获取入群讨论资格!

在 Linux 中,磁盘不像 Windows 那样自动分配盘符,而是需要手动或配置自动"挂载"到某个目录。理解挂载机制,是每位 Linux 运维人员的必备技能。

1 什么是磁盘挂载?

Linux 使用统一的目录树结构,所有存储设备(硬盘、U盘、光驱)都必须挂载到某个目录节点,才能被系统访问。这个过程称为"挂载"(mount),被挂载的目录称为"挂载点"。

与 Windows 的 C盘、D盘不同,Linux 将 /dev/sdb1 这样的设备文件挂载到 /data 目录,访问 /data 即访问该磁盘。可以理解为:把一块磁盘"接入"到目录树的某个节点上。

2 查看磁盘与分区信息

在挂载之前,先确认系统识别到了哪些磁盘和分区。

bash 复制代码
# 查看所有磁盘和分区(树形结构)lsblk# 查看分区详情(含UUID和文件系统类型)lsblk -f# 查看磁盘使用情况df -h# 查看分区表(需要 root 权限)fdisk -l
powershell 复制代码
# lsblk 输出示例NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda      8:0    0   50G  0 disk├─sda1   8:1    0    1G  0 part /boot└─sda2   8:2    0   49G  0 part /sdb      8:16   0  100G  0 disk└─sdb1   8:17   0  100G  0 part

其中 sdb1 的 MOUNTPOINT 列为空,说明尚未挂载,接下来我们对它操作。

3 格式化分区(创建文件系统)

新磁盘或新分区在挂载前通常需要格式化,即创建文件系统(如果是已有数据的磁盘则跳过此步)。

bash 复制代码
# 格式化为 ext4mkfs.ext4 /dev/sdb1# 格式化为 xfsmkfs.xfs /dev/sdb1# 格式化为 vfat(U盘常用)mkfs.vfat /dev/sdb1

⚠️ 格式化会清除分区上的所有数据,操作前请务必确认设备路径正确,并做好数据备份!

4 临时挂载(mount 命令)

使用 mount 命令可以立即挂载磁盘,但重启后失效,适合临时使用或测试。

  • 1

    创建挂载点目录挂载点必须是一个已存在的空目录,建议放在 /mnt 或 /data 下

  • 2

    执行挂载命令将设备文件挂载到指定目录,可选择指定文件系统类型

  • 3

    验证挂载结果用 df -h 或 mount 命令确认挂载成功,可进入目录读写数据

bash 复制代码
# 第一步:创建挂载点mkdir -p /data/disk1# 第二步:挂载磁盘mount /dev/sdb1 /data/disk1# 指定文件系统类型(推荐加上 -t)mount -t ext4 /dev/sdb1 /data/disk1# 第三步:验证挂载df -h /data/disk1mount | grep sdb1

5 永久挂载(配置 /etc/fstab)

要让挂载在重启后依然生效,需要编辑 /etc/fstab 文件。该文件是 Linux 的"自动挂载配置表",系统每次启动都会读取并自动执行其中的挂载指令。

强烈建议使用 UUID 而非设备名(如/dev/sdb1)来标识磁盘。设备名在磁盘增减后可能发生变化,UUID 则是磁盘格式化时生成的唯一标识符,永久固定。

bash 复制代码
# 方法一:blkid 命令blkid /dev/sdb1/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-1234567890ef" TYPE="ext4"# 方法二:lsblk -f(更直观)lsblk -f
apache 复制代码
CONFIG --- /etc/fstab 写法# 格式:设备  挂载点  文件系统  选项  dump  fsckUUID=a1b2c3d4-e5f6-7890-abcd-1234567890ef  /data/disk1  ext4  defaults  0  2

fstab 各字段含义

  • 1

    设备标识UUID=xxx 或 /dev/sdb1,推荐使用 UUID

  • 2

    挂载点目标目录,如 /data/disk1,必须提前创建

  • 3

    文件系统类型ext4、xfs、vfat 等,与格式化时保持一致

  • 4

    挂载选项defaults 即可满足大多数场景;只读可用 ro

  • 5

    dump 备份0 = 不备份(一般填 0)

  • 6

    fsck 检查顺序0 = 不检查;根分区填 1;其他分区填 2

bash 复制代码
SHELL --- 验证 fstab 配置# 验证 fstab 语法是否有误findmnt --verify# 挂载 fstab 中所有未挂载的条目mount -a# 检查 /data/disk1 是否挂载成功df -h /data/disk1

⚠️ fstab 配置错误可能导致系统无法正常启动!修改前请先备份原文件:cp /etc/fstab /etc/fstab.bak

6 卸载磁盘(umount)

当不再需要某个挂载时,使用 umount 命令卸载(注意:是 umount,不是 unmount)。卸载后该设备可安全拔除或重新分配。

bash 复制代码
# 按挂载点卸载umount /data/disk1# 按设备名卸载umount /dev/sdb1# 强制卸载(设备繁忙时,谨慎使用)umount -f /data/disk1# 卸载失败时------查看谁在占用lsof /data/disk1fuser -m /data/disk1

7 常见问题与排查

问题排查速查表

8 操作总结

掌握磁盘挂载是 Linux 系统管理的重要基础。建议在虚拟机中完整练习一遍:新建磁盘 → lsblk 确认 → mkfs 格式化 → mount 临时挂载 → 写入 /etc/fstab 永久挂载,形成完整操作链路。


感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!

喜欢就点个"在看"呗,留言、转发朋友圈

相关推荐
aixingkong9212 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
雯宝4 小时前
mnt_init 函数
linux
律宏阔10 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔10 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴10 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千11 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei3711 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3711 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3711 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh11 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker