ファイルシステムがいっぱいです - ただし、そうではありません

ファイルシステムがいっぱいです - ただし、そうではありません

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 でサイズ順に並べ替えると、2 GB を超えるものは何も報告されず、それは正当なファイルです。

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%

使い果たすとファイル システムがいっぱいになる可能性のある空きブロックと i ノードを除く他のリソースへのポインタ、または使用済みのブロック/i ノードを「隠す」他の方法、または他のアイデアがあれば教えてください。このボックスを再起動したり、Oracle をシャットダウンしたりすることは、有効な調査オプションではありません。

編集: Khaled、その時はできませんでした。DBA の 1 人が約 4GB を解放したため、マシンは引き続き機能できますが、テストとして再度「いっぱいにする」と、状況が悪化するため、出力を投稿できません。しかし、24 時間で約 92% 使用されて「いっぱいになった」(つまり、新しいファイルを作成できず、/var/adm/messages「ファイル システムがいっぱいです」と報告される) のは今回が 2 回目です。そして、確かに、これが発生すると、その FS でのファイルの作成または拡張は確実に中断されます。

答え1

nbfree値を確認する

fstyp -v | head -18

もしそれが低い価値を示しているなら、私が見つけたこのブログ記事役に立つかもしれません。投稿の冒頭を引用します。

職場には、UFS を搭載した Solaris 8 があり、アプリケーションに新しいファイルを作成できないと通知しました。df コマンドでは、空き inode が十分にあり、FS にも十分な空き領域があることが示されました。アプリケーションがエラーを受け取った理由は、空きフラグメントはまだ十分にあるものの、空きブロックがなくなったためです。フラグメントのみで新しいファイルを作成することはできません。新しいファイルごとに少なくとも 1 つの空きブロックが必要です。

UFS の空きブロック数を確認するには、「fstyp -v | head -18」を呼び出して、「nbfree」の値を確認します。

関連情報