我使用 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 机器中显示一次内容。
有人有什么想法吗?我正在使用以下内容:
- Fedora 13 x86_64
- autofs-5.0.5-28
- 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 导出它们。