有很多页面展示了如何配置系统以自动挂载通过 CIFS 访问的网络共享(fstab
、autofs
、systemd.mount
甚至更多)。但是当服务器没有响应时,它们会失败(至少我对前两个的尝试是这样的)。随着 Kubuntu 17.10 的更新,它甚至会使我的系统在启动时挂起,出现黑屏,系统日志中充满了以下内容:
CIFS VFS: cifs_mount failed w/return code = -113
还有一些:
CIFS VFS: cifs_mount failed w/return code = -111
那么,处理这种设置的推荐方法是什么?
- 在给定的挂载点挂载 CIFS 共享(KDE
smb://
不够) - 为每个用户自动完成所有操作
- 注意当目标不可用时不要发生问题
- 当目标可用时,只需挂载它
背景:目标是我的 NAS,它会进入睡眠状态并在网络流量中唤醒。因此,至少对于第一个请求,它将不可用。
当笔记本电脑在外部网络中启动时,NAS 甚至根本不可用(或者我启动 VPN 连接)
答案1
systemd.mount
我认为您可以使用和来解决这个问题systemd.automount
。这将创建一个按需实现的挂载点,并且不会在启动期间挂起系统。
根据手册页systemd.mount(5):
可选地,挂载单元可以附带一个自动挂载单元,
以允许按需或并行挂载。 请参阅
systemd.automount(5)。
以及来自systemd.自动挂载(5):
以“.automount”结尾的单元配置文件包含由 systemd 控制和监督的文件系统自动挂载点的信息。自动挂载单元可用于实现文件系统的按需挂载以及并行挂载。
为了做到这一点,您必须创建一个systemd.mount
单元文件以及一个systemd.automount
单元文件。
创建接口
首先,创建一个要挂载 CIFS 网络共享的目录:
sudo mkdir /mnt/share
创建systemd.mount
单元文件
接下来,systemd.mount
在 中创建一个单元文件/etc/systemd/system/
。文件名必须包含挂载点名称,并将斜杠替换为“减号”。例如,对于上面创建的挂载点,/mnt/share
创建一个名为 的单元文件mnt-share.mount
。请参阅systemd.mount(5):
Mount units must be named after the mount point directories they control. Example: the mount point /home/lennart must be configured in a unit file home-lennart.mount. For details about the escaping logic used to convert a file system path to a unit name, see systemd.unit(5). Note that mount units cannot be templated, nor is possible to add multiple names to a mount unit by creating symlinks to its unit file.
对于此文件,您需要以下信息:
- NAS 服务器的 IP 地址和目录
- 您的 CIFS 用户名
- 你的密码
- 您的域名
将以下内容添加到/etc/systemd/system/mnt-share.mount
,替换上述值:
[Unit]
Description=cifs mount unit
Requires=network-online.target
After=network-online.service
[Mount]
What=//NAS-IP-Address/directory
Where=/mnt/share
Options=username=YourCIFSUserName,password=YourPassword,workgroup=YourDomain,rw
Type=cifs
[Install]
WantedBy=multi-user.target
请勿启用上述单元。如果您这样做,它会尝试在每次启动时挂起您的网络共享并像以前一样挂起您的系统。
创建systemd.automount
单元文件
接下来创建一个systemd.automount
单元:/etc/systemd/system/mnt-share.automount
。此单元将根据需要systemd.automount
启动该单元。mnt-share.mount
[Unit]
Description=cifs automount unit
[Automount]
Where=/mnt/share
[Install]
WantedBy=multi-user.target
启用并启动本单元:
sudo systemctl daemon-reload
sudo systemctl enable mnt-share.automount
sudo systemctl start mnt-share.automount
启动本单元后,SharePoint 尚未安装,但/etc/mtab
文件将使用新条目进行更新。您可以使用以下命令查看:
$ mount | grep share
systemd-1 on /mnt/share type autofs (...)
最后,浏览到网络共享,它应该自动挂载并列出目录内容:
ls /mnt/share
您还可以检查安装情况:
$ mount | grep share
systemd-1 on /mnt/share type autofs (...)
//NAS-IP-Address/directory on /mnt/share type ext4 (rw,relatime)
答案2
安装
sudo apt-get install cifs-utils
如果尚未完成。
以 sudo 用户身份将一个或多个条目添加到您的/etc/fstab
//YourSambaServer/folder /mnt/share/ cifs username=YourCIFSUserName, password=YourPassword,noauto,_netdev,users 0 0
解释:
- 第一个条目显示 SMB 服务器的 Samba 位置,以及要挂载的文件夹
- 然后是本地设备上的挂载点 - 不一定是 /mnt/..,任何本地文件夹都可以
- 您的 Samba 凭证
- 您需要安装共享或忽略它的标志(如果不存在)
重启后你就可以开始了
多年来我一直在使用这个解决方案,它的好处是通过 cifs 获得更高的传输速率。请注意,使用这些设置,您可以随时挂载您的 samba 文件夹。