[linux]マルチパスSANブート+ボリュームコピー環境でのリストア方法

Linux(RHEL)+マルチパスSANブート+ディスク装置のボリュームコピー環境でのシステムリストア方法。
最近では、ディスク装置の機能として持っている、論理ボリュームを丸ごとコピーする機能を利用して、システムバックアップを取得するのが、お手軽バックアップとして流行っている模様。
これを利用すると、コピー元のディスクがつぶれた場合、コピー先のディスクをホストに見せるようにするだけで(プレゼントやらマッピングやらマスキングやら・・・)リストアできるように見えるが、LInux+マルチパスSANブート環境だと簡単にはいかない。
その解決方法を以下に示す。
※ディスク装置はHP MSAを想定
※このバックアップ方法は、業務を停止することなくバックアップを取得できるメリットがある、とメーカーは言うが、OSが何しようとが関係なしに、ディスク装置側で勝手にバックアップをとってしまうため、不整合なファイルシステムの状態をとってしまうかもしれないリスクがある。(例えば、ファイル書き込み中とか・・・)


1.コピー先のディスクを、ホストに見せる(MSAの場合はマッピング)。これは当然
2.ホストをブートしてみる・・・・
3.するとinitrd処理中にエラーになり、やがてVGの重複が発生し、レスキューのためのパスワード入力プロンプトが表示されて停止する
(エラーになる原因は、ボリュームコピーによりマルチパスを構成するためのwwidが実際の物と異なっているので、マルチパスが構成できず全パスが個別の重複したディスクとして見えてしまう。マルチパスはwwidをヒントに同一ディスクの複数パスを探し出す。)
# ここで、あきらめる人が多いはず・・・
4.rootのパスワードを入力する
5./bootであるデバイスをマウントする(但し/bootのファイルシステムがパーティションの上に直接乗っているときのみ。LVM不可!)
普段/bootが/dev/mapper/mpath0p1なら、/dev/sda1。(sdb1でもsdc1でもsdd1でも可。実体は同じ)

# mount /dev/sda1 /boot

6.initrdを展開する
 initrdの中のファイルをいくつか編集するので、イメージを展開する。

# cd /boot
# cp -p initrd-xxxxx.img initrd-xxxxx.img.bk
# mkdir tmp
# cd tmp
# zcat initrd-xxxxx.img | cpio -i -o

7.論理ボリュームのSCSIシリアル番号(wwid)を調べる
/dev/disk/by-id/ディレクトリにあるシンボリックリンク名の頭「scsi-」を削ったものが論理ボリュームのSCSIシリアル番号。

# ls /dev/disk/by-id/
scsi-1111222233334444aaaabbbbccccdddd
scsi-1111222233334444aaaabbbbccccdddd-part1
scsi-1111222233334444aaaabbbbccccdddd-part2

上の赤太字がSCSIシリアル番号。
8. initスクリプト中のmultipathコマンドで指定してある論理ボリュームのSCSIシリアル番号(wwid)をコピー先ディスクの番号に書き換える(下、赤斜体文字箇所)。

# vi init
:(省略)
/bin/multipath -v 0 1111222233334444aaaabbbbccccdddd
:(省略)

9.etc/multipath.conf中の信頼する論理ボリュームのSCSIシリアル番号(wwid)を新しい番号に書き換える(下、赤斜体文字箇所)。

vi etc/multipath.conf
blacklist_exceptions {
wwid “1111222233334444aaaabbbbccccdddd
}

10.var/lib/multipath/bindingsファイル中のデバイス名エイリアスに紐づける論理ボリュームのSCSIシリアル番号(wwid)をコピー先の番号に書き換える(下、赤斜体文字箇所)。

# vi var/lib/multipath/bindings
mpath0 1111222233334444aaaabbbbccccdddd

 (このファイルで、wwid:1111222233334444aaaabbbbccccddddのディスクはmpath0を使用すると定義している)
11.initrd再作成
 次回以降の起動で使用できるように、編集したinitrdを再作成(イメージ化)する。

# find . | cpio –quiet -o -c | gzip -c > ../initrd-xxxxx.img

12.再起動

# exit

以上で、めでたく起動できる。

Linuxで、ISOイメージからUSBブートLinux CD を作成

Linuxで、ISOイメージからUSBブートLinux CD を作成
CD-ROM(DVD)ドライブがないマシンで、レスキューモードで起動したいときなどに有効。(そのためだけに外付けCD-ROMドライブを買うのがもったいないなど)
USBメモリは、フラッシュメモリーやSDカード、コンパクトフラッシュ(CF)など。
1.USBメモリに領域作成

# fdisk /dev/sda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): p
Disk /dev/sda: 260 MB, 260046848 bytes
8 heads, 62 sectors/track, 1024 cylinders
Units = シリンダ数 of 496 * 512 = 253952 bytes
デバイス Boot Start End Blocks Id System
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-1024, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-1024, default 1024):
Using default value 1024
コマンド (m でヘルプ): a
領域番号 (1-4): 1
コマンド (m でヘルプ): p
Disk /dev/sda: 260 MB, 260046848 bytes
8 heads, 62 sectors/track, 1024 cylinders
Units = シリンダ数 of 496 * 512 = 253952 bytes
デバイス Boot Start End Blocks Id System
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

2.USBメモリにext3ファイルシステム作成

# mke2fs -j /dev/sda1

3.Netwide Assembler インストール
後のsyslinuxのコンパイル時に必要

# yum install nasm.i386

4.syslinux インストール
syslinuxのサイトURL
http://syslinux.zytor.com
http://freshmeat.net/projects/syslinux/

# wget http://freshmeat.net/redir/syslinux/10177/url_tgz/syslinux-3.52.tar.gz
# tar zxvf syslinux-3.52.tar.gz
# cd syslinux-3.52
# make

5.extlinuxでUSBメモリにブートローダ(第2段階目)書き込み
extlinuxはsyslinuxのext2/3ファイルシステム用のサブセット

# cd extlinux
# mount /dev/sda1 /mnt/flash
# mkdir -p /mnt/flash/isolinux #・・・・isoイメージのディレクトリ構成にあわせる
# ./extlinux -i /mnt/flash/isolinux
/mnt/flash/isolinux is device /dev/sda1

6.USBメモリのマスターブートレコード(MBR)にブートローダ(第1段階目)書き込み
これを書き込まないと起動できない!

# cat ../mbr/mbr.bin > /dev/sda

7.isoイメージの内容のコピー

# mkdir /mnt/isoimg
# mount -o loop INSERT-1.3.9b_en.iso /mnt/isoimg
# cp -pR /mnt/isoimg/* /mnt/flash
# sync

8.USBメモリに書き込んだブートローダーの設定ファイルの名前変更

# mv /mnt/flash/isolinux/isolinux.cfg /mnt/flash/isolinux/extlinux.conf

9. ブート検証
USBメモリをさしたままマシンを再起動する
BIOS設定画面を起動し、ブートデバイスを「USB-HDD」に。「USB-HDD」が選択できない場合、BIOSがUSBメモリブートに対応していない・・・