tomyamaのブログ

日記・雑記。

PCのフルバックアップを実施

PCのフルバックアップを実施しました。

 

前回のバックアップから1週間が経過。バックアップ先は2面分確保しているので、今回のフルバックアップで、前々回のフルバックアップのデータが消えることになります。

 

フルバックアップの対象と書き込み先のディスクは下図のような構成です。

内蔵のSSDがバックアップ対象で、書き込み先は、3TBのハードディスク(HDD)の「SIDE_A」もしくは「SIDE_B」というパーティションです。

 

PCのバックアップシステムの構成

バックアップ対象とバックアップ先の構成



内蔵ディスクをバックアップするにあたり、内蔵ディスクに入っているOS(Windows 10)は起動させたくありません。Windowsが正常に停止している状態のデータをバックアップする必要があるからです。その為、別のディスクから起動させたいのですが、自分はUSBメモリにシステムを入れて手軽に使えるので、Knoppixを使用しています。

 

Knoppixからは、各ディスク,パーティションは、図中の青字のような名前で認識されています。例えば「SIDE_A」に「ddコマンド」でフルバックアップしたい場合には、以下のようなコマンドを打ちこみます。

$ dd if=/dev/sda of=/dev/sdb2 bs=256M

 

逆に「SIDE_A」のバックアップデータを書き戻したい場合は、「/dev/sda」と「/dev/sdb2」の部分を置き換えて実行します。

$ dd if=/dev/sdb2 of=/dev/sda bs=256M

 

バックアップ先を「SIDE_A」から「SIDE_B」に変更する場合は、「/dev/sdb2」の部分を「/dev/sdb3」に置き換えれば良い。

 

バックアップ実行時の投入コマンドとデータの流れ

バックアップ先による投入コマンドの違い

 

この方法だと、ディスク全体のデータを丸ごと、「SIDE_A」もしくは「SIDE_B」に放り込んでいます。つまり、毎回1TBのデータを読み込む必要があります。しかし、何も考えず初めから最後まで読んでいるだけなので、毎回同じ時間でバックアップが完了するところが利点です。

 

それに対し、例えばWindows 10のエクスプローラー等で内蔵ディスクの使用量を確認すると500MBしか使っていない場合に、「500MB(使用分のデータ)だけをバックアップしよう」と考えると、NTFSというファイルシステムのデータを辿りながらディスクを読んでいく必要があるので、バックアップがいつ終わるのかを見積もるのが困難になります。

ファイルシステムのデータは点在しているし、使えば使うほど断片化していくので、ファイルシステムを使ったデータアクセスは処理が重い、つまり遅くなります。この方法は、フルバックアップには向いていません。

フルバックアップは丸ごとコピーする方が、バックアップする時も、バックアップしたデータを使ってリカバリ(復旧)させる時も、シンプルで作業しやすいです。

 

ちなみに、自分のフルバックアップ環境だと、バックアップに要する時間が「SIDE_A」と「SIDE_B」で異なります。これはパーティションが配置されている物理的な位置が原因と思われます。(ハードディスクは外周に近い部分ほど、パフォーマンスが上がります。)

  フルバックアップに要する時間 処理速度
SIDE_A 約1時間35分 約176MB/s
SIDE_B 約1時間50分 約152MB/s

 

「Seagate 3TB HDD ( SRD0NF2 )」の「SIDE_A」にバックアップデータを書き込んだ

SIDE_A」にフルバックアップした際の進捗状況



「Seagate 3TB HDD ( SRD0NF2 )」の「SIDE_B」にバックアップデータを書き込んだ

SIDE_B」にフルバックアップした際の進捗状況

グラフを見ると、時間の経過と共に処理速度が遅くなっているように見えますが、これは、書き込みが進むにつれて、ハードディスクの内周に近づいていく事が原因と思われます。もう少し詳しい考察を『Seagate HDD ( SRD0NF2 ) の性能を考察』で書いています。