Filesystems
文件系統已滿 - 但不是
我有一個 Solaris 8 機器,它報告文件系統已滿:
db% tail -2 /var/adm/messages Nov 22 08:32:27 db ufs: [ID 845546 kern.notice] NOTICE: alloc: /u03: file system full Nov 22 08:34:51 db last message repeated 12 times
但是 df 說它沒有用完空閒塊,也沒有用完空閒 inode:
db% df -k /u03 Filesystem kbytes used avail capacity Mounted on /dev/md/dsk/d6 282330903 254957403 24550191 92% /u03 db% df -o i /u03 Filesystem iused ifree %iused Mounted on /dev/md/dsk/d6 29663278 4230866 88% /u03
所以我想也許某些程序正在將打開的文件描述符保存到 20+GB 的已刪除文件。但是 lsof,按大小排序,報告沒有超過 2GB,這是一個合法的文件:
db% lsof /u03 | sort -n +6 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME [...] oracle 1257 oracle 278u VREG 85,6 2097160192 9685782 /u03/oradata/(redacted)/data/foo_tab_14.dbf db%
我會很感激任何指向任何其他資源的指針,它可以保存空閒塊和 inode,它們的耗盡可能會填滿文件系統,或者以其他方式“隱藏”使用的塊/inode,或者任何其他人的想法。重新啟動此框或關閉 oracle 不是有效的調查選項。
編輯:哈立德,當時我不能。我無法發布輸出,因為其中一個 DBA 已經釋放了大約 4GB,這意味著機器可以繼續執行,如果我再次“填充”作為測試,事情就會中斷。但這是 24 小時內第二次達到大約 92% 並“填滿”(例如,無法創建新文件,並
/var/adm/messages
報告“文件系統已滿”),是的,當它發生時肯定中斷該 FS 上文件的創建或擴展。
檢查
nbfree
值fstyp -v | head -18
如果這說明價值不高,我發現的這篇博文可能會對您有所幫助。我引用文章的開頭:
在工作中,我們有一個帶有 UFS 的 Solaris 8,它告訴應用程序它不能創建新文件。df 命令顯示了很多 if free inode,並且 FS 中也有足夠的可用空間。應用程序收到錯誤的原因是,雖然仍有大量空閒片段,但不再有空閒塊可用。您不能僅使用片段創建新文件,每個新文件至少需要一個空閒塊。
要查看 UFS 的空閒塊數,您可以呼叫“fstyp -v | 頭 -18" 並查看“nbfree”背後的價值。