web-dev-qa-db-ja.com

大容量ファイルシステムのe2fsckがエラーで失敗する:メモリ割り当てに失敗しました

2TBの大規模なRAIDアレイでe2fsckを使用しようとしていますが、パーティション化にGPTを使用しています(サイズが原因)。

システムにインストールされているRAMは1GBしかなく、現時点では追加することはできません。

問題は、デバイスでfsckを起動した直後に、次のようなエラーが発生することです。

Error storing directory block information (inode=115343515, block=0, num=108120142): Memory allocation failed
e2fsck: aborted

オンライン検索と調査を少し行った後、私は以下のこの投稿に出くわしました:

大きなファイルシステムでfsckを実行しているメモリが不足しています

MAN e2fsck.confのページを検索した後、アドバイスに従い、基本的に次のような/etc/e2fsck.confファイルを作成しました。

[scratch_files]
directory = /var/cache/e2fsck

/var/cache/e2fsckディレクトリを作成したことを確認した後、fsckを再試行しました。 fsckをもう一度起動して、使用可能なメモリ、CPUの使用状況、および/var/cashe/e2fsckのディレクトリサイズを確認した後、明らかに役立ちましたが、結局同じエラーが発生して失敗しました。基本的に、それはメモリ消費を遅くするのに役立ちましたが、それをすべて一緒に否定することはありませんでした。

そこで、次を使用してe2fsck.confファイルの追加フラグを試してみました。

dirinfo = false 

または

dirinfo = true

そして

icount = false

または

icount = true

しばらくすると同じエラーが発生するため、どちらもあまり効果がないようです。

私は何かが足りませんか? fsckに時間がかかっても大丈夫です...しかし、エラーが発生する代わりに、実際に完了する必要があります。

7
Jason

可能であれば、システムにスワップスペースを追加してください。 fsckにはめちゃくちゃ長い時間がかかりますが、最終的には完了します。次回は、ファイルシステムを細かく切り刻みます。

2
womble
  1. これらのフラグを[scratch_files]セクションに追加しましたか?また、「numdirs_threshold」を使用して、スクラッチファイルの使用を開始するタイミングを制御してみてください。
  2. インストールされているシステム(Centos4など)では、e2fsutilsが古すぎる場合があります。新しいバージョンのカーネルお​​よびファイルシステムutilsを使用してレスキューイメージを起動できます。 e2fsck.confをセットアップし、e2fsckに使用させます。

HTH。

1
AndreasM

アレイは内部ストレージですか、それとも外部ストレージですか?それが外部/接続ストレージの場合は、さらにRAM for the fsckを含む)を別のボックスに接続してみてください。または、セットアップを再分割して、小さなチャンクに分割してください。マウントすることができます単一の「バックアップ」ファイルシステム階層の下にある複数のパーティションクライアントおよびバックアップソフトウェアは、複数または個別のファイルシステムにアクセスしていることを認識する必要はありません。

このストレージがブートプロセスの後半までfsckされない場合は、fsckが完了するまで、貴重なメモリを消費している可能性があるアプリケーションをすべてオフにしてください。

0