我在我的 ubuntu 上设置了 CIFS 共享
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
使用 fstab 条目:
//mystr.myserver.com/backup /mnt/mystr cifs iocharset=utf8,rw,_netdev,credentials=/etc/smb/mystr-credentials,uid=someuser,gid=0,file_mode=0660,dir_mode=0770 0 0
其工作符合预期。
现在我确实正在smbd
运行以通过此部分向我的 LAN 上的用户提供此共享/etc/samba/smb.conf
[mystr]
path = /mnt/mystr
public = yes
writeable = yes
browsable = yes
guest ok = yes
force user = someuser
它也运行良好。
但是如果条目的 IP 地址发生变化,似乎会出现问题mystr.myserver.com
。共享"Host is down."
显示mount
过时的 IP 地址。
由于这种情况不常发生,因此不容易重现。今天早上我想手动修复它,并尝试先卸载它,但结果却让我失望,Resource is busy
因为我认为该smbd
进程阻止了共享。
停止该smbd
进程,卸载共享,使用mount -a
并重新启动smbd
即可解决问题。
所以我的问题是:这可以自动完成吗?fstab
如果共享已关闭,我可以告诉它强制重新安装吗?这甚至与smbd
拥有目录句柄有关吗?我检查了lsof
,但找不到任何相关内容。我可以告诉 samba “放开”无法访问的目录吗?
提前感谢任何想法/建议。
答案1
遗憾的是,我找不到自动执行此操作的方法,因此我编写了一个脚本并将其添加到crontab
现在每分钟运行一次。
#!/bin/bash
for d in $(find /mnt/ -maxdepth 1 -mindepth 1 -type d); do
if [[ "$d" == *"Host is down"* ]]; then
$(systemctl stop smbd)
$(umount -a -t cifs -l)
$(mount -a)
$(systemctl start smbd)
fi
done
我正在unmount
为每个CIFS
存储使用,一旦脚本检测到带有消息的脱机安装,remount
它们就会使用。也许停止是不必要的,但不应该在这里引起任何问题。mount -a
Host is down
smbd
这可能不是理想的,但可以完成工作。