スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ハードディスク自体の暗号化とバックアップその1、まずはディスクの完全消去

前に外分けハードディスクの暗号化をしてみたいと書きましたが、それを実践してみます。それに先立ち、もともとこのディスクには生でデータを保存していたので、その情報が抜かれる可能性を考え、データを綺麗に削除しましょう。ddコマンドで全領域を上書きしてしまうのです。

# dd if=/dev/zero of=/dev/sdb

時間はかかりますが、全領域上書きはハードディスクを破壊せずにデータを消す唯一の方法です。ハードディスクはゴミ箱を空にしようが、再フォーマットをしようがデータは消えないのです。というのも、これらの操作はディスク上のインデックスに当たるものを消すだけなので、実データは残ってしまうのです。それら実データが残っている領域は空き領域として扱われ、データを書き込んでいればそのうちに上書きされていきますが、それまではデータが残っています。ので、一度でも使ったハードディスクを新たに暗号化してデータを保護しようと思うなら、その前にオールクリアしておかないと意味が薄いのです。

上記コマンドでは/dev/sdbの全体に一回だけ0を書き込むことになります。これがデータ消去として十分かという話は別記事で書きます (結論を先に言っておけば一応十分だろうと考えています) 。なお、今自分の外分けハードディスクは/dev/sdbで認識されているのでこれですが、それはそれぞれの環境と時によって違うので、よく確認してください。自分はGPartedで確認しています。

ただ、時間はかかります。USB2.0で接続していると、書き込み速度は最大でも30MB/s程度になってしまうので、2TBのハードディスクの全領域を上書きするには18時間以上かかるはずです。ではおやすみなさい…

---丸一日経過---

---丸二日経過---

---三日目の朝---

なげーよ!長いよ!まだ終わりません。これは何かがおかしい。もしかしたらソフトウェアのバグか何かで処理がループしているとか、異常が起きている可能性が高いので、Ctrl+Cキーを押して中断。すると…

なんと恐ろしいことに、書き込み速度が2.2MB/sしか出ていません。そしてまる二日と一晩経っているというのに、500GBも書けていません…どういうことなの?2.2MB/sの書き込み速度と、その進捗具合を計算して確認するとだいたいあっているので、心配した処理がループしたとかそういうことはなさそうです。要するにただ単に速度が異常に遅かったと。

一体何が問題なのか…ググってみるとこんなものが引っかかりました。

dd - 自宅サーバWiki
時間がなくて早く終わらせたい人は
# dd if=/dev/zero of=/dev/sd bs=1024
という風にbsの値を大きくしてあげれば多少早くなる可能性あり。


これ試すか…。でも、なぜ速くなるのでしょう。そしてそれによって問題は生じないでしょうか。人間のレベルで言えば、速く物事を処理しようとすればミスが生じたりするものです。ただ、2.2MB/sは完全に異常ですし、実用的では無いです。これはなんとかしなければいけません。

というわけで、やります。やりますが、ミスが出るかどうかも確認したい。まずは、ここまで処理したハードディスクの内容を確認します。全体をチェックするのは時間がかかるので先頭1GBだけ。

# hexdump -C /dev/sdb -n 1073741824
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
40000000


これだけの出力が得られました。これは全部ゼロだったので省略された結果だと思われます。まあデフォルトなので当然でしょうが、512バイト単位で書き込んでいくことは基本的に遅い以外の問題は生じないと。では、一旦これにランダム値の書き込みをしてみます。これも先頭1GBだけ。

# dd if=/dev/urandom of=/dev/sdb bs=512 count=2097152
2097152+0 レコード入力
2097152+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 671.892 s, 1.6 MB/s


同じく512バイト単位の書き込みなので遅いのはわかりきっていましたが、やはり遅いです。まあいい、これも書き込みが成功しているか確認。

# hexdump -vC -n 1073741824 /dev/sdb

-vオプションをつけたのは省略を避けるためですが、はい、出力が大変なことになりましたよね。ざっと見て書き漏らしがなさそうなら、つまり00の値がどこかで異常に固まっていたり、定期的に出ているようでないことがわかれば、Ctrl+Cを打って止めましょう。

では、ここに4096バイト単位でゼロを書き込んでみます。4096としたのは512の倍数であること、あとこのハードディスクの物理セクタが4096バイトであるためです。これなら書き損じが生じるとかの問題は少なかろうと。

# dd if=/dev/zero of=/dev/sdb bs=4096 count=262144
262144+0 レコード入力
262144+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 39.0429 s, 27.5 MB/s


あれ?なんだこりゃ。一転めっちゃ速いです。というかUSB2.0の実効速度に近い速度が出ています。では、これを確認してみましょう。

# hexdump -C /dev/sdb -n 1073741824
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
40000000


この通りの出力が得られました。つまり、512バイト単位で書こうと、4096バイト単位で書こうと、直接それが原因で書き損じが生じることはないということです。USB2.0で、実セクタ4096バイトのハードディスクを使っている方は、4096バイトで書き込めばいいと思います (ただ、これはうちの環境でたまたまって可能性もないとは言えないので保証はしません) 。

んー、じゃあ、改めて4096バイト単位で全領域をクリアしましょう。

# dd if=/dev/zero of=/dev/sdb bs=4096
dd: '/dev/sdb' の書き込みエラー: デバイスに空き領域がありません
488378647+0 レコード入力
488378646+0 レコード出力
2000398934016 bytes (2.0 TB, 1.8 TiB) copied, 71693.9 s, 27.9 MB/s


はい、全部書き込まれ、これ以上書けないというエラーが出て終了です。だいたい20時間だからまあこれでよいのでしょう。USB3.xを使っている方はまた事情が違ってくるでしょうが、うちのマシンは化石のごとく古いので3.0には対応していないんですよ。PCIeも1.1なので、ボートを追加してもこれがボトルネックになって意味がないのです。あー、さすがにそろそろマシン買い換えたいなあ…

しかし、マシンを買い換えるにしてもデータの移し替えはしなければならないわけで。バックアップはしなければなりません。というわけで話を先に進めたいのですが、長くなったので一旦ここで切ります。続きは次回

to do リスト
・外分けハードディスクのオールクリア (済)
・暗号化パーティションの作成
・バックアップソフトウェアの選択とバックアップ実行

関連記事

テーマ : セキュリティ
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ざっぱー

Author:ざっぱー
(この画像について)

当ブログについて
メール
(このメールアドレスへの特定電子メール (迷惑メール) の送信はお断りします)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。