我在网络上有一台台式机和一台笔记本电脑。每台电脑的 fstab 都在另一台电脑上挂载了 NFS 共享,因此我可以访问其中任意一台电脑上的文件。如果台式机先启动,然后我打开笔记本电脑,笔记本电脑就会挂载台式机上的共享。但台式机显然不会挂载笔记本电脑上的共享,因为台式机启动时笔记本电脑还没有开机。或者反之亦然,这取决于哪台电脑先启动。所以每天我都必须sudo mount -a
打开先启动的那台电脑,也就是没有挂载共享的那台电脑。有没有办法让一台电脑看到另一台电脑连上网络并挂载共享?还是我必须继续手动挂载其中一台电脑?
答案1
关于根据网络状态运行脚本的一个问题这颗小宝石
1. 简介
autofs 是一个根据需要自动挂载目录的程序。自动挂载仅在访问时挂载,并在一段时间不活动后卸载。因此,与通过 fstab 进行静态挂载相比,自动挂载 NFS/Samba 共享可节省带宽并提供更好的整体性能。
sudo apt-get install autofs
4.1. 编辑 /etc/auto.master
以下步骤在 /nfs 创建一个挂载点,并根据 /etc/auto.nfs 中指定的设置(我们将在下一步中创建)对其进行配置。
在终端中输入以下内容:
sudo nano /etc/auto.master
在 /etc/auto.master 末尾添加以下行:
/nfs /etc/auto.nfs
4.2. 创建 /etc/auto.nfs
现在我们将创建包含自动挂载程序映射的文件:
$ sudo nano /etc/auto.nfs
此文件应为每个 NFS 共享包含单独的一行。行的格式为 {mount point} [{mount options}] {location}。如果您之前已在 /etc/fstab 中配置静态挂载,则参考这些配置可能会有所帮助。请记住,此处指定的挂载点将相对于 /etc/auto.master 中给出的挂载点。
以下行适用于使用旧版本 NFS(版本 4 之前)的共享:
server server:/
这将在 /nfs/server/ 创建一个新的挂载点,并挂载主机名是 server 的机器导出的 NFS 根目录。
4.2.1. NFSv4
如果您的 NFS 共享使用 NFSv4,则需要将此情况告知 autofs。在这种情况下,上述行将显示如下内容:
server -fstype=nfs4 server:/
客户端需要对 /etc/default/nfs-common 进行相同的更改才能连接到 NFSv4 服务器。
In /etc/default/nfs-common we set: NEED_IDMAPD=yes NEED_GSSD=no # no is default
4.3. 卸载静态挂载并编辑 /etc/fstab
如果您之前已将 NFS 共享配置为静态挂载,那么现在是时候卸载它们了。
$ sudo umount /server
接下来,删除(或注释掉)/etc/fstab 中的相应条目。
#server:/ /server/ nfs defaults 0 0
4.4. 重新加载 /etc/init.d/autofs
输入更改后,运行以下命令重新加载 autofs:
$ sudo reload autofs
如果在旧版 Ubuntu 上工作,并且该方法不起作用,请尝试:
$ sudo /etc/init.d/autofs reload
如果在 Natty 中工作,并且不起作用,请尝试:
$ sudo /etc/init.d/autofs restart
4.5. 确保它能正常工作
为了访问共享并验证它是否正常工作,请在 shell 中输入以下内容:
$ ls /nfs/server
如果您看到 NFS 共享已列出,恭喜您!您已通过 autofs 成功挂载 NFS!如果您想了解更多高级信息,请继续阅读。