fstab 中的 dns cifs 共享条目在 IP 更改时未重新安装,而由 smbd 使用

fstab 中的 dns cifs 共享条目在 IP 更改时未重新安装,而由 smbd 使用

我在我的 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 -aHost is downsmbd

这可能不是理想的,但可以完成工作。

相关内容