私は職場でxfsファイルシステムを使用して画像処理データを保存します。現在の空きスペースは約8.8T程度である。
/dev/sdh1 106T 97T 8.8T 92%
一部のデータをテープに移動してスペースを確保する予定がありますが、来週まではそうはなりません。現在、「デバイスに残りのスペースがありません」エラーが発生し続けます。
転送される一般的な画像サイズは約128mbであり、1時間あたりに転送される画像の数は約100〜500個です。
この〜8TBの空き容量を使用できなくするファイルシステムに固有のものはありますか?
fallocate
私の場合、このコマンドを使用して、最低8TBのスペースを使用してTB程度の非常に大きなファイルを生成できることを確認できました。
私は何を見逃していますか?私が実行する必要がある確かなファイルシステムレベルのチェックはありますか?
xfs_info
以下は、参照用ファイルシステムコマンドの出力です。
meta-data=/dev/sdh1 isize=256 agcount=106, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=28319810304, imaxpct=1
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
同じエラーを再現するために、多数のファイル(10k)、小さなファイル(サイズ1M)を生成する単純なシェルスクリプトを作成しましたが、次のエラーで失敗します。
fallocate: temfile-7464: open failed: No space left on device
df -i
スクリプトを実行する前の出力です。
/dev/sdh1 4531169600 648793 4530520807 1% /jumbo/K2LEGINON
〜の後
/dev/sdh1 4531169600 656256 4530513344 1% /jumbo/K2LEGINON
約7500個のファイルを作成した後に失敗しました。合計約7.3G。
答え1
コメントの回答のおかげで、問題がXFSファイルシステムに関連する問題であることがわかりました。
本質的に、ファイルシステムは、inodeの生成に使用可能なすべてのスペースを使用しました。 XFSファイルシステムは、これを実行するためにディスクの最初のテラバイトを使用しているようです。
答え2
inode64をすでに実行しているファイルシステムの場合、ファイルシステムにディスク容量が足りないか不足しているか、他のinodeに4つの連続ブロックを割り当てることができない場合、このエラーが発生する可能性があります。したがって、ファイルシステムがひどく断片化されている場合(1〜3個のブロックのみがあることを意味)、新しいファイルを作成することはできませんが、古いファイルに追加のデータを書き込むことができます。
空き領域がどのくらい断片化されているかを識別する方法の詳細については、「TID 7014320 - XFSファイルシステムで断片化された空き領域がどれだけあるかを確認する方法」を参照してください。
ファイルシステムが重大に断片化されている場合は、次のことができます。大量の空き容量(20%以上)を追加します。データを別のファイルシステムに移動してから再コピーします。これにより、ファイル間の空きブロックが削除され、連続して作成されます。これは、4,096バイト以下のファイルを格納するファイルシステムで最も便利です。