« 今日のお天気とごはん | トップページ | 今日のお天気とごはん »

2008年8月22日 (金)

Linuxなサーバの複製をつくる(udev編)

サーバを立てるとき、もう1台同じ構成で立てて、バックアップにすることがある。あと、開発用と、本番用と2つ作ったり。同じものを作るには、もう一回、同じ手順でインストールすりゃいいんだけど、カスタマイズしてたり、あとから追加したソフトとか、色々いじったりしてたら、

マンドクセー

ってことで、まるっこ複製を作ってみた。

問題は、LVMとudevだが、LVMは使ってないので、キニシナイ(w

あ、Vine 4.xでも、LVMとudevを採用してます。LVMは使ってないだけ(w

udevつかう前は、まるっこdumpして、restoreして、GRUB(つか当時は、liloかー?(w )入れたら終わりー、みたいな感じだったんだが、今回はちょいとおまじないが必要。
それが、

/sbin/start_udev

これを実行しておかないとだめ。

これさえ分かれば、あとはひたすら吸い上げて、戻せば(・∀・)イイ!...はず。

んで、手元にあるサーバには、テープがついているので、それにぜーんぶ吸い上げて、別のサーバに戻してみるテスト。

前提条件として、レスキューモードで、HDDとかテープとかみんな見えてること。認識してなきゃ、デバイスドライバを食わせて、なんとしても認識させる!

こればっかりは、環境によってエロエ^H ...いろいろなんで、自力でガンガレ!

NICが見えてるなら、NFSでも(・∀・)イイ!よ。その場合は、下の手順は読み替えてね(はーと)。

前提条件がクリアできたら、さっそくやってみる。
手順は、こんな感じ。

まずは、引越し元のサーバでの作業。

01. 元のサーバで、パーティション関連情報を、/root に保存する

# sfdisk -d /dev/sda > /root/sfdisk.sda.txt

この情報は、あとで、引越し先のサーバで、sfdiskに食べさせるので重要。

02. ラベル情報を、/root に保存する

# mount > /root/mount.sda.txt
# cat /etc/fstab > /root/fstab.sda.txt

03. サーバにCD入れて、レスキューモードで起動する

boot: linux rescue

RHEL5だと、言語は、Englishで、キーボードは、jp106、ネットワークは使わないので、Setup NetworkingはNo。もし、NFS経由で、dump/restoreするなら、Yesで。今回は、TAPEなんで、No。
んで、マウントするか?と聞いてくるんで(Rescueの画面)、Skipを選択する。ここ大事。

まぁ、他のディストリでもよく似てると思うけど。

04. テープ装置が認識されてる?

# lsmod | grep st
# mt -f /dev/nst0 status

ちゃんと見えてないとアウトね。

05. パーティションごとにバックアップ開始!

# dump -b32 -f /dev/nst0 /dev/sda3

まずは、/(ルート)パーティションのバックアップ。あとは、順番にバックアップしていく。戻す(restore)ときに、順番どおり戻さないとダメなので、順番はメモってね。

06. テープの巻き戻しと取り出し

# mt -f /dev/nst0 rewind
# mt -f /dev/nst0 offline

07. レスキューモードの終了

# exit
# exit

2回、exitが必要。
これで、テープにみーんな吸い上げることができたので、引越し先のサーバに移動して、以下の作業を続行。

01. レスキューモードで起動

(ry

02. パーティション情報の復元

引越し元で保存したパーティション情報を、テープから取り出して、sfdiskに食べさせる。

まずは、sfdisk.sda.txt の取り出しから。
念のためテープを巻き戻して...

# mt -f /dev/nst0 rewind

対話型インターフェースでレストアするファイルを指定して取り出す。

# restore -if /dev/nst0
restore > add root/sfdisk.sda.txt
restore > extract
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1 ← テープ番号を入力
set owner/mode for '.'? [yn] y ← とりあえず、y を入力(w
restore > quit

取り出したファイルを元に、パーティションを復元する。

# sfdisk /dev/sda < /root/sfdisk.sda.txt

復元されたパーティションを確認。

# sfdisk -d /dev/sda
# cat /root/sfdisk.sda.txt

まったく同じだよね?

じゃ、パーティション情報を反映させるため再起動しよう。

# exit
# exit

パーティションができたので、それぞれのパーティションにテープから戻すよーん。

01. レスキューモードで起動

(ry

02. パーティションのフォーマット

# mke2fs -j /dev/sda1
# mke2fs -j /dev/sda3

残りも順次フォーマット。あ、swap(今回は、/dev/sda2)はいいから。

03. リストア対象パーティションをマウントして、リストア

# mkdir /mnt/sysimages
# mount /dev/sda3 /mnt/sysimages
# cd /mnt/sysimages
# mt -f /dev/nst0 rewind
# restore rf /dev/nst0

これは、/(ルート)を戻す手順。続けて、/boot を戻す。...の前に、テープを次のデータ(つまり、/boot)に合わせて頭出しておく。

# mt -f /dev/nst0 fsf 1
# mount /dev/sda1 /mnt/sysimages/boot
# cd /mnt/sysimages/boot
# restore rf /dev/nst0

残りのパーティションも順番に戻す。あ、ちゃんとバックアップするときに、順番をメモしたよね?その通りに、レストアすること!

04. テープの巻き戻しと取り出し

# mt -f /dev/nst0 rewind
# mt -f /dev/nst0 offline

終わったら、巻き戻して取り出しておく。

05. SWAPパーティションの作成

# mkswap /dev/sda2

今回は、/dev/sda2 がswap。

06. ブートローダ(GRUB)の書き込み

ここで、udevがらみの操作が続く。面倒だけどもう少しだ!ガンガレ!

まず、ルートファイルシステムにchroot

# chroot /mnt/sysimages

次に、/proc, /sys, /devファイルシステムをマウントし、udev開始

# mount /proc
# mount -t sysfs none /sys
# mount -o mode=0755 -t tmpfs none /dev
# /sbin/start_udev

/boot ファイルシステムがマウントされていることを確認して...

# ls -al /boot

/etc/mtabファイルを/proc/mountsファイルにより更新(つか上書きコピー)して...

# cp /proc/mounts /etc/mtab

いよいよ、ブートローダ(GRUB)をMBRに書き込む...んだけど、/(ルート)ディレクトリと、/boot ディレクトリが別々になるディストリビューション(Vineだね♪)は、必ず、--root-directory= で、/(ルート)の場所を指定すること!

# grub-install --root-directory=/ /dev/sda

ちゃんと、書けた?さぁ、あともう少しだ。

07. ラベルの書き込み

# e2label /dev/sda1  /boot
# e2label /dev/sda3  /

以下、同様にラベルをつける。

元のサーバで、/rootに、fstab.sda.txt をリダイレクトで保存してたら、それと比較するといいね。
んで、ちゃんとラベルがついたかどうか確認。

# cat /etc/fstab

# e2label /dev/sda1
# e2label /dev/sda3

さぁ、いよいよ、再起動して引越し先サーバから起動してみます!

# exit
# exit

wktkでブートするのを眺めていると、一度、ファイルの整合性をとるために勝手にリブートします。
焦るなよ(w 次のブートで、ログオン画面が...

キターーーーーー(゜∀゜)ーーーーーー!

おめでとう!ミッション成功だ!(w

念のため、/var/log/messages とかdmesg とか見て、おかしなエラーがでてないか確認しておこう。各パーティションにある、restoresymtable は削除しても(・∀・)イイ!よ。

あ、NICがうまくifupしないときは、一旦設定を消して、設定しなおすように。

|

« 今日のお天気とごはん | トップページ | 今日のお天気とごはん »

Linux」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/163245/42264262

この記事へのトラックバック一覧です: Linuxなサーバの複製をつくる(udev編):

« 今日のお天気とごはん | トップページ | 今日のお天気とごはん »