[root@hoge ~]# cat /etc/centos-release CentOS Linux release 7.1.1503 (Core) [root@hoge ~]# uname -a Linux hoge 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [root@hoge ~]# mkfs.btrfs /dev/sda10 /dev/sda10 appears to contain an existing filesystem (ext4). Error: Use the -f option to force overwrite.この例であれば、-f オプションを使えば良いのですが、残存するファイルシステムのシグネーチャを削除するのに wipefs コマンドを利用できます。
[root@hoge ~]# wipefs /dev/sda10 ※オプションを指定しなければ何が入ってるか確認できます offset type ---------------------------------------------------------------- 0x438 ext4 [filesystem] UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [root@hoge ~]# grep 0x438 /usr/share/file/magic 0x438 leshort 0xEF53 Linux [root@hoge ~]# hexdump -C -s 0x420 -n 48 /dev/sda10 00000420 00 20 00 00 00 20 00 00 00 08 00 00 00 00 00 00 |. ... ..........| 00000430 af 15 38 55 00 00 ff ff 53 ef 01 00 01 00 00 00 |..8U....S.......| 00000440 af 15 38 55 00 00 00 00 00 00 00 00 01 00 00 00 |..8U............| 00000450 [root@hoge ~]# wipefs -a /dev/sda10 ※-a オプションでクリアが実行されます /dev/sda10: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef [root@hoge ~]# hexdump -C -s 0x420 -n 48 /dev/sda10 00000420 00 20 00 00 00 20 00 00 00 08 00 00 00 00 00 00 |. ... ..........| 00000430 af 15 38 55 00 00 ff ff 00 00 01 00 01 00 00 00 |..8U............| 00000440 af 15 38 55 00 00 00 00 00 00 00 00 01 00 00 00 |..8U............| 00000450以下、その他の方法です。
昔から、中身をクリアするなら、次のように dd を使うのが常套ですが、サイズが大きいと時間かかります。
[root@hoge ~]# dd if=/dev/zero of=/dev/sda10 bs=1Mファイルシステムのシグネーチャは、冒頭にあることが多いので、先頭だけクリアするという方法もあります。
[root@hoge ~]# dd if=/dev/zero of=/dev/sda10 bs=1M count=1ランダムデータで埋める場合に、/dev/urandom を使うことがありますが、これは遅いので注意したほうがいいです。
[root@hoge ~]# dd if=/dev/urandom of=/dev/sda10 bs=1M
shred コマンドも利用できます。ゼロクリアする場合は、こうです。
[root@hoge ~]# shred -n 0 -z /dev/sda10shred でランダムデータで埋めるには、こうです。dd で /dev/urandom 使うよりも、全然高速です。
[root@hoge ~]# shred -n 1 /dev/sda10scrub という shred に似たものもあります。この手のツールは、いろいろありそうに思う。
もしも、TRIM 対応の SSD なら、blkdiscard を使えます。
[root@hoge ~]# blkdiscard /dev/sda10これは大変便利です。HDD でも使えたらいいのになと思いますが、費用対効果上、HDD に TRIM が実装されるなどということは無いのでしょうね。
2015-09-10追記、少々古い Intel 520 で blkdiscard を使ってみたら消えないようでした(less -f で見たらゴミが見えた)。ところが、もう1回 blkdiscard したらオールゼロになったっぽい(less の出力冒頭しか確認してないので「ぽい」)。後日、検証してみます。520 は「Deterministic read ZEROs after TRIM」機能(hdparm -I の後半で確認できる)が搭載されていないからだろうとは思いましたが。。。
最後になりますが、くれぐれも対象デバイスを取り違えないように、注意しましょう。
0 件のコメント:
コメントを投稿