Featured image of post 使用fstab实现linux开机自动挂载磁盘

使用fstab实现linux开机自动挂载磁盘

使用 mount 挂载磁盘在设备重启后一般会失效,这里我们使用 fstab 来实现磁盘的持续化挂载。

查看挂载文件

$ sudo cat /etc/fstab
UUID=<UUID> 设备名 <文件系统类型> 挂载选项 是否备份 挂载顺序

在 fstab 文件中,每行描述一个文件系统的挂载信息,由六个字段组成,它们分别是:

  1. 文件系统的 UUID 或设备文件名,UUID 可以通过 blkid 获得,设备名一般是 /dev/sdb 。推荐使用 UUID,因为设备名称可能会随着插槽的变化而变化
  2. 挂载点目录,指定磁盘挂载的目录,需要事先创建
  3. 文件系统类型,根据磁盘选项选择类型,如 ext4,ntfs
  4. 挂载选项,一般默认为 defaults
  5. 是否备份,可选值为 0,1,2。其中 0 表示该文件系统是不进行 dump 备份,1 表示需要,2 表示不定时间进行 dump 操作
  6. 是否检验扇区,可选值为 0,1 或 2。0 表示不进行检验,1 表示最先进行检验 (一般系统目录使用,2 表示 1 级别完成后进行检验。

UUID 的获取

UUID (Universally Unique IDentifiers)是设备或者分区格式化后生成的一个唯一标识符,不会因为插人的接口不同而发生变化。可以使用 blkid 获得:

$ blkid
/dev/sdb1: UUID="83cc0f90-2508-4e6b-9771-4d1b9a69b2b9" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a0e8de73-01"
/dev/sdb2: BLOCK_SIZE="512" UUID="7EF6505DF65017AB" TYPE="ntfs" PARTUUID="a0e8de73-02"

# 知道设备名后也可以直接指定设备名
$ blkid /dev/sdb1

修改 fstab

$ sudo vim /etc/fstab
# 挂载 uuid为 83开头 ext4 格式的磁盘到 /mnt/linux 目录,使用默认配置,不进行备份,不检查完整性
UUID=83cc0f90-2508-4e6b-9771-4d1b9a69b2b9 mnt/linux ext4 defaults 0 0

最后使系统重新加载 fstab 文件并尝试挂载所有磁盘:

sudo systemctl daemon-reload
sudo mount -a

使磁盘无法挂载仍然正常启动

Linux 在启动时会逐个挂载 fstab 中的设备,如果挂载了一个移动硬盘,但在启动时被拔出,这时启动 Linux 是会失败的。

可以使用 nofail 选项在 fstab 文件中为磁盘分区添加一个非关键性标志,以确保当磁盘无法挂载时,系统仍然可以正常启动。

UUID=d2014c5a-bb31-4c0b-94c9-f37a54222f62 /mnt/tf128 ext4 defaults,nofail 0 0

Linux 挂载 ntfs 磁盘

在 Linux 下挂载 ntfs 磁盘需要安装 ntfs-3g 软件包

sudo apt install ntfs-3g

fstab 的设置:

# 挂载 UUID 7EF 开头的 ntfs 磁盘到 /mnt/win 目录,不备份,不进行开机校验,添加非关键标识
UUID=7EF6505DF65017AB mnt/win ntfs defaults,nofail 0 0

Linux 下挂载 ntfs 磁盘,所有权为 root 用户但普通用户也可以读写

在 linux 下挂载 ntfs 磁盘默认是只能使用 root 用户才能进行写操作的,可以在挂载选项中设置 dmask 和 fmask 使普通用户可读写。

UUID=7EF6505DF65017AB mnt/win ntfs defaults,dmask=133,fmask=022,nofail 0 0

dmak 描述文件的权限,这里为 777-133,也就是 644 fmask 描述目录的权限,这里为 777-022,也就是 755

ntfs3 挂载选项参数

  • uid 指定 ntfs 分区文件和目录的拥有者 (通过 id 获得
  • gid 指定 ntfs 分区文件和目录的用户组 (通过 id 获得
  • umask 同时指定文件和目录的权限
  • fmask 指定文件的权限
  • dmask 指定目录的权限
  • locale 设置字符集

参考: https://outmanzzq.github.io/2018/08/30/automount-by-fstab/ https://cnzhx.net/blog/linux-auto-mount-ntfs-as-writable