OpenBlocks 266でサーバを運用していたころ、HDDクラッシュによってサーバがダウンしたことがありました。 幸い、重要なデータはパソコンにバックアップはありましたが、それ以外のサーバの設定などを失ってしまいました。
今現在運用しているサーバは、昔のパソコンを流用して使用しています。 普通のパソコンですのでHDDを複数つむことができます。 昔の反省も生かし、HDD情報をバックアップすることにしました。
これら方針適切なソフトウェアは、ずばり、
dd
でしょう。
その後の保守として
も使用することにします。turboには用意されていないので、rpmをDownload、Install。
HDDのスペック(容量やブロックサイズ)が同じである必要はありますが、
HDDの情報を、まったくそのままごっそりとバックアップすることができます。
MBRと呼ばれる、システム起動に必要な領域についても、問答無用でコピーしてくれます。
(ちなみに、普通のコピーではコピーされません。
だって、OSをインストールしないとシステム起動できなさそうな気がしませんか?)
dump/restoreのdumpを使う方法もあったらしいのですが、MBRの設定が必要なようだったので、やめました。同じスペックのHDDが手配できなかったらそれを使おうと思っていました。
まずはシステムをとめます。そして、念のためHDDを使用せずに起動します。 (今回ここではKNOPPIXのCD-ROMを使用してサーバを起動しました。)
ただし、コピー元ディスクを/dev/hdaとし、コピー先ディスクを/dev/hdbとします。
rootで次のコマンドを打ち、データをコピーします。
# dd if=/dev/hda of=/dev/hdb
ifで入力元を指定し、ofで出力先を指定します。
コピー時間がそこそこかかりますが、少なくとも3〜4時間くらいでコピーできます。
コピー先のHDDでシステムが起動できるか確認します。これで起動できていたら成功。だめだったら、、、違う方法を考えましょう。HDD不良か??
ディレクトリ単位でミラーリングを行うソフトウェア。オプションがすごくたくさんあるみたいです。でも、単純に使うなら単純。
Backup対象は、
の二通りとします。
バックアップ対象の作業時のマウントは、/dev/hdb1は/mnt/root、/dev/hdb3は/mnt/homeに行うことにします。
頻繁に書き換わるので、日次でミラーリングを行います。
下記内容を「mirror_home」として/etc/cron.dailyに保存。
#!/bin/sh /bin/nice -19 /sbin/fsck.ext3 -p /dev/hdb3 || echo "/dev/hdb3 is crashed" | mail root -s "bk report(err)" mount /dev/hdb3 /bin/nice -19 /usr/bin/mirrordir /home /mnt/home echo "/dev/hda3 is backuped" | mail root -s "bk report(collect)" umount /mnt/home |
ミラーリング先のディスクは、通常はマウントされていません。ミラーリング作業時のみにマウントされます。このほうが、トラブルの種にはなりづらいでしょう。
上記ファイルの作業内容は、
です。
これらのシステムファイルは、/dev/hda1にありました。ただ、/dev/hda1のトップディレクトリが/となっているため、全部を全部mirrorしてしまうのは少々抵抗があります。特にデバイスファイル。
ということで、rpmで扱いそうなあたりのみをミラーリングすることにします。
考え方は、/homeと同じ。週次でバックアップを行うことにします。
以下の内容を「mirror_root」として/etc/cron.weeklyに保存します。
#!/bin/sh /bin/nice -19 /sbin/fsck.ext3 -p /dev/hdb2 || echo "/dev/hdb2 is crashed" | mail root -s "bk report(err)" mount /dev/hdb2 /bin/nice -19 /usr/bin/mirrordir /etc /mnt/root/etc /bin/nice -19 /usr/bin/mirrordir /var /mnt/root/var /bin/nice -19 /usr/bin/mirrordir /usr /mnt/root/usr /bin/nice -19 /usr/bin/mirrordir /bin /mnt/root/bin /bin/nice -19 /usr/bin/mirrordir /lib /mnt/root/lib /bin/nice -19 /usr/bin/mirrordir /sbin /mnt/root/sbin echo "/dev/hda1 is backuped" | mail root -s "bk report(collect)" umount /mnt/root |
rootになって、直接手で上記のシェルを実行してみます。/etc/cron.weeklyなどに変更が反映されていれば、成功です。
あとはcronに任せましょう。