系统 PVE, 给 jellyfin 的 LXC 容器里用 fstab 挂载了 smb 共享.
问题是经常断连, 出现 Resource temporarily unavailable 的问题.
排查后发现是 pve 用 snapshot 模式备份的时候, 会 freeze 那个提供 smb 共享的 vm, 此时 LXC 无法访问 smb 共享, 等到备份完成后, 也不会自动重连.
而且最近又因为 ISP 突然断网导致同样的症状出现, 为了不用每次都手动 umount mount, 决定解决这个问题.
试过几个解决方案
最后采用的办法就是 systemd 自己写 mount file 比如要挂载 //10.10.10.1/media 到 /media 下 先写 unit file:
nano /etc/systemd/system/media.mount
[Unit]
Description=samba mount media
Requires=network-online.target
After=network-online.service
[Mount]
What=//10.10.10.1/media
Where=/media
Options=vers=3.1.1,credentials=/home/.smbcred,file_mode=0777,dir_mode=0777,iocharset=utf8
Type=cifs
[Install]
WantedBy=multi-user.target
ver 可以不用写, 默认是 3.0 我这里写 3.1.1 是因为 smb 服务器用的最新的 winserver 2022, 想用几个新的功能. 用户名密码我放到 /home/.smbcred 里给了 600 权限. 共享文件权限直接给了 777, 反正都是影音文件不是很重要, 大家可以根据自己的需要去调整.
还有如果你要挂载到 /mnt/abc_def 之类的目录下, unit file 名称里路径的 /要用-代替, 比如 /etc/systemd/system/mnt-abc_def.mount
然后启用并且运行这个服务就可以了
systemctl enable media.mount
systemctl start media.mount
测试过无论是 snapshot 备份, 还是直接关闭 smb 服务器再重开, 或者断开网络连接再重新连接, 挂载的 smb 共享文件夹都可以正常断线重连了.
VM 里用 fstab 挂载不会出现这个问题, 只有 LXC 容器会出现这个问题, 可能是跟一些安全机制有关吧.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.