内容来自DeepSeek:
/etc/fstab(File System Table)是 Linux 系统中用于定义 磁盘分区、挂载点、文件系统类型及挂载选项 的配置文件。系统启动时会读取此文件,并自动挂载其中列出的设备或共享存储(如 NFS、VMware 共享文件夹等)。
1. /etc/fstab 文件格式
每行定义一个挂载项,共 6 个字段,用空格或制表符分隔,格式如下:
<设备/UUID/LABEL> <挂载点> <文件系统类型> <挂载选项> <dump备份> <fsck检查顺序>
字段详解
| 字段 | 说明 | 示例 |
|---|---|---|
| 1. 设备标识 | 可以是设备路径(/dev/sda1)、UUID(UUID=xxxx)、LABEL(LABEL=DATA)或网络存储(server:/path) |
/dev/sda1UUID=3a9b....host:/vm_share |
| 2. 挂载点 | 文件系统的挂载目录(需提前创建) | /mnt/data/home |
| 3. 文件系统类型 | 文件系统格式,如 ext4、xfs、ntfs、nfs、fuse.vmhgfs-fuse |
ext4fuse.vmhgfs-fuse |
| 4. 挂载选项 | 控制挂载行为的选项,多个选项用逗号分隔 | defaultsrw,noatime,nofail |
| 5. dump备份 | 是否被 dump 工具备份(0=不备份,1=备份) |
0 |
| 6. fsck检查顺序 | 启动时 fsck 检查顺序(0=不检查,1=根分区优先,2=其他) |
01 |
2. 常见挂载选项(第4字段)
| 选项 | 说明 |
|---|---|
defaults |
默认选项(rw,suid,dev,exec,auto,nouser,async) |
rw / ro |
读写 / 只读 |
noatime |
不更新文件访问时间,提升性能 |
nofail |
设备不存在时忽略错误(防止启动卡住) |
user |
允许普通用户挂载 |
allow_other |
允许非 root 用户访问(FUSE 文件系统常用) |
3. /etc/fstab 运行逻辑
-
系统启动时
-
systemd或init进程调用mount -a,读取/etc/fstab并挂载所有条目。 -
如果某条目挂载失败(如设备不存在),可能导致系统 启动卡住(除非使用
nofail选项)。
-
-
手动挂载/卸载
-
手动挂载:
mount <挂载点>(依赖/etc/fstab配置)。 -
手动卸载:
umount <挂载点>。
-
-
修改后生效
-
修改
/etc/fstab后,无需重启,直接运行:sudo mount -a # 重新挂载所有条目
-
4. 示例配置
(1) 普通磁盘分区
UUID=3a9b... /mnt/data ext4 defaults 0 2
(2) VMware 共享文件夹
.host:/ /mnt/share fuse.vmhgfs-fuse defaults,allow_other 0 0
(3) NFS 网络存储
192.168.1.10:/data /mnt/nfs nfs rw,soft,timeo=30 0 0
(4) 防止启动卡住(nofail)
/dev/sdb1 /mnt/disk xfs defaults,nofail 0 2
5. 常见问题排查
Q1: 修改 /etc/fstab 后系统无法启动?
-
原因:某条目挂载失败(如设备不存在)。
-
解决:
-
重启进入 单用户模式(
emergency shell)。 -
注释掉错误的
/etc/fstab行。 -
重启后检查日志:
journalctl -xe # 或查看 /var/log/messages
-
Q2: 如何查看 UUID 或 LABEL?
blkid # 列出所有设备的 UUID 和文件系统类型
lsblk -f # 显示设备树及文件系统信息
tune2fs -l /dev/sda1 | grep UUID # 查看 ext4 分区的 UUID
Q3: 挂载选项不生效?
-
检查是否拼写错误,例如
default❌ →defaults✔️。 -
使用
mount -o remount <挂载点>重新挂载。
总结
| 关键点 | 说明 |
|---|---|
| 格式 | 6 个字段:设备、挂载点、文件系统类型、选项、dump、fsck |
| 生效方式 | mount -a 或重启 |
| 防启动失败 | 使用 nofail 选项 |
| 调试命令 | mount、blkid、journalctl |
正确配置 /etc/fstab 可以确保存储设备 自动挂载,避免手动操作,提高系统可靠性。
