在很多生产服务器上,我们会让 Linux 服务器挂载网络磁盘以便同步或备份数据。但如果配置不当,有可能出现掉电后重启失败的情况,而这一般是因为网络磁盘挂载失败导致的。
这种情况,只能先进入单用户模式,修改 /etc/fstab
文件来注释掉挂载网络磁盘的条目。如果单用户模式下根目录为只读,需要执行 mount -o remount,rw /
来赋予写权限。这样再重启就能正常进入系统了。
进入系统后,我们需要重新挂载网络磁盘,这里是针对 iscsi 磁盘挂载的全过程:
iSCSI 挂载
- 安装 iscsi 相关服务并设置开机启动
yum install -y iscsi-initiator-utils
systemctl enable iscsi
systemctl enable iscsid
systemctl start iscsi
systemctl start iscsid
- 登录到 iscsi 服务器指定设备上并设置自动连接
# 发现目标
iscsiadm -m discovery -t sendtargets -p 10.0.0.2
# 登录
iscsiadm -m node -T iqn.1991-05.com.microsoft:dfq6bpr2-test-target -p 10.0.0.2 --login
# 设置自动挂载
iscsiadm -m node -T iqn.1991-05.com.microsoft:dfq6bpr2-test-target -p 10.0.0.2 -o update -n node.startup -v automatic
# 查看连接
iscsiadm -m session
此时用 lsblk
可以看到本地一家添加了一个新设备(如 /dev/sdb
),用如下命令分区和创建文件系统(如果是之前已经挂载过的,就不需要重新分区了)
parted /dev/sdb
(parted) mkpart xfs 0% 100%
mkfs.xfs /dev/sdb1
- 查看 iscsi 硬盘的 UUID 并设置开机自动挂载
blkid /dev/sda
/dev/sda: UUID="09c3a7af-4fa3-49b3-aabb-b8ecc416601d" TYPE="ext4"
编辑 /etc/fstab
文件,加入如下内容,注意 _netdev
选项确保此磁盘挂载需要在网络模块启动完成后才执行
UUID=09c3a7af-4fa3-49b3-aabb-b8ecc416601d /data ext4 defaults,_netdev 0 0
- 运行
mount -a
就可以直接将前面的修改生效了。
其它类型网络磁盘挂载
samba / CIFS 磁盘
一般 /etc/fstab
应该这么写:
//10.0.0.3/TEST /mnt/ad cifs username=test,password=test.2023,_netdev 0 0
或者把用户名和密码放到单独的 credentials 文件里
/etc/fstab
里这么写
//10.0.0.4/mirrors/nexus-data /mnt/nexus cifs ro,uid=nexus,gid=nexus,credentials=/etc/samba/credentials_nexus,_netdev 0 0
/etc/samba/credentials_nexus
这么写:
username=test
password=Passord9981
NFS 磁盘
/etc/fstab
这样写:
10.0.0.5:/mnt/test_ro /mnt/nfs_test_ro nfs ro,nolock,vers=3,_netdev 0 0
10.0.0.5:/mnt/test_rw /mnt/nfs_test_rw nfs rw,nolock,vers=3,_netdev 0 0