[FYI] Dell の HDD を消そうとしたら RAID情報が消えない

廃棄の為、HDD消去

をしようと思ったんです。面倒くさいのでいつも複数の HDD を mdadm で RAID 化してからランダムデータと Zero を書き込むのですが、今回はなぜかうまく行きませんでした。

情報を見てみる

とりあえず、手近にあった CentOS7 の LiveCD で起動してみました。lsblk で確認するとこんな感じでした。(関係無いものは除外しています)

 [root@localhost ~]# lsblk
NAME             MAJ:MIN RM   SIZE RO TYPE   MOUNTPOINT
sdb                8:16   1   7.4G  0 disk
└─sdb1             8:17   1   7.4G  0 part   /run/initramfs/live
sdc                8:32   0   137G  0 disk
└─ddf1_RAID1     253:3    0 136.4G  0 dmraid
  ├─ddf1_RAID1p1 253:4    0     4M  0 part
  ├─ddf1_RAID1p2 253:5    0     4G  0 part
  ├─ddf1_RAID1p3 253:6    0   129G  0 part
  ├─ddf1_RAID1p5 253:7    0   250M  0 part
  ├─ddf1_RAID1p6 253:8    0   250M  0 part
  ├─ddf1_RAID1p7 253:9    0   110M  0 part
  ├─ddf1_RAID1p8 253:10   0   286M  0 part
  └─ddf1_RAID1p9 253:11   0   2.5G  0 part
sdd                8:48   0   137G  0 disk
└─ddf1_RAID1     253:3    0 136.4G  0 dmraid
  ├─ddf1_RAID1p1 253:4    0     4M  0 part
  ├─ddf1_RAID1p2 253:5    0     4G  0 part
  ├─ddf1_RAID1p3 253:6    0   129G  0 part
  ├─ddf1_RAID1p5 253:7    0   250M  0 part
  ├─ddf1_RAID1p6 253:8    0   250M  0 part
  ├─ddf1_RAID1p7 253:9    0   110M  0 part
  ├─ddf1_RAID1p8 253:10   0   286M  0 part
  └─ddf1_RAID1p9 253:11   0   2.5G  0 part

今回の HDD は sdc と sdd になりますが、ddf1_RAID1 なるものがどうやっても消せません。dd if=/dev/zero で片っ端から書いてもダメ。

自分のサイトの情報のコレ、sg3_format --format --size=512 -v /dev/sdc でも消えず。色々と検索してみた所、海外のフォーラムで見つけました。

決め手は dmsetup

dmsetup は滅多に使った事がなかったんですが、これで消えるようです。

 [root@localhost ~]# dmsetup remove ddf1_RAID1p1
 [root@localhost ~]# dmsetup remove ddf1_RAID1p2
 [root@localhost ~]# dmsetup remove ddf1_RAID1p3
・
・
・
 [root@localhost ~]# dmsetup remove ddf1_RAID1

 [root@localhost ~]# lsblk
NAME             MAJ:MIN RM   SIZE RO TYPE   MOUNTPOINT
sdb                8:16   1   7.4G  0 disk
└─sdb1             8:17   1   7.4G  0 part   /run/initramfs/live
sdc                8:32   0   137G  0 disk
sdd                8:48   0   137G  0 disk

消えました。これでRAID化して削除できる!という訳で、ついでに自分の削除方法も案内しておきます。まさに自分用です。

RAID1化 -> ランダムデータ書き込み -> RAID停止 -> zero-superblock

 [root@localhost ~]# rm -rf /mirror
 [root@localhost ~]# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdc /dev/sdd
 [root@localhost ~]# mke2fs -q -j /dev/md0

今回は sdc と sdd という対象にやってみます。雑にコマンドだけ載せますね!
まず、/mirror に マウントさせたいので、そのフォルダの残骸を消しておきます。そしたら mdadm で RAID1 を作成します。どうせなら同時に書き込みした方が時間短縮で楽だからです。そうしたら、mke2fs でファイルシステムを作成します。

 [root@localhost ~]# mkdir /mirror
 [root@localhost ~]# mount /dev/md0 /mirror/
 [root@localhost ~]# openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /mirror/randomfile.bin

/mirror に /dev/md0 をマウントします。そしたらランダムデータをバンバン書いていきます。openssl を利用すると、
dd if=/dev/urandom of=/mirror/randomfile.bin bs=1G count=150 とかやるよりも遥かに高速なランダムデータを書き込む事ができます。

 [root@localhost ~]# dd if=/dev/zero of=/mirror/randomfile2.bin bs=1G count=128

0 で埋め尽くしたい場合には、こんな感じでどうぞ(笑)

 [root@localhost ~]# umount /mirror
 [root@localhost ~]# mdadm --misc --stop /dev/md0
 [root@localhost ~]# cat /proc/mdstat
 [root@localhost ~]# mdadm --misc --zero-superblock /dev/sdc
 [root@localhost ~]# mdadm --misc --zero-superblock /dev/sdd

書き込みが終わったら、/mirror をマウントから外します。
次に、mdadm で /dev/md0 を停止させて、cat /proc/mdstat で RAID の情報が残っていないか確認します。

最後に、–zero-superblock オプションでそれぞれの HDD のスーパーブロックにゼロを書き込んで情報を消します。これは全てのディスクに対して実行します。

これで作業は完了しました。
色々雑ですが、mdadm で busy と言われたり、マウントが拒否された場合には dmsetup は使えるよ!という情報でした。ただ当然ながら対象を間違えると綺麗に消えますのでご注意を。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください