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」の値を確認します。