システムバックアップ(Partition Image)


サーバをLinuxにして一番困ったのは、システムのバックアップでした。Windowsは、フリーソフトでバックアップしていましたが、FATしかサポートしていません。
こんなときに見つけたのが、ここで紹介する Partition Image です。Partition Imageは、ハードディスクのパーティションの中身を丸ごと1つのイメージファイルとして書き出すソフトです。ファイルをコピーするのではなく、パーティションの中身を単なるデータとして扱いイメージファイルとして書き出すもので、このときデータが書き込まれている部分だけ書き出します。従って、Linuxのddコマンドとは異なり、書き出しファイルの容量が削減できるともに、バックアップ時間も短縮できます。また、書き出し時にgzipもしくはbzip2での圧縮もできますので、更に書き出しファイルを圧縮できます。(CPUがプアな場合、バックアップファイルを保存するハードディスクに余裕が十分あるなら、圧縮しないほうが作業時間が短縮できます。)
更に、このソフトが優れているのは、いろいろなファイルシステムに対応しているため、Linuxだけでなく、WindowsやOS/2などのシステムもバックアップすることができることです。対応しているファイルシステムは、

などです。但し、パーティションの指定がLinux表現のため、Windowsユーザの方は判りにくいかもしれませんが、こちらを参考にして下さい。

少なくとも、おやじは問題が発生していませんが、バックアップが確実にできるかどうかは環境にもよると思いますので、各人のリスクでトライしてください。

■Partiton Imageのダウンロード

Partition Imageは、フロッピーディスクまたはCD(CDイメージファイルをダウンロードし、CD-Rで焼いて使用)からブートして使用しますが、最近はホームページからはフロッピーイメージがダウンロードできなくなったので、CDでの使用方法について示します。
CDイメージは、Partition Imageのホームページからダウンロードできます。このページの一番下にあるリンクからダウンロードしてください。SystemRescue CDとKNOPPIXがありますが、おやじは、KNOPPIXではなかなかうまくいかなかったので、SystemRescue CDを使用しました。ダウンロードしたのは、systemrescuecd-x86-0.2.12.isoです。これをCD-Rに焼いて使用しました。

■バックアップ方法

バックアップ方法は、WindowsシステムでもLinuxシステムでも同じです。

  1. できあがったCD-ROMをセットし、システムを起動する。

  2. システムが起動する過程で、使用しているキーボードを聞いてくるので設定をする。(日本語キーボードなら22)

    keymap selection: 22

  3. バックアップしたイメージファイルを保存するパーティションを、/mnt/mydirにマウントする。(システム起動後の最初のWarningにも出ているが、/mntにマウントするとうまく動作しなかった。)

    % mkdir /mnt/mydir
    % mount -t ext3 /dev/hdd1 /mnt/mydir

    ここでの例は、IDEのセカンダリ・スレーブ(hdd)に接続したext3フォーマットのハードディスクの1番目のパーティション(hdd1)を保存用のパーティションにマウントしたものです。-tオプションで指定できるフォーマットタイプはこちらを参照してください。但し、kernelに組み込まれていないものは使用できませんので、全てのタイプが指定できるわけではありません。
    なお、パーティション名は、下記で確認できます。ファイルサイズ(#blocks)でターゲットパーティションを確認できるでしょう。fdiskのせいでしょうか?意図しないパーティションができていることが有りますので、必ず確認することを薦めます。

    % cat /proc/partitions

  4. Partition Imageを使用するには、コマンドラインとGUIの2つの方法がある。ここでは、メニュー形式で簡単なGUIでの方法を示す。
    GUIで起動するには、オプションなしで「partimage」と入力する。

    % partimage

  5. まず、バックアップ対象のパーティションを「Partition to save/restore」の項目でカーソルで選択する。Tabキーで次の項目へ移動する。(以下同様)
    なお、下記画面イメージはtera Termによるもの。サーバ機本体なら内容は変わらないが少しグラフィカルになる。


  6. 次に、「Image file to create/use」の項目で、保存するイメージファイル名を指定する。
    指定方法は、「/mnt/mydir/(任意のファイル名)」と指定する。例えば、 /mnt/mydir/mainserver_rh9.img 。
    続いて、「Action to be done」の項目で、イメージファイルを保存するので、「Save partition into a new image file」を選択し、F5キーを押す。


  7. 次画面では、「Compression level」で圧縮の有無、および圧縮方法の指定(デフォルトはgzip圧縮)や、終了後の処置、自動ファイル分割等を指定する。基本的にはデフォルトで問題ないはずなので、指定が終了したら再度F5キーを押す。


  8. 次画面の「Partition description」で説明を入れられるが、特に不要なのでTabを押してEnter(OK)を押す。


  9. 上記でEnterキーを押すと、ディスクの検査が始まる。


  10. 検査が終了すると、保存対象のパーティション情報が表示されるので内容確認の上、Enterキーを押すと、保存が始まる。


  11. 内容確認の上、Enterキーを押すと、保存が始まる。



    2GBを超えると自動的に追番でファイルが作成される。


  12. 成功すれば、以下の画面が表示される。


Linuxの場合、ディスク容量やCPU能力にもよると思いますが、上記のようにCeleron 2Gで7.24GBは約27分かかりましたので、気長に待ちましょう。これに対し、後述しますがリストアは格段に早くなります。

■リストア方法

◆単純なリストアの場合

単純にシステムが調子悪くなったのでリストアする場合、即ち、バックアップしたハードディスクにそのまま戻す場合は、基本的にバックアップの時と同様の操作で可能です。

  1. バックアップ手順の1〜4項まで、同様に操作する。3項では、バックアップしたイメージファイルがあるパーティションをマウントする。

  2. Partition Imageを起動し、「Partition to save/restore」で、リストア先の元のパーティションを指定する。
    「Image file to create/use」の項目で、バックアップしたイメージファイルを指定するが、バックアップ時に自動ファイル分割を選択した場合は、指定してファイル名の後ろに自動的に「.000」〜の追番が付与されているので、「/mnt/mydir/mainserver_rh9.img..000」ように最初のファイルを指定する。
    続いて、「Action to be done」の項目で、イメージファイルを戻すのでので、「Restore partition from an image file」を選択し、F5キーを押す。


  3. 次画面で、リストア時のオプションやリストア成功時の後処理を選択できるが、通常はデフォルトのままでよいので、そのままF5キーを押す。


  4. リストア対象のパーティション情報が表示されるので内容確認の上、Enterキーを押す。


  5. 次画面で、リストアしてもいいか再確認の画面がでるので、そのままEnterキーを押すとリストアが始まる。


  6. 成功すれば、以下の画面が表示されるので、Enterを押して終了。同じ環境で約6分で復旧できた。


◆他のディスクへのリストアの場合

Partition Imageは名前のとおりで、パーティションを扱いますので、パーティションが切られていないハードディスクは扱えません。ハードディスクが壊れたりして新しいハードディスクに書き戻す場合や他のシステム使用していたものを流用したりする場合は、パーティションを作成し、フォーマットが必要です。
この時、パーティションのサイズは、元のサイズと同じか大きくないとリストアできないので注意が必要です。
Windowsの場合、あらかじめWindowの起動ディスクでfdisk+formatしておきます。
linuxの場合も同様で、fdiskでパーティションを作成しmke2fsでフォーマットますが、SystemRescue CDにはGUIベースのパーティション作成ツールが入っていますので、それを利用するといいでしょう。

ツールはシェプロンプトで、rootで「run_partgui」と入力することで起動できます。最初にマウスのタイプを聞いてくるので使用しているマウスのタイプを指定すると、ツールの画面が起動するので、リストア先のパーティションを作成してフォーマットします。

なお、このツールではswapパーティションは作成できないので、とりあえずはext3のパーティションで作成しておき、一旦終了した後、以下でスワップパーティションを作成します。ここでは、/dev/hda2に作成したものとします。(このツールを起動すると、シェルがzshになってしまうようで、mkswapを入力するとエラーがでてどうするか聞いてくるので、「y」と入力してあげれば問題なく作業を進められます。)

% mkswap /dev/hda2
% swapon /dev/hda2
%%

 パーティションが出来上がれば、リストアは前項と同じです。しかし、このままではシステムは起動しません。上記のリストアだけでは、MBR(Master Boot Record)が復旧できていませんので、下記でMBRを復旧します。
 
  1. リストアが終了したところで、再度、「partimage」と入力して「単純なリストア」の2項の「Action to be done」の項目で、「Restore an MBR from the imagefile」を選択する。

  2. 次の「Restore an MBR to the hard disk」で、左側の「Disk with the MBR to restore」にリストア先のハードディスクが、右側の「Orignal MBR to use」にバックアップされているMBRのデータが表示されるので、間違えないようにそれぞれを選択する。

  3. 次に、「What to restore:」で何をリストアするか指定するが、MBRをリストアするので、「The whole MBR」を選択し実行する。

■おまけ

  1. デバイス名とパーティション名

    デバイス名は、IDEへのドライブの接続場所で、以下のようになる。
    パーティション名はデバイス名の追番になる。(ex. プライマリ・マスターの1番目のパーティション : hda1)

    ドライブの接続場所 デバイス名
    プライマリ マスタ hda
    スレーブ hdb
    セカンダリ マスタ hdc
    スレーブ hdd


  2. フォーマットタイプ

    名前 システム名
    vfat Windows FAT16/32
    NTFS Windows NTFS
    msdos MS-DOS
    ext2 Linux ext2
    ext3 Linux ext3


  3. SystemRescue CDでのSSHの使用方法

     おやじは、コンテンツ用に操作画面データがほしかったため、WindowsクライアントからTera Termでオペレーションしたのでrootのパスワード設定とネットワークの設定のみサーバ機で行いました。


Top Pageへ