0%

Linux网络共享在fstab延迟挂载

我在家里的NAS上分配了2TB的空间,通过ISCSI共享给服务器。

对于挂载ISCSI的服务器来说,挂载ISCSI后,可以直接用fdisk -l命令看到对应的硬盘设备。

为了能实现开机自动挂载,我编辑了 /etc/fstab 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
magicdian@zhcompileserver:~$ sudo cat /etc/fstab 
[sudo] password for magicdian:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-Q2UiWel0wunoQyub2ijKkOmpVyLlK0aqX0ltf812HbdJVUKoRiaVufTE9bNDHeZ3 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/41e8a6f9-54ac-4dd3-aa1d-537fb6360f87 /boot ext4 defaults 0 1
# /boot/efi was on /dev/sda1 during curtin installation
/dev/disk/by-uuid/41A5-5FA8 /boot/efi vfat defaults 0 1
/swap.img none swap sw 0 0
/dev/sdb /home/magicdian/magicdata ext4 defaults 0 0

但是我发现重启开机的时候,提示一直在尝试挂载/dev/sdb,最后因为启动超时进入救援模式了。

梳理一下后了解到,/etc/fstab在开机比较前的阶段挂载,这个阶段我系统的网络还没起来,ISCSI也没有成功建立连接,于是系统重没有/dev/sdb设备块,但进行挂载的时候因为没有这个设备块,又一直阻塞后面的启动流程,于是启动就卡住了。

解决方案就是让/dev/sdb这个设备晚一点再挂载,最好是在网络配置完成之后,于是在谷歌上学习到可以添加一个挂载配置实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-Q2UiWel0wunoQyub2ijKkOmpVyLlK0aqX0ltf812HbdJVUKoRiaVufTE9bNDHeZ3 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/41e8a6f9-54ac-4dd3-aa1d-537fb6360f87 /boot ext4 defaults 0 1
# /boot/efi was on /dev/sda1 during curtin installation
/dev/disk/by-uuid/41A5-5FA8 /boot/efi vfat defaults 0 1
/swap.img none swap sw 0 0
/dev/sdb /home/magicdian/magicdata ext4 defaults,_netdev 0 0

最终fstab如上所示,相比最初多了一个_netdev字段,表明当前挂载的设备依赖网络。配置了这个字段后,系统会在确保网络可用后再尝试挂载,这样就解决了之前自动挂载时的冲突死锁问题。