系统 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 容器会出现这个问题, 可能是跟一些安全机制有关吧.
1
ltkun 2023-03-17 06:04:36 +08:00 via Android
备份没那么勤快 lxc 一般直接 bind mount 宿主机的目录 设置为不备份
|