Linux

在 NFSv4 共享上提取 tar 時出現“無法關閉:輸入/輸出錯誤”

  • October 16, 2017

在 NFS 共享上提取 tar 檔案時,我一直試圖找出一個奇怪的錯誤。

提取 tar 文件時會出現錯誤,這些文件包含已存檔但未在存檔文件上設置寫權限的文件。

間歇性地列印錯誤消息,如下所示:

tar: test/doc/manpages/man1/Makefile.in: Cannot close: Input/output error

為了確認這種行為,我設置了兩個相同的 tar 文件:一個歸檔文件設置為chmod權限 575(使用者讀/執行),一個chmod權限設置為 755(使用者讀/寫/執行)。

兩個 tar 文件歸檔如下:

tar czf test.tgz test

並提取如下:

tar -xvzf test.tgz

在本地文件系統上提取兩個檔案時,我沒有收到任何錯誤。此外,在 NFS 共享上使用使用者寫入提取存檔時,我沒有收到任何錯誤。在將存檔集提取到 NFS 共享上時,總是會發生錯誤,而沒有使用者對存檔文件的寫入權限。

NFS 共享配置有以下導出參數:

/media/share 10.0.0.3(rw,sync,no_subtree_check,no_root_squash)

NFS 掛載的客戶端 fstab 條目如下:

10.0.0.3:/media/share /media/share nfs4 rw,_netdev,auto,clientaddr=10.0.0.10 0 0

客戶端和伺服器都執行 Ubuntu 14.04.1

nfs-common客戶端和伺服器上的版本都是,伺服器上v1:1.2.8-6ubuntu1.2nfs-kernel-server包也是v1:1.2.8-6ubuntu1.2

任何幫助將不勝感激,因為我想深入了解導致這些錯誤的原因。

經過多次故障排除後,在我的情況下,這些錯誤似乎與clientaddr我們某些客戶端電腦上 fstab 條目中的掛載選項設置為錯誤的 IP 地址有關。通過每個主機,確保所有clientaddr值都正確並重新安裝卷後,我能夠提取兩個檔案,如前所述,沒有任何錯誤。

應該注意的是,NFS 手冊頁特別提到了clientaddr掛載選項:

如果伺服器無法與客戶端建立回調連接,性能可能會下降,或者對文件的訪問可能會暫時掛起。

因此,我懷疑我看到的問題與伺服器無法與配置了錯誤客戶端回調地址的客戶端建立回調連接有關。

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