Filesystems

文件系統已滿 - 但不是

  • May 19, 2015

我有一個 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”背後的價值。

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