挂载到 NFS 导出的 autofs 挂载显示空内容

挂载到 NFS 导出的 autofs 挂载显示空内容

我使用 autofs 在文件夹 /mnt/iso 中挂载一些 iso 文件:

Fedora-13-x86_64-DVD.iso
Fedora-14-x86_64-DVD.iso
Fedora-15-x86_64-DVD.iso

autofs 工作正常,我可以看到 iso 文件的内容:

# ls /mnt/iso/fedora.13/
# ls /mnt/iso/fedora.14/
# ls /mnt/iso/fedora.15/

完成 autofs 测试后,我强制卸载所有 iso 文件夹:

# umount -l /mnt/iso/*

然后我将 /mnt/iso 导出到 /etc/exports:

/mnt/iso        192.168.0.0/24(ro,insecure,crossmnt,all_squash)

NFS 服务也运行良好。我可以通过 nfs 客户端从另一台机器挂载 /mnt/iso:

# mount -t nfs4 <nfs-server>:/mnt/iso /mnt

我可以看到所有 iso 都挂载在 /mnt/ 文件夹中:

# ls /mnt
dr-xr-xr-x 15 nobody nobody 4096 2011-06-11 10:23 .
drwxr-xr-x 24 root   root   4096 2011-02-08 08:45 ..
drwxr-sr-x  7 nobody nobody 4096 2010-05-13 09:06 fedora.13
drwxr-sr-x  7 nobody nobody 4096 2010-10-22 02:32 fedora.14
drwxrwsr-x  7 nobody nobody 4096 2011-05-14 03:50 fedora.15

但是,当我尝试列出每个文件夹的内容时:

#  ls /mnt/fedora.13

屏幕上未显示任何内容。使用如下命令

#  ls /mnt/fedora.13/*

迅速的

ls: cannot access /mnt/fedora.13/*: No such file or directory

我成功列出 nfs 客户端计算机中 iso 文件夹内容的唯一情况是使用以下步骤:

从客户端机器卸载 nfs 共享:

# umount /mnt

使用 ls 显示 nfs 服务器中 /mnt/iso 的所有子树:

# ls /mnt/iso/*

autofs 将自动挂载所有 iso 文件。

在客户端机器上挂载 nfs 文件夹:

# mount -t nfs4 <nfs-server>:/mnt/iso /mnt

列出 /mnt 的子树:

# ls /mnt/*

然后您就可以看到 nfs 客户端机器中的所有内容。

但是,这违背了 autofs 的目的,因为我需要先在 autofs 机器中显示一次内容。

有人有什么想法吗?我正在使用以下内容:

  1. Fedora 13 x86_64
  2. autofs-5.0.5-28
  3. nfs-实用程序-1.2.2.2-2

答案1

我认为您遇到了本末倒置的问题,因为当您使用 NFS 导出文件系统时,它会锁定到源目录。您当时甚至没有可用的源目录,只是稍后通过挂载将内容放在那里。

这是行不通的,因为一旦你给予 NFS 某个要共享的东西的句柄,它就会一直共享那个东西,即使它最终位于挂载层之下。

假设你设置了一个包含文件“frog”的目录,并使用 nfs 将其导出:

[server] $ mkdir /mnt/test && touch /mnt/test/frog
[server] $ echo '/mnt/test *(ro)' >> /etc/exports
[server] $ exportfs -a

然后你把它挂载到某个客户端上,你将会看见预期的文件 frog:

[client] $ mkdir /mnt/test
[client] $ mount -t nfs server:/mnt/test /mnt/test
[client] $ ls $/mnt/test
frog

现在假设您在服务器上的该文件夹上安装了其他内容:

[server] $ mkdir /mnt/test2 && touch /mnt/test2/fish
[server] $ mount -o bind /mnt/test2 /mnt/test
[server] $ ls /mnt/test
fish

太棒了。但是 nfs 提供什么服务呢?

[client] $ ls /mnt/test
frog

您甚至无法访问服务器上的那个文件青蛙,因为它上面安装了不同的东西,但 NFS 正在提供该底层的服务!

使长话短说,如果您想通过 NFS 导出文件系统,则需要在 NFS 启动并导出时正确挂载它们,并且它们需要保留下来。导出使用 autofs 挂载的文件系统永远不会正常工作。您需要永久挂载这些 ISO 才能通过 NFS 导出它们。

相关内容