月: 2016年2月

CentOS6の特定のサーバでMondo Rescueが動かなかった件

CentOS6の特定のサーバでMondo Rescueが動かなかった件

ログを見ると

mkisofs: Uh oh, I cant find the boot image ‘isolinux.bin’

と出ていた。

かなりいろいろ調べてみたけどまったくわからなかった。

ふと再度バージョンを確認すると・・・

mindiのバージョンだけmondorescue-testのものになってた。

# mindi -v
Mindi v3.0.220160107015217-r3494M
# mondoarchive -v
mondoarchive v3.2.1-r3456

最初のインストール時にmondoをmondorescue-testから入れて、
それから削除してとかやってたからmindiとバージョンがあわなく
なっちゃったんだな。

入れなおし後。

# mindi -v
Mindi v3.0.1-r3456
# mondoarchive -v
mondoarchive v3.2.1-r3456

それにしてもエラーメッセージからはまったく気づけなかった。。

さくらVPSのCentOS6をMondRescueでさくらVPSにリストアしてみた。

さくらVPSのCentOS6をMondRescueでリストアしてみた。

無料お試しのVPS2Gを借りて、デフォルトインストールされている
CentOS6をバックアップしてisoをダウンロードしてから、
同じサーバに対してisoイメージインストールでリストアを実験してみた。

一応再度インストール方法から。

今回の対象はCentOS release 6.7です。

# wget ftp://ftp.mondorescue.org//rhel/6/x86_64/mondorescue.repo
# mv mondorescue.repo /etc/yum.repos.d/
# yum -y install dvd+rw-tools
# yum install --enablerepo=mondorescue mondo
# yum install lzop
# cd /
# mkdir backup
# mondoarchive -Oi -L -N -s 4480m -d /backup -E /backup -p sakura-`hostname`-`date +%Y-%m-%d`

出来たisoファイルをダウンロードしておく。

その後、さくらVPSの管理画面にログインして「OSインストール」から「ISOイメージインストール」を選択する。
「SFTP」のアカウントを作成するボタンがあるのでクリックしてISOイメージアップロード先の情報を取得する。

SFTPで接続して「iso」フォルダに先ほどダウンロードしておいたisoイメージファイルをアップロードする。

アップロード終了後に再度「OSインストール」から「ISOイメージインストール」に進むと、
アップロードしたisoファイルが表示されているはずなので内容を確認してさらに「VirtIOを有効にする」の
チェックを外してから「設定内容を確認する」をクリック。
確認画面が出るので「インストールを実行する」をクリックしてリストアを開始する。

※「VirtIOを有効にする」にチェックが入っていた状態だと「expert」モードの時に「fdisk -l」しても
デバイスが無いも表示されなかったので、チェックを外した。

Mondo Rescueの画面になるので「expert」を入力する。

boot: expert
sh-4.1# fdisk -l

/dev/sdaとかが表示されているはず。

sh-4.1# vi /tmp/mountlist.txt

ファイル内の「vda」の箇所をすべて「sda」に変更する。

sh-4.1# mondorestore

「Automatically」を選択

リストアが始まる。

たぶんこの時に画面の下に

Formatting /dev/sda3 as ext4...OK
Formatting /dev/sda1 as ext4...OK
Formatting /dev/sda2 as swap...OK
All partitions were mounted OK.

が出れば順調に進んでいるはず。

次に

You will now be able to re-generate your initrd.
This is especially useful if you changed of hardware configuration,log: socket ignored cloned, made P2V, used multipath…
Do you need to do it ?

と出るので「Yes」を選択。

initrdの再作成の画面

次に

You’ll now be chrooted under your future / partition.
Go under /boot and rebuild your init(rd|ramfs) with
mkinitrd -f -v initrd-2.x.y.img 2.x.y
e.g.
or initramfs, dracut, … Then type exit to finish

と出るので「OK」を選択。

mkinitrdの再作成の画面

プロンプトでinitrdの再構築を行う。

sh-4.1# cd /boot/
sh-4.1# ls -lhtr vmlinuz*

一番下のバージョンのimgでinitrdを再生成。
今回はこんな感じだった。

sh-4.1# mkinitrd -f -v initramfs-2.6.32-573.12.1.el6.x86_64.img 2.6.32-573.12.1.el6.x86_64

再構築が終わったら

sh-4.1# exit

すこし待つと、

Because of bugs in GRUB’s own installer,
GRUB was not installed properly. Please install the boot loadermanually now,
using this chroot()’ed shell prompt. Type ‘exit’ when you have finished.

と出るので「OK」を選択。

GRUBのバグの再作成の画面

 

grubのインストールを試みる。

sh-4.1# grub-install /dev/sda
/dev/sda does not have any corresponding BIOS drive./boo

とエラーが出てしまったのでいろいろ捜索。

「/etc/mtab」に「vda」の記述が残っていることを発見したのでこれを修正する。

sh-4.1# vi /etc/mtab

それと「/boot/grub/device.map」に「vda」の記述が残っていることを発見したのでこれを修正する。

sh-4.1# vi /boot/grub/device.map

再度「grub-install」を実行。

sh-4.1# grub-install /dev/sda
・・・
(hd0)   /dev/sda

このように最後に表示されればOKっぽい。

プロンプトを抜ける。

sh-4.1# exit

最後に

Mondo has restored your system.
・・・

と表示されるので「OK」を選択。

プロンプトを抜ける。

sh-4.1# exit

その後何も起きないので、VPSの管理画面から
「強制再起動」を行う。

ログインプロンプトが表示されればOK。

今回は同じサーバにリストアしたので、ネットワーク関係の
再設定はいらないはず。

違うVPSにリストアする場合はUUID関係とかも調整しないと
いけないのかもしれない。。

今回同じサーバにも関わらず「Automatically」で全部できなかったのは
バックアップの時にカーネル検出を失敗していたのかもしれないと↓の
ブログを拝見して思いました。

さくらのVPSでOSイメージを作ってまるごとコピー

あと、VirtIOでも大丈夫って書いてある記事もあったのだけど
なんでできなかったのかは不明。

とりあえず、有事の際にローカルの仮想環境や元のVPSで
リストアできるところまでは検証できた。

Mondo Rescue リストアの実験:VirtualBoxにさくらVPS CentOS5をリストア

Mondo Rescue VirtualBoxにさくらVPSのCentOS5のリストアを行った時の記録

同じ環境にリストアするならあっさりできるかもしれないけど、
構成が違った場合に難易度が跳ね上がったので記録しておく。

参考サイトを大量に見ながら試行錯誤してできたので、以下の手順は
実際に行った順番とか違うかもしれない。。

リストア手順

昔のVPSでHDDが20GBの時のものなので、VirtualBoxのHDDのサイズは
とりあえず25GBで準備。

リカバリーのisoを設定して起動する。

ディスクの構成が違うので「expart」モードで実行

fstab -l でデバイスファイルの状態確認。
「/dev/sda」があるはず

# vi tmp/mountlist.txt

昔のVPSなので「/dev/hda1」とかになってる箇所を「/dev/sda1」という風に
「hda」を「sda」にすべて変更。

# mondorestore <- コマンドを実行

Automaticallyを選択して実行

「initrd」の再生成のアラートが出るので「OK」する。

「/」にchrootして「/boot」の下でmkinitrdを実行する

# cd /boot
# mkinitrd -f -v initrd-2.x.y.img 2.x.y

※このとき一番新しいものを選ぶ。最初間違って古いものを指定してしまい、起動時にkernel panicになってパニックになった。

# exit <- シェルを抜ける。

サーバを落としてisoイメージを抜く。

サーバの起動をする。

起動すればOK。ネットワーク関係の設定をし直す。

Kernel panicの場合はCentOSのインストールisoを用意してRescueモードを実行し、
grubとinitrdを再作成する。

自分はKernel panicになってしまったのでRescueモードで起動して修正作業を行った。

# chroot /mnt/sysimage

そんでdevice.mapの記述を変更。

# vi /boot/grub/device.map

保存してからgrub-installを実行

# grub-install /dev/sda

その後間違ったinitrdの再生成に。

# cd /boot
# ls -lhtr vmlinuz*

で一番下のものをメモ。
今回は

vmlinuz-2.6.18-348.6.1.el5 だった
initrdの作り直し。

# mkinitrd -f -v /boot/initrd-2.6.18-348.6.1.el5.img 2.6.18-348.6.1.el5
・・・
# exit
# exit

で再起動しちゃうのでサーバを落としてisoを取り外してからサーバを起動。

やっと動いた。
実際には動くまでに「Automatically」、「Interacively 」とかを何度も試し、
途中であきらめたりしながら4日間くらいかかって起動するようになりました・・・。
起動プロセスやディスク、レスキューモードとか普段めったに触らないところだったので
いちいち勉強しないといけなかった。でも実際まだよくわかっていない。

緊急用にmondo rescueでリカバリメディアを作成している人は急にリストアを
依頼されて困らないように練習しておく必要があるかもです。

これで一応ローカルでアップデートの実験とかできる。

【リストア参考サイト】
非常にお世話になりました。ありがとうございました。

■Mondo Rescueによるリストアを失敗しないために。

■さくらインターネットのVPS環境へMondo Rescueでリストアする方法 (Automatically編)

■さくらインターネットのVPS環境へMondo Rescueでリストアする方法 (Interactively編)

■さくらVPS環境をMondorescueでバックアップしてVmwareにリカバリする

■Mondo Rescue

■レスキューモードでGrubリカバリ

■起動時にkernel panicが発生する場合の対処法

Mondo RescueをCentOS5で試してエラーが出た。

Mondo RescueをCentOS5で試してエラーが出た。

■OSのバージョン
CentOS release 5.9 (Final)

■その時点での最新をインストール

# mondoarchive --version
mondoarchive v3.2.1-r3456
See man page for help
# mindi --version
Mindi v3.0.1-r3456
# mkisofs --version
mkisofs 2.01 (cpu-pc-linux-gnu)

■実行!

# mondoarchive -Oi -gF -s 4480m -d /backup -E /backup

■エラーが発生。logに以下のように…faildが・・・。

DBG3: [Main] libmondo-fork.c-&gt;run_external_binary_with_percentage_indicator_NEW#685: Parent res = 256
INFO: Call to mkisofs to make ISO (ISO #1) ...failed
DBG1: [Main] libmondo-archive.c-&gt;make_iso_fs#1883: WARNING - make_iso_fs returned an error
DBG2: [Main] libmondo-archive.c-&gt;write_iso_and_go_on#3223: Retrying, at user's request...

■以下の情報を発見。
[Mondo-devel] Newest mondo error calling mkisofs

Yes, this is a regression for non RHEL 7 versions 🙁 Please use the
test of 3.2.2 that will be out soon to foix that + some other issues
reported since.

Cf: ftp://ftp.mondorescue.org/test/rhel/5

RHEL7以外のものはダメらしいのでテストの3.2.2を入れて試す。

ftp://ftp.mondorescue.org/test/rhel/5/x86_64/
mondorescue-test.repo

■リポジトリを削除してmondorescue-test.repoを入れなおす。

# yum --enablerepo=mondorescue-test install mondo
[root@www15172u ~]# mondoarchive --version
mondoarchive v3.2.220151218023212-r3492

■実行!

# mondoarchive -Oi -gF -s 4480m -d /backup -E /backup

出来た。
とりあえずこれで凌ぐ。

リストアできるかな~

 

※その後CentOS6環境でも「mondoarchive」を試すが、こちらは「3.2.1」、「3.2.2」でもエラーが出てメディアの作成が完了しない・・・。
今のところどうしていいのかわからず途方に暮れています。⇒mindiのバージョンがずれてました・・・。