ハードドライブの最後の1MBをワイプする


25

ハードドライブの最後の1MBをゼロにするために使用できる簡単なコマンドはありますか?

ドライブを開始するために私はそうしdd if=/dev/zero of=/dev/sdx bs=1M count=1ます。seekdd のオプションは有望に見えますが、誰かが私がどこまで探すべきかを正確に決定する簡単な方法がありますか?

ドライブの最後にRAID構成の一部を保存するハードウェアRAIDアプライアンスがあります。ドライブを未構成として表示するにはRAIDアプライアンスが必要なので、ドライブを完全に消去する時間を費やすことなくRAID構成を削除したいです。私はダースの2TBドライブを持っていますが、それらすべてのドライブの完全消去には長い時間がかかります。

回答:


22

Linuxでディスクのサイズを取得する最も簡単な方法はblockdev --getsz次のとおりです。

sudo -s
dd bs=512 if=/dev/zero of=/dev/sdx count=2048 seek=$((`blockdev --getsz /dev/sdx` - 2048))

すばらしい、サイズを簡単に取得できるツールが必要だとわかっていました。
ゾレダチェ

1
私は解決策が好きですが、sda例として使用することは、コピーして貼り付け、キャリッジリターンをコピーすることに成功した場合、恐ろしく危険です。sdxはるかに適しています。私は予防策を講じていますが、それらのために、今すぐディスクを破壊しませんでした。
emk2203

@ emk2203良い点。私は興味があります、そのようなシナリオのためにあなたはどんな予防策を持っていますか?
ハシム

1
貼り付ける前に一重引用符を使用します。行にキャリッジリターンが含まれている場合、引用の終わりがないため、シェルプロンプトにキャッチされます。すべて問題なければ、Ctrl-Aで行の先頭に移動し、引用符を削除してから戻ります。保険のためのさらに3つのキーストローク、それだけの価値があります。
emk2203

/ dev / sdxの代わりに、nvme-SAMSUNG_MZVLW1TXXXX-000XX_XXXXXXXXXなどの/ dev / disk / by-id /内のリンクを確認します。ls -l / dev / disk / by-id /は、リンク名とリンク先の/ dev / sdXを表示します。
rcpa0

6

すべてのパーティションのサイズはで利用可能です/proc/partitions。次のコマンドは、サイズをsdx(kB単位で)表示します。

awk '$4 == "sdx" {print $3}' </proc/partitions

したがって:

dd if=/dev/zero of=/dev/sdx bs=1k count=1024 \
   seek=$(($(awk '$4 == "sdx" {print $3}' </proc/partitions) - 1024))

最後に-1024の理由は何ですか?
ハシム

1
@Hashim質問は最後の1MBを消去する方法を尋ねます。最後の1MBは、終了する前に1024kBで始まります。
ジル 'SO-悪である停止

3

シークを使用してドライブの最後に到達すると、非常にうまく機能します。つまり、

seek = $((blockdev --getsz /dev/sda-2048))

ただし、これを使用する場合は、カウント値が正しいことを知っているか、まったく使用しないことをお勧めします。私がこれを言う理由は、ドライブは512バイトセクターまたは4kセクターのいずれかを持つことができ、4kセクターを持つドライブでこのソリューションを使用すると、そのカウント値でドライブの最後に行かないからです、最後にRAID情報を見逃す可能性があります(これに遭遇しました)。


どういうわけか、あなたが何に出会ったのかを正確に共有してもらえますか?デバイスのファームウェアまたはLinuxカーネルによって報告される実際のブロックサイズよりも小さい/大きいddカスタムbs値で使用した場合、セクターをどのように扱うかを誤解しているのではないかと思い、興味をそそられます。
sjas

2

を使用して、ディスク上のセクター数を取得できますhdparm -v /dev/sdx。number_of_sectors-2048(512バイトのセクターを想定)をシークしてみてください。


hdparmは便利なようですが、セクターサイズを確認するにはどうすればよいですか?
Peter.O

1
/sys/block/sdx/queue/physical_block_size情報を提供するかもしれませんが、いくつかの新しいディスクは、報告するセクターサイズで高速でゆるく再生します。ディスク上のラベルを読むか、製造元のデータシートで調べる方が良いでしょう。

1
おかげで..私はちょうどことに気づいたhdparm -I /dev/sdaセクタサイズのリスト2「のバージョン」:LogicalPhysical。これは、「早くてゆるい」という意味ですか?....私は、何かがそのような方法で振る舞うなら、それがRAIDシステムである可能性が高いという「感覚」を手に入れます
。– Peter.O

1
@red:参照を変更することはできませんが、4096バイトセクターのドライブが512バイトであることをシステムに報告し、内部で変換を処理することをどこかで読みました。

1

を使用ddして、デバイスサイズを取得できますfdisk

dd if=/dev/zero of=/dev/sda bs=1k \
   seek=$(( (`fdisk -l /dev/sda | grep 'Disk /' | cut -d' ' -f 5` -1024*1024)/1024  )) count=1024

丸めエラーを回避するために1mのブロックサイズを使用していません。

または、1mbの負のオフセットでlseek関数を呼び出す小さなCプログラム(またはスクリプト)を記述し、を呼び出すこともできSEEK_ENDますwrite

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.