報錯 OSError: [Errno 16] Device or resource busy: .nfs00000 和 QSError: AF_UNIX path too long

最近服務器出現空間不夠用後,有同學將整個所有的container全都遷移到了另一個存儲文件的文件服務器上,導致在container的一些操作要都以socket的方式從此文件服務器下載數據。在使用pytorch的DataLoader時,開啓多線程後會報這個錯誤。經過查詢,這個錯誤也會和python使用多線程時一起出現。剛開始報OSError: [Errno 16] Device or resource busy: '.nfs*',如果忽略,到後面會報QSError: AF_UNIX path too long。

這個問題與linux和文件服務器有關,是由於文件服務器是無狀態的,linux在刪除文件時,如果有其它程序在使用這個文件時,會將此文件臨時重命名爲.nfs0000的文件。而將container遷移到文件服務器上時,將臨時目錄/tmp也一起遷移到了文件服務器上,因此臨時緩存的文件也在文件服務器上,而不再我們操作的服務器上,又因爲linux文件服務器是無狀態的,因此會出現這個情況。

因爲沒有root權限,因此找了一個簡單的辦法來解決這個問題------另建一個臨時文件目錄,將臨時文件路徑設置到其上。mkdir -m 1777 /路徑/tmp,創建目錄,並賦予相應權限。

然後設置路徑。此時在運行就不會報錯了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章