2012秋のファイルサーバ復旧 18 Mondo Rescue でバックアップ

前回 puppy で dd でバックアップして今度はレストア!と張り切ってましたが、復旧する際のパーティションサイズやらMBRやらがあって、手順が増えてしまうのでやめました。
もっといい方法がみつかったのです。

Mondo Rescue によるバックアップ、レストアです。
Mondo Rescue を使うとレストアはDVDからブートすればいいらしいです。
なんという簡単な方法!!!

では試してみます。

最初に Mondo Rescue のインストールから。
ググるとミナサンrpmを落としてきて入れているようです。
CentOS用のものがないかららしいです。
が、ソコは当然redhatのものも使えちゃうのでコチラの方がやっている方法を参考にします。

Linux参考ブログ: mondo rescueのインストール(CentOS5)

不要なものは入れたくないので参考にさせてもらいつつも下から順番に入れていってみます。
yumなので依存関係があれば勝手に解消されるはずです。

yumのリポジトリ設定を作成してやってみましたが、エラーになりました。

# yum install mindi
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * Webmin: download.webmin.com
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
ftp://ftp.mondorescue.org/rhel/5/repodata/repomd.xml: [Errno 4] IOError: [Errno ftp error] 550 Failed to change directory.
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: mondorescue. Please verify its path and try again



パスが違うといってます。
直接ftpサーバを見てみると

ftp://ftp.mondorescue.org/rhel/5/repodata/repomd.xml

ではなく

ftp://ftp.mondorescue.org/rhel/5/x86_64/repodata/repomd.xml

が正しいパスになるようなので、リポジトリ設定は下記のようにしました。

# vi /etc/yum.repos.d/mondorescue.repo

[mondorescue]
name=rhel 5 - mondorescue Vanilla Packages
baseurl=ftp://ftp.mondorescue.org/rhel/5/x86_64
enabled=1
gpgcheck=0

そしてインストールです。

# yum install mindi
(略)
Installed:
  mindi.x86_64 0:2.1.3-1.rhel5

Dependency Installed:
  bzip2.x86_64 0:1.0.3-6.el5_5               dosfstools.x86_64 0:2.11-9.el5
  mindi-busybox.x86_64 0:1.18.5-1.rhel5      mkisofs.x86_64 9:2.01-10.7.el5
  mtools.x86_64 0:3.9.10-2.fc6               parted.x86_64 0:1.8.1-29.el5
  tcsh.x86_64 0:6.14-17.el5_5.2

Complete!

完了しました。
先程の記事で事前に入れたもののうち、ここで自動で入れてくれたのは

  • mkisofs
  • mindi-busybo

だけで、

  • mondo

は入れてくれなかったようです。
ダメ元で実行してみますが、

# mondoarchive
-bash: mondoarchive: command not found

やっぱりだめでした。
mondoをいれてみます。

# yum install mondo
(略)
Installed:
  mondo.x86_64 0:3.0.2-1.rhel5

Dependency Installed:
  afio.x86_64 0:2.5-1.rhel5                buffer.x86_64 0:1.19-4.rhel5
  cdrecord.x86_64 9:2.01-10.7.el5          syslinux.x86_64 0:3.11-7

これでさらに依存関係のあるものが自動で入れられました。

  • afio
  • buffer
  • cdrecord

です。
残っているのは

  • dvd+rw-tools
  • izo
  • izop

ですが、無視しmondoを起動してみます。

# mondoarchive

GUIが起動しました。
なにやらグチャっとなってます。
が、なんとか読み取れるのでGUIからちょっと試してみます。

mondo GUI スタート画面で Hard diskを選択

ISO 出力先ディレクトリ指定を促されます

/var/cstorage/00/main/data/20121107.iso を入力

ここでlzoがでてきました。
圧縮方式だったんですね。
入れてないので bzip2 か gzip にするしかないです。
先頭にある bzip2 にします。

圧縮方式は bzip2 を選択

圧縮率はマキシマム

ISOのサイズは標準的なDVDなのでそのまま

ISOファイル名を指定

バックアップするパスは / を指定

ここで背景に不穏なメッセージが登場しました。
ストレージ用ディスクが正常じゃないといってます。
嫌な感じです。
ディスクまるごとパーティションにしちゃっているのがいけないのかもしれません。

メモ: 3TBのドライブはfdiskじゃだめらしい

除外するパスの指定を要求してきました

/tmp と /proc は自動的に除外されると書かれていますね。

除外するパスに /var/storage を指定

テンポラリディレクトリも要求してきました

一般的な /tmp を指定

何に使うのかわからないスクラッチディレクトリも /tmp を指定

追加で必要なオプションを聞かれたのでYes

バックアップ後のベリファイはYes

特殊なカーネルを使っているか聞かれるけどNo

処理を進めちゃうけどいいかというので当然Yes

なにやら処理中

エラーになりました。

Initializing...
See /var/log/mondoarchive.log for details of backup run.
Checking sanity of your Linux distribution
ディスク /dev/sdb は正常な領域テーブルを含んでいません
ディスク /dev/sdc は正常な領域テーブルを含んでいません
ディスク /dev/sdd は正常な領域テーブルを含んでいません
ディスク /dev/sde は正常な領域テーブルを含んでいません
ディスク /dev/sdf は正常な領域テーブルを含んでいません
ディスク /dev/sdg は正常な領域テーブルを含んでいません
Done.
---FATALERROR--- Failed to copy LAST-FILELIST-NUMBER to scratchdir
If you require technical support, please contact the mailing list.
See http://www.mondorescue.org for details.
The list's members can help you, if you attach that file to your e-mail.
Log file: /var/log/mondoarchive.log
Mondo has aborted.
Execution run ended; result=254
Type 'less /var/log/mondoarchive.log' to see the output log

ログを見てみると変なところがいくつか・・・

なんかパスが間違ってました。

isodir = /var/cstorage/00/main/data/20121107.iso
tmpdir=/vtmp; scratchdir=/vtmp

まあ、cstorage のは自分でまちがってたようです。
この2つのディレクトリは要らないので削除しておきます。

さらに指定してもいない場所に勝手になにかディレクトリがつくられてます。
しかもストレージ用ディスクの中に。

/var/storage/00/mirror/mondo.tmp.ALQCCg

変更したはずなのに変更されていない感じです。
要らないので削除です。

そしてエラーはなんだったのか探してみるとこんな感じのようです。

(略)
--------------------------------end of output------------------------------
...ran with res=256
[Main] newt-specific.c->fatal_error#308: Fatal error received - 'Failed to copy LAST-FILELIST-NUMBER to scratchdir'
  [Main] newt-specific.c->fatal_error#326: OK, I think I'm the main PID.
 [Main] newt-specific.c->fatal_error#334: I'm going to do some cleaning up now.
   [Main] newt-specific.c->fatal_error#335: killall mindi 2> /dev/null
running: ps auxww | grep " /mondo/do-not " | grep -v "grep" | awk '{print $2;}' > /vtmp/mondo-run-prog-thing.tmp 2> /vtmp/mondo-run-prog-thing.err

(略)


-------FATAL ERROR---------
Failed to copy LAST-FILELIST-NUMBER to scratchdir
running: umount -d /mnt/cdrom > /vtmp/mondo-run-prog-thing.tmp 2> /vtmp/mondo-run-prog-thing.err
(略)

なんだかわかりません。
ファイルリストナンバーのコピーに失敗とでてます。

そしてGUIはパスが変になったりして信用ならないのでやはりコマンドラインから行く事にします。

が、もう朝なので寝ます。
続きはまた明日。

コメント