XFSファイルシステムを含む500 GBのディスクがあります(編集:オペレーティングシステムは別のディスクにあります)。このディスクには、元のデータのハードリンクされた複数のコピーの形式のバックアップデータがあります。新しいバックアップを実行するたびに、最も古いバックアップデータを含むディレクトリを削除します。そのrm
プロセスが終了しないことがあります(そしてCPUを大量に消費します)。シャットダウン(-9)しても役に立たず、システムを再起動するだけで役に立ちました。
私はxfs_repair
そのボリュームで実行しようとしました。しかし、RAMが十分ではないようです(マシンには4 GBのRAMがあり、32ビットのみをサポートしています)。
マシンの位置により、ハードドライブに物理的にアクセスすることは困難です。
ファイルシステムを修復またはシャットダウンするにはどうすればよいですかrm
?
編集:xfs_repair -v -t 1 /dev/disk/xxx
私はxfs_repair version 3.1.7
。編集:出力:
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem ...
- agno = 0
failed to create prefetch thread: Resource temporarily unavailable
- agno = 1
failed to create prefetch thread: Resource temporarily unavailable
- agno = 2
failed to create prefetch thread: Resource temporarily unavailable
- agno = 3
failed to create prefetch thread: Resource temporarily unavailable
- agno = 4
failed to create prefetch thread: Resource temporarily unavailable
- agno = 5
failed to create prefetch thread: Resource temporarily unavailable
- agno = 6
failed to create prefetch thread: Resource temporarily unavailable
- agno = 7
fatal error -- calloc failed in dir_hash_init
答え1
どのように動作するかを確認するためにstrace
このプロセスを試しましたか?rm
大量のファイルを削除すると、XFSが非常に遅くなる可能性があります。私は愚かなXFSを使用していましたが、何百万ものファイルをccache
移動するよりも他のすべてのファイルを移動したり、ファイルをフォーマットしたり、ファイルを再移動したりする方がはるかに高速でした。私はその過程をそのままにしておけば結局終わります。rm -r
ccache
の場合、xfs_repair
メモリを大量に使用することを見たことはありませんが、すべてのコンピュータに十分なメモリがあるので...
役に立つ場合は、スワップを追加できます。あるいは、ブロックデバイス(OpenVPNまたはSSHトンネルを介してNBDを使用)を使用可能なRAMをより多くのシステムにエクスポートすることもできます。しかし、これがxfsdump
ファイルシステム全体のイメージを転送するよりも速いか遅いかはわかりません。使用)。xfs_repair
プロセス中に読み書きする必要があるデータの量によって異なります。
答え2
256Mb SGI Indigo 2以降、XFSがメモリの輻輳の可能性をチェックした記憶があります。 2GB以上のファイルにはXFSを使用する必要があります。問題が発生した場合は、そのデータを外部ドライブ(scsi)にバックアップし、そのデータのファイルシステムを再フォーマットして復元します。
もちろん、これは十分なドライブ容量(50ユーロ未満の500 Gb USB 3.0ドライブ)がシステムが同じパーティションにない場合にのみ機能します(あなたの質問でこれは100%明確ではありません)。