NO IMAGE

Mondo Rescue でバックアップ

HDD等、回転するパーツを含むものは、突然壊れることがあるので、自宅サーバ(中古ノートPC)のHDD全体をバックアップしようと思います。

バックアップには「Mondo Rescue」を使用。

以下のサイトを参考にさせていただきました。ありがとうございました。
CentOS6.3フルバックアップツール(Mondo Rescue)のインストール

CentOS6.4 でも、標準では Mondo Rescue のリポジトリ(インストール情報?)を持っていません。

Mondo Rescueのダウンロードサイトに yum のリポジトリ設定ファイルが用意されているので、それをダウンロードします。

# cd /etc/yum.repos.d/
# wget ftp://ftp.mondorescue.org/rhel/6/x86_64/mondorescue.repo
    上記は64bit版のCentOSを使用している場合です。

    32bit版のCentOSを使用している場合は、URLが
    ftp://ftp.mondorescue.org/rhel/6/i386/mondorescue.repo となります。

    ・・・当初、間違って、32bit版の Mondo Rescue を入れてしまい、何度設定を変えてやっても、バックアップ処理の最後のほうで、「FATAL ERROR」 「umount: /mnt/cdrom: not mounted」を表示し、処理中断するので、悩まされました。…orz

Mondo Rescue をインストール

# yum -y install mondo


バックアップ用ディレクトリ、テンポラリ(作業用)ディレクトリ、スクラッチ(isoファイル作成作業用)ディレクトリを作成します。

# mkdir /var/mondo
# mkdir /var/mondo/centos_backup
# mkdir /var/mondo/tmp
# mkdir /var/mondo/scratch


バックアップ処理を実行

# mondoarchive -Oi -d /var/mondo/centos_backup -E '/mnt|/var/mondo' -s 4480m -S /var/mondo/scratch -T /var/mondo/tmp -p '20131102' -9 -N -g


「-O」はバックアップ実行、「-i」はISOイメージファイルを作成、「-d」は出力先ディレクトリ指定、「-E」は除外ディレクトリ指定、「-s」はメディアサイズ指定、「-S」はスクラッチディレクトリ指定、「-T」はテンポラリディレクトリ指定、「-p」はバックアップファイル名を指定、「-9」は圧縮レベル、「-N」はネットワークファイルシステムの除外指定、「-g」は進捗状況のGUI表示です。

mondoarchive コマンドをオプションなしで実行すると、GUIの画面が起動します。その後、ボタンを選びながら、ウィザード形式でオプションを指定することもできます。

20131101オプションに「-g」を付けると、青バックのGUI表示となり、プログレスバーで進捗状況を表示します。

ターミナルソフト「Poderosa」では、画面設定をいじっているせいか表示が崩れました。「Tera Term」ではまともに表示してくれたので、こちらで実行。

およそ12分ほどでバックアップが終了し、指定した場所にISOファイルが作成されました。指定したファイル名の後に「-」と連番が付加され、拡張子「.iso」が付いたファイル名となるようです。上記の指定だと「20131102-1.iso」が生成されます。

作成されたISOイメージファイルは、サーバ機でDVD-Rに焼いても良いのでしょうが、現在部屋の奥隅に追いやられており作業性がよくありません。・・・いや、それ以前に、さすがは中古ノートPC・・・DVD-ROMドライブでした。…orz

そのため、FTPでサーバ機(CentOS)からクライアント機(Windows7)にISOイメージファイルをダウンロードし、こちらで焼きました。

これで万が一、HDDがクラッシュしても、OS、Apache、vsftpd、MySQL、phpMyAdmin、WordPress、Postfix、Dovecot、iptables、Bind などの再導入・再設定をしなくても済むはずです。

ただし、リストアは・・・ISOイメージファイルを焼いたDVD-Rでブートして行うようですが・・・まだ試していません。


バックアップ作業を毎回Tera Termで接続後にコマンド実行するのは面倒です。そこで、バックアップ処理を定期的に自動実行させるため、クーロン(crond)を利用したいと思います。実作業は、crontab を使用して cronjob を登録します。

まずは、前述の mondoarchive コマンドとオプションの指定をシェルスクリプトファイルにおこします。

# mkdir /scripts
# vi /scripts/do_backup.sh
#!/bin/bash
today=$(date +%Y%m%d)
/usr/sbin/mondoarchive -Oi -d /var/mondo/centos_backup -E '/mnt|/var/mondo' -s 4480m -S /var/mondo/scratch -T /var/mondo/tmp -p ${today} -9 -N
    ファイル名(オプション「-p」)は、${today}で実行時の日付を取り入れるようにしました。
    mondoarchiveはフルパスで指定する必要がありました。
    オプション「-g」は削除し、GUIではなく標準出力に結果を表示させます。

実行権を与えます。

# chmod +x /scripts/do_backup.sh

クーロンタブ(crontab)にジョブを追加します。

# crontab -e

エディタが起動するので、以下の2行を追加します。

MAILTO=info@a21-hp.com
00 03 * * * /scripts/do_backup.sh

保存・終了すればジョブ(cronjob)が登録されます。
確認する場合は、crontab -l を実行。

# crontab -l
MAILTO=info@a21-hp.com
00 03 * * * /scripts/do_backup.sh
#

1行目は、メールアドレスの指定です。次行以降のスクリプトの実行結果(標準出力)を、スクリプト実行後に送信します。
2行目は、最初の「00」が分、「03」が時刻、次の「*」が日付、次の「*」が月、次の「*」が曜日です。最後に実行させるスクリプト名を記述します。今回は、毎日深夜3:00にバックアップを作成する設定です。

20131102指定時刻に実行された、スクリプトの結果(標準出力の内容)がメールで届いていました。

保存先を見ると「20131102-1.iso」が存在していました。ファイルサイズは約2.1GB。これなら数日分ためこんでも問題はなさそうです。

毎日フルバックアップではHDD容量を圧迫するなら、mondoarchive の差分バックアップのオプション「-D」を使用し、フルバックアップは日曜だけ、月曜~土曜は差分バックアップを実行するように変更も可能ですが、この場合はISOイメージファイルにしない方が良いのかもしれないし、リストア手順も良く解らないので・・・今はやめときます。

本格的にHDDの故障対策をやるならRAID5とかRAID6のサーバ機を製作するのも面白そうですが、そこまでやるだけのサーバ内容でもないし・・・。

単にHDDをSSDに換装すれば故障率は下がるでしょうが、容量とコストの兼ね合いが・・・。

とりあえず、最低限のリスク管理として、今回の「HDD全体バックアップ」で運用継続です。(^_^)