在 CentOS/RHEL 7 上重启后未挂载 CIFS 共享文件系统

问题

CentOS/RHEL 7系统重启后CIFS共享文件系统不挂载,重启后手动执行mount -a命令,CIFS文件系统正常挂载

fstab 条目:

# cat /etc/fstab
//192.168.0.10/Oracle /backup/oracle cifs _netdev,noexec,nosuid,vers=3.0,uid=1001,gid=1002,credentials=/root/backup_creds 0 0

demsg 命令输出:

[ 27.052981] Key type cifs.idmap registered
[ 33.053711] CIFS VFS: Error connecting to socket. Aborting operation.
[ 33.054048] CIFS VFS: cifs_mount failed w/return code = -113

/var/log/messages 文件:

Nov 21 15:09:29 * kernel: CIFS VFS: Error connecting to socket. Aborting operation.
Nov 21 15:09:29 * kernel: CIFS VFS: cifs_mount failed w/return code = -113
Nov 21 15:09:29 * mount: Unable to find suitable address.
Nov 21 15:09:29 * systemd: backup-oracle.mount mount process exited, code=exited status=32
Nov 21 15:09:29 * systemd: Failed to mount /backup/oracle.
Nov 21 15:09:29 * systemd: Dependency failed for Remote File Systems.
Nov 21 15:09:29 * systemd: Job remote-fs.target/start failed with result 'dependency'.
Nov 21 15:09:29 * systemd: Unit backup-oracle.mount entered failed state.
www. On IT Road .com

解决方案

引用本地和网络文件系统的挂载单元通过它们的文件系统类型规范来区分。
在某些情况下,这还不够(例如基于网络块设备的挂载,例如 iSCSI),在这种情况下,_netdev 可能会添加到单元的挂载选项字符串中,这会强制 systemd 将挂载单元视为网络挂载。

此外,systemd 支持挂载条目和其他单元之间的显式顺序依赖关系。
有两种方法可以解决此问题:

  1. 将 /etc/fstab 中的 x-systemd.after=network-online.target 添加到挂载选项中:
//192.168.0.10/Oracle /backup/oracle cifs _netdev,x-systemd.after=network-online.target,noexec,nosuid,vers=3.0,uid=1001,gid=1002,credentials=/root/backup_creds 0 0
  1. 在 /etc/systemd/system 中创建自定义 systemd 单元文件,文件格式为 samba.service[Unit] :
# vi /etc/systemd/system
Description=CIFS Mount
Requires=network-online.target
After=network-online.service
Before=samba.service
[Mount]
What=//xxx.xxx.xxx.xxx/path/[mountpoint]
Where=/mnt/path
Options=username=yourusername,pass=yourpassword
Type=cifs
[Install]
WantedBy=multi-user.target
日期:2020-09-17 00:14:21 来源:oir作者:oir