badblocksは開始/終了値として32ビット整数のみを使用します。

badblocksは開始/終了値として32ビット整数のみを使用します。

ブロックサイズが4096バイトの4TBドライブがあります。不良セクタについては、ブロック700,000,000の周りの非常に具体的なブロックセットを確認したいと思います。

しかし、停止と開始ブロックの数だけがサポートされているbadblocksようですint32。つまり、このブロック範囲を指定することはできません。

このドライブで不良ブロックを検索する他の方法はありますか?ドライブ全体をテストするために7時間待たないのです。これはアレイの単一ドライブなので、mdadm利用可能なファイルシステムは含まれません。

答え1

より大きなブロックサイズを使用するように指示するbadblocksと、2TB以上で動作します。私はこれをWD 6TBドライブに使用しました。

badblocks -b 4096 -v /dev/sda

答え2

不良ブロックを2^32に制限するパッチ

これらの特定の制限を追加するために、不良ブロックへのパッチがあるようです。ここを参照してください。回答:[パッチ04/25] libext2fs:64ビット不良ブロック番号を拒否

From: "Darrick J. Wong" <darrick.wong <at> oracle.com>
Date: Wed, 23 Oct 2013 19:43:32 -0400
Subject: [PATCH] libext2fs: reject 64bit badblocks numbers

Don't accept block numbers larger than 2^32 for the badblocks list,
and don't run badblocks on them either.

Signed-off-by: Darrick J. Wong <darrick.wong <at> oracle.com>
Signed-off-by: Theodore Ts'o <tytso <at> mit.edu>

不良ブロックのサポートは追加されませんか?

badblocks近い将来でもこの機能は利用できないようです。

抜粋回答:[パッチ18/31] libext2fs:不良ブロックは48ビットブロック番号を正しく処理する必要があります。

はい、現時点では不良ブロックが残っていると考えており、大規模ディスクアレイの場合、ブロック交換はLVM、ストレージアレイ、またはHDDレベルでほぼ確実に行われます。したがって、64ビットブロック番号をmke2fsに渡す場合は、mke2fsでエラーが発生することをお勧めします。

                      - Ted

別の方法がありますか?

私はその派生や代替を無駄に見つけましたbadblocksが、何も見つかりませんでした。唯一のオプションは、次の商用ツールを使用することです。スピンレットまたはオープンソースツールHDAT2。 HDDメーカーが提供するさまざまなドライブフィットネスツール(DFT)のいずれかを使用することもできます。おそらくこれらのいずれかを使用すると、2^32障壁を破ることができるでしょう。

何をすべきか?

表のオプションの中でHDAT2とSpinRiteを使用して大きな成功を収めたので、おそらく700Mの範囲のブロック領域をスキャンするために使用します。

関連情報