Linux システム全体の ISO イメージ・ファイル(アーカイブ・ファイル)作成(Relax-and-Recover,Mondo Rescue)
【概要】 Linux システム全体をブート可能な ISO イメージファイルとしてアーカイブすると,システム障害時に,OS を含めたシステム全体を復旧(ベアメタルリカバリ: Bare Metal Recovery)することができる。
このページで扱うツールは次の 2 つである。
- Relax-and-Recover (ReaR): Ubuntu 24.04,Ubuntu 26.04 の universe リポジトリに
rearパッケージとして収録されている。現行の Ubuntu ではこちらを使用する。 - Mondo Rescue:
mondoパッケージは 2011 年に Debian から削除され,それ以降 Ubuntu の公式リポジトリにも収録されていない。上流サイトが配布するパッケージも Ubuntu 22.04 用までである。
作成した ISO イメージファイルには,復旧作業用のシステムを起動するためのブートイメージが含まれる。この ISO イメージから起動すると復旧環境が立ち上がり,イメージ内のデータを用いてシステムを復元できる。作成した ISO イメージファイルは,バックアップ対象とは別のディスクに保管する。
作成した ISO イメージファイルの検証
アーカイブ作成の処理がエラーなく完了しても,そのイメージからリストアできるとは限らない。作成後は,仮想マシン(VirtualBox,KVM/QEMU など)で ISO イメージファイルから起動し,復旧環境が立ち上がることを確認する。
Relax-and-Recover (ReaR) のインストール (Ubuntu 24.04, Ubuntu 26.04)
APT パッケージマネージャを使用してインストールする。ISO イメージの作成に使う xorriso などは依存パッケージとして併せてインストールされる。
sudo apt update
sudo apt install -y rear
ReaR によるシステム全体の ISO イメージファイル作成
1. バックアップ先ディレクトリの準備:
ISO イメージファイルの保存先を作成する。十分な空き容量があり,かつバックアップ対象のディスクとは物理的に異なるディスク上のファイルシステムに配置する。
# 例: /mnt/backup にマウントされた外部ドライブを保存先とする場合
sudo mkdir -p /mnt/backup
2. 設定ファイルの編集:
ReaR の設定は /etc/rear/local.conf に記述する。
sudo nano /etc/rear/local.conf
次の内容を記述して保存する(Ctrl+O で保存,Ctrl+X で終了)。
OUTPUT=ISO
BACKUP=NETFS
BACKUP_URL=iso:///backup/
OUTPUT_URL=file:///mnt/backup
BACKUP_PROG_EXCLUDE=( "${BACKUP_PROG_EXCLUDE[@]}" '/mnt/backup/*' )
-
OUTPUT=ISO: 復旧用の起動メディアとして ISO イメージファイルを作成する。 -
BACKUP=NETFS: ReaR 内蔵のバックアップ方式(tar によるアーカイブ)を使用する。 -
BACKUP_URL=iso:///backup/: バックアップデータを ISO イメージファイルの中に格納する。 -
OUTPUT_URL=file:///mnt/backup: 作成した ISO イメージファイルのコピー先ディレクトリを指定する。 -
BACKUP_PROG_EXCLUDE: バックアップ対象から除外するパスを指定する。ISO イメージファイルの保存先自体を除外することで,バックアップがバックアップ先を取り込むことを防ぐ。
3. ISO イメージファイルの作成:
sudo rear -v mkbackup
処理が完了すると,/var/lib/rear/output と,OUTPUT_URL で指定したディレクトリに ISO イメージファイルが作成される。
ISO イメージファイルのサイズに上限を設ける場合は,/etc/rear/local.conf に ISO_MAX_SIZE(単位: MB)を記述する。
ReaR によるリストア(復元)
作成した ISO イメージファイルでコンピュータを起動し,メニューから復旧用システムを選択する。root でログインし,次のコマンドを実行して画面の指示に従う。
rear recover
リストア操作はディスクのパーティションを作り直し,システム全体を上書きする。実行する前に手順を理解し,まずテスト環境で検証する。
Mondo Rescue の利用 (Ubuntu 22.04 以前)
Ubuntu 22.04 以前では,上流サイト(http://www.mondorescue.org/ftp/ubuntu/)が配布するバージョン別のパッケージを入手し,dpkg でインストールする。Mondo Rescue が内部で使用する afio は,Ubuntu の multiverse リポジトリに収録されている。
-
mondo: Mondo Rescue 本体。 -
mindi: リストア用メディアのカスタムカーネルと初期 RAM ディスク(initrd)を生成するツール。 -
afio: アーカイブの作成に使用するツール。
システム全体の ISO イメージファイルを作成するコマンドは次の通りである。
sudo mondoarchive -Oi -9 -d /mnt/backup -E '/mnt/backup /tmp/mondo-work' -S /tmp/mondo-work -p $(hostname)-$(date +%Y%m%d)
- オプション
-
sudo: システムファイルへのアクセスやデバイス操作のため,管理者権限が必要である。 -
-O: バックアップを作成する。 -
-i: バックアップメディアとして ISO イメージファイルを使用する。 -
-9: 圧縮レベルを指定する。-0から-9の範囲で,既定値は-3,-0は無圧縮である。圧縮方式は既定で bzip2 であり,-Gで gzip,-Lで lzo に変更できる。 -
-d <ディレクトリパス>: 作成される ISO イメージファイルの保存先ディレクトリを指定する。 -
-E '<パス> ...': バックアップ対象から除外するパスを指定する。複数のパスは空白で区切り,全体を引用符で囲む。ISO イメージファイルの保存先と作業用ディレクトリを除外する。 -
-S <ディレクトリパス>: ISO イメージを組み立てる作業用ディレクトリ(スクラッチディレクトリ)を指定する。一時ファイル用のディレクトリは-Tで指定する。 -
-p <プレフィックス>: 生成されるファイル名の接頭辞を指定する。既定値はmondorescueである。ホスト名と日付を含めると,どのシステムのいつのバックアップかを識別しやすい。 -
-s <サイズ>: ISO イメージファイルを指定したサイズで分割する(例:-s 4480m)。CD/DVD など容量制限のあるメディアに書き込む場合に使用する。
-
コマンド実行後,-d で指定したディレクトリに プレフィックス-1.iso,プレフィックス-2.iso のようなファイルが作成される。ログは /var/log/mondoarchive.log に記録される。
リストアするには,作成した ISO イメージファイルでコンピュータを起動し,表示される指示に従って mondorestore を実行する。