2015年4月24日金曜日

ゼロ書きに便利な util-linuxの wipefs (8) とは

man 8 wipefsには
wipefs can erase filesystem, raid or partition-table signatures (magic strings) from the specified device to make the signatures invisible for libblkid.
いわゆるメタデータのこと言ってる。
今までddでゼロガキをしていたのが比較的安全に出来るようになりそう。ただし、古いバージョンには罠があるので注意。


http://manpages.ubuntu.com/manpages/utopic/man8/wipefs.8.html

新し目のバージョンだとバックアップ機能までついている。
blkidからちょちょっとこしらえているので、できることは似ている。


罠とは次のコミットで修正されているものである。
wipefs: call BLKRRPART when erase partition table
https://github.com/karelzak/util-linux/commit/081dc33b46d1c58f767202920dbdc13039c09565

どうゆうものか気になる方は下記を。
端的にはゼロ書きすると仮想ブロックデバイスの状態も更新しなきゃいけないわけで、カーネルに教えてあげましょうねということ。
削除コマンドなのに、それがないと片手落ちである。
パーティションテーブルをゼロ書きしたら、blockdev --rereadpt しよう


なぜ、罠があることに気付いたかというと次のとおりである。
便利そうなコマンドを発見しても鵜呑みにせず経験則の範囲で使う前にコードを見ておく。というのは大事だということが改めてわかった。
  1. ddで削除するスクリプトを作ってた。
  2. その後のフォーマットにコケることがある。
  3. blockdev --rereadpt しようということがわかる
  4. 時を経てwipefsコマンドを知る
  5. ちゃんとやることやってるかな?と気になるので、使っているUbuntu14.04LTSでapt-get source util-linuxする
  6. 無いことにびっくりしてアップストリームを確認する
  7. 該当コミット発見!新し目のは大丈夫だ。よかったっ。

0 件のコメント:

コメントを投稿