Linux

掛載到 autofs 掛載的 NFS 導出顯示內容為空

  • June 11, 2011

我使用 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/*

然後我在 /etc/exports 中導出 /mnt/iso:

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

NFS 服務也執行良好。我可以通過 nfs 客戶端從另一台機器掛載 /mnt/iso:

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

我可以在 /mnt/ 文件夾中看到所有 iso 掛載:

# 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-utils-1.2.2.2-2

我認為您在這裡遇到了本末倒置的問題,因為當您使用 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

您甚至無法訪問伺服器上的那個文件 frog,因為它上面安裝了一個不同的東西,但 NFS 正在為該底層提供服務!

**長話短說,**如果您想通過 NFS 導出文件系統,則需要在 NFS 啟動時正確安裝它們並導出它們,並且它們需要保留。導出本身使用 autofs 掛載的文件系統將永遠無法正常工作。您需要永久掛載這些 ISO 才能通過 NFS 導出它們。

引用自:https://serverfault.com/questions/279395