ハードドライブの最後の1MBをゼロにするために使用できる簡単なコマンドはありますか?
ドライブの開始のために私はdd if=/dev/zero of=/dev/sdx bs=1M count=1
。 ddのseek
オプションは有望そうに見えますが、誰かが私がどこまで探すべきかを正確に判断する簡単な方法はありますか?
ドライブの最後にRAID構成の一部を保存するハードウェアRAIDアプライアンスがあります。ドライブを未構成として表示するにはRAIDアプライアンスが必要なので、ドライブを完全に消去する時間を費やすことなくRAID構成を削除します。私には12 TBのドライブが12台あり、それらすべてのドライブを完全に消去するには長い時間がかかります。
Linuxでディスクのサイズを取得する最も簡単な方法は、blockdev --getsz
:
Sudo -s
dd bs=512 if=/dev/zero of=/dev/sdx count=2048 seek=$((`blockdev --getsz /dev/sdx` - 2048))
すべてのパーティションのサイズは/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))
ドライブの最後に到達するためにシークを使用すると、非常にうまく機能します。
seek = $((
blockdev --getsz /dev/sda
-2048))
ただし、これを使用する場合は、カウント値が正しいか、まったく使用しないことをお勧めします。これは、ドライブには512バイトセクターまたは4kセクターのいずれかが含まれる可能性があるためです。このソリューションを4kセクターのドライブで使用すると、そのカウント値を持つドライブの最後に移動しません。そして最後にRAID情報を見逃す可能性があります(私はこれに遭遇しました)。
hdparm -v /dev/sdx
を使用して、ディスク上のセクター数を取得できます。 number_of_sectors-2048(512バイトのセクターを想定)にシークしてみてください。
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のブロックサイズを使用していません。
あるいは、lseek
関数をSEEK_END
および1MBの負のオフセットで呼び出す小さなCプログラム(またはスクリプト)を記述してから、write
を呼び出すこともできます。