Linux 新增磁盘挂载与开机自动挂载技术文档
1. 文档目的
本文记录在 Linux 系统中,将一块已存在 ext4 文件系统的新增磁盘挂载到指定目录,并通过 /etc/fstab 实现开机自动挂载的完整方案。
本次实施结果如下:
| 项目 | 配置 |
|---|---|
| 磁盘设备 | /dev/vdb |
| 数据分区 | /dev/vdb1 |
| 分区容量 | 300 GB |
| 文件系统 | ext4 |
| 文件系统 UUID | ef67fa03-7e38-41b4-9bac-16ea48aad9a0 |
| 挂载目录 | /mnt/data |
| 使用用户 | ubuntu |
| 自动挂载方式 | /etc/fstab + UUID |
注意:本方案不会格式化磁盘,适用于磁盘分区已经存在文件系统的情况。格式化会清除分区内的数据,操作前必须确认磁盘状态。
2. 方案说明
自动挂载配置使用文件系统 UUID,而不是 /dev/vdb1 之类的设备路径。Linux 系统中的设备名称可能因硬件探测顺序变化而改变,而文件系统 UUID 通常保持不变,因此 UUID 更适合作为持久化挂载标识。
挂载参数中加入 nofail,即使磁盘临时缺失或未连接,系统也可以继续启动,避免非系统关键数据盘影响开机流程。
3. 前置检查
3.1 查看磁盘及文件系统
lsblk -o NAME,PATH,SIZE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINTS,TYPE,MODEL
本次识别到的新增磁盘信息为:
vdb /dev/vdb 300G disk
└─vdb1 /dev/vdb1 300G ext4 UUID=ef67fa03-7e38-41b4-9bac-16ea48aad9a0
执行写入操作前,应确认:
/dev/vdb1确实是需要挂载的新增磁盘分区;- 分区没有挂载到其他目录;
- 文件系统类型为 ext4;
- 磁盘中是否存在需要保留的数据。
3.2 获取 UUID
sudo blkid /dev/vdb1
预期输出类似:
/dev/vdb1: UUID="ef67fa03-7e38-41b4-9bac-16ea48aad9a0" BLOCK_SIZE="4096" TYPE="ext4"
4. 创建挂载目录
创建用于访问数据盘的目录:
sudo mkdir -p /mnt/data
在磁盘尚未挂载时,不建议向该目录写入业务数据,否则挂载后这些文件会被挂载的文件系统暂时遮蔽。
5. 配置开机自动挂载
5.1 备份原配置
修改 /etc/fstab 前先创建备份:
sudo cp -a /etc/fstab /etc/fstab.codex-backup
5.2 添加挂载配置
在 /etc/fstab 中增加以下一行:
UUID=ef67fa03-7e38-41b4-9bac-16ea48aad9a0 /mnt/data ext4 defaults,nofail 0 2
各字段含义如下:
| 字段 | 含义 |
|---|---|
UUID=... | 使用文件系统 UUID 定位分区 |
/mnt/data | 挂载目录 |
ext4 | 文件系统类型 |
defaults,nofail | 使用默认参数;磁盘缺失时不阻塞启动 |
0 | 不使用传统 dump 备份 |
2 | 启动时进行文件系统检查,顺序位于根文件系统之后 |
/etc/fstab是系统关键配置文件。UUID、文件系统类型或挂载参数填写错误可能导致挂载失败,因此修改后必须先验证,不能直接依赖重启测试。
6. 挂载并验证
6.1 应用 /etc/fstab
sudo mount -a
如果命令没有报错,说明配置可以正常执行。
6.2 校验配置
findmnt --verify --verbose
本次验证结果为:
0 parse errors, 0 errors
6.3 检查挂载状态
findmnt /mnt/data --output TARGET,SOURCE,FSTYPE,OPTIONS
df -hT /mnt/data
本次挂载结果为:
TARGET SOURCE FSTYPE OPTIONS
/mnt/data /dev/vdb1 ext4 rw,relatime
容量检查结果约为:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vdb1 ext4 295G 65M 280G 1% /mnt/data
标称 300 GB 的磁盘在系统中显示约 295 GB 属于正常现象,与容量单位换算及文件系统元数据占用有关。
7. 配置目录权限
磁盘挂载成功后,其根目录最初不一定属于业务用户。本次将挂载根目录的属主设置为 ubuntu:
sudo chown ubuntu:ubuntu /mnt/data
该命令只修改 /mnt/data 根节点的属主,不递归修改磁盘内已有文件。
验证普通用户是否可写:
touch /mnt/data/.write-test
rm /mnt/data/.write-test
查看最终权限:
ls -ld /mnt/data
本次结果为:
drwxr-xr-x ubuntu ubuntu /mnt/data
8. 最终配置
本次系统的 /etc/fstab 内容如下:
LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1
LABEL=UEFI /boot/efi vfat umask=0077 0 1
UUID=ef67fa03-7e38-41b4-9bac-16ea48aad9a0 /mnt/data ext4 defaults,nofail 0 2
9. 重启后检查
系统重启后,可使用以下命令确认自动挂载是否生效:
findmnt /mnt/data
df -hT /mnt/data
如果输出显示来源为 /dev/vdb1、文件系统为 ext4,即表示开机自动挂载正常。
10. 卸载与回滚
10.1 临时卸载
确保没有进程正在使用该目录,然后执行:
sudo umount /mnt/data
如果提示目标忙,可检查占用进程:
sudo fuser -vm /mnt/data
10.2 取消开机自动挂载
从 /etc/fstab 删除或注释下面这一行:
UUID=ef67fa03-7e38-41b4-9bac-16ea48aad9a0 /mnt/data ext4 defaults,nofail 0 2
然后重新校验:
findmnt --verify --verbose
10.3 使用备份恢复
本次修改前的备份文件为 /etc/fstab.codex-backup。如需整体恢复:
sudo cp -a /etc/fstab.codex-backup /etc/fstab
sudo mount -a
findmnt --verify --verbose
恢复前应先检查备份内容,避免覆盖之后由管理员新增的其他有效配置。
11. 常见问题
11.1 mount -a 提示 UUID 不存在
重新检查实际 UUID:
sudo blkid
确认 /etc/fstab 中没有拼写错误,并确认磁盘已正确连接。
11.2 挂载成功但普通用户无法写入
检查目录属主和权限:
ls -ld /mnt/data
如该数据盘应由 ubuntu 用户独占使用,可执行:
sudo chown ubuntu:ubuntu /mnt/data
多人共享场景应使用专用用户组和组权限,不建议直接设置 chmod 777。
11.3 为什么不直接使用 /dev/vdb1
/dev/vdb1 取决于系统识别磁盘的顺序,在增加、移除或调整磁盘后可能发生变化。UUID 与文件系统绑定,作为持久化配置更稳定。
11.4 为什么使用 nofail
该磁盘是额外数据盘而非根文件系统。加入 nofail 后,即使磁盘临时不存在,系统仍可以完成启动。但依赖该数据盘的应用仍应单独检查挂载状态后再启动。
12. 操作总结
本方案完成了以下工作:
- 识别新增的 300 GB ext4 分区
/dev/vdb1; - 使用 UUID 建立稳定的持久化挂载配置;
- 将磁盘挂载到
/mnt/data; - 使用
nofail降低数据盘缺失对系统启动的影响; - 通过
mount -a、findmnt和df验证配置; - 将挂载根目录权限交给
ubuntu用户; - 保留
/etc/fstab.codex-backup作为回滚备份。