5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linux】restoreコマンドでOS復旧

Last updated at Posted at 2020-07-17

dump/restoreコマンドを用いたシステム領域復旧の話。

IBMCloudではImagetemplateが使用できるので、ポータル上からポチポチするだけでOS領域のみのバックアップ・リストアできて楽です。が、以下の懸念点があります。(2018/08/03時点)

・テンプレートの保管に月$25/GBかかる
・OSのパスワードが新しいものに変わる
・IPアドレスなどネットワーク周りの設定が初期化される
・OSリロードという策もあるが、システムの領域は真っさらになる上にカーネルバージョンも強制的に最新のものになる

上記のようにクラウド独自のバックアップサービス使用が困難、かつLinuxバックアップサーバ―が1台しかないとかだと、バックアップサーバ―自体のシステム復旧が必要になった時どうする?となります。

てことで、ここでは"OSレベルでdump/restoreコマンドを使用した復旧手順"です。
流れとしては、

- ①dumpコマンドでOS領域(/と/boot)を2ndディスクにバックアップしておく (バックアップ先をNFSとかにしてもOK) 

- ②メディアからブートしてレスキューモード起動 (クラウドのレスキューブートを使用) 

- ③リストア先に合わせてパーティション作成

- ④/と/bootのファイルシステム作成

- ⑤マウントしてリストア実行

- ⑥/dev,/proc,/sysをバインド

- ⑦リストアした/システムをルートにする

- ⑧/boot/grub2/grub.cfgを書き換える

- ⑨/etc/fstabを書き換える

- ⑩GRUB2をPReP Bootデバイス(/dev/xvda)に再インストール

- ⑪メディアを外してリブート

いや~めんどくさい。

事前準備

・OS領域はIBMCloudのVSIデバイス/dev/xvdaとします。
・バックアップ先として/bkupに2ndDISKのFSをマウントしているものとします。

まずパーティションやLVM情報を事前に取得しておきましょう。

# sfdisk -d /dev/xvda > /bkup/sfdis.dat
# pvdisplay > /bkup/pvdis.dat
# vgdisplay > /bkup/vgdis.dat
# cat /etc/fstab > /bkup/fstab.dat
# mount > /bkup/mount.dat
# blkid > /bkup/blkid.dat
# vgcfgbackup VG名 -f /bkup/vgcfg.dat (/領域にLVMが組まれている場合は実施)

dumpコマンドがない場合はインストール

# yum install dump

注意ーーーーー
※dumpはFSタイプが"EXT"でのみ使用できます。
※IBMCloudのVSIのタイプに合わせて本手順では"EXT"とします。
※FSタイプを確認して、もし"XFS"であれば"xfsdump"をインストールしてください。オプションも若干変わります。
ーーーーーーーーーー

①dumpコマンドでバックアップを取る。

# dump 0 -f /bkup/root.dump /dev/xvda2
# dump 0 -f /bkup/boot.dump /dev/xvda1

これでバックアップ完了です。
/bkup以下を確認して.dumpファイルがあることを確認しましょう。

②メディアからレスキューモード起動

物理ならメディアをぶち込み
仮想環境なら管理画面からISOマウント
クラウドならカスタマーポータルからレスキューブートします。(IBM Cloud)

ちなみにメディアのバージョンが古すぎるとこの後の手順でひっかかるので、なるべくリストアするシステムと近いバージョンにしましょう。同じメジャーバージョンなら安心です。
また、レスキューメディアとリストアシステムのアーキテクチャ(64,32bit)も合わせておく必要があります。

③パーティション作成

ISOブートしてKVMコンソールでレスキューモードに入りましょう。
CentOS7ではTrouble shootingからRescue a CentOS systemを選択します。
20180615134900.jpg

sh-4.2#

などのプロンプトがでてくればOK
2ndDISKのデバイスはみえているはずなので、
適当なリストアファイル用ディレクトリを作成します。(本手順では/bkup)

リストアファイルが置いてある/bkupをマウント

# mount /dev/vg_bkup/lv_bkup /bkup

もしデバイスのstateがnot availableになっててできない場合は有効化。

# lvchange --available y /dev/vg_bkup/lv_bkup

バックアップしたファイルが見えているか確認。

# ls -l /bkup

事前準備で取得したsfdis.datから構成情報をリストア

# sfdisk --force /dev/xvda < /bkup/sfdis.dat

※事前準備でvgcfgbackupしていた場合は以下も実施

# lvm vgscan
# lvm vgcfgrestore -f /bkup/vgcfg.dat ${VGNAME}

④ファイルシステム再作成

/と/bootのシステムを再作成します。FSタイプは実機に合わせましょう。

# mkfs.ext3 -f /dev/xvda1
# mkfs.ext3 -f /dev/xvda2

⑤マウントしてリストア実行

リストア対象のファイルシステムをマウントしておく必要があるので、一時的なマウント先を作成します。名前やパスはなんでもいいです。

# mkdir /restore

rootをマウントしてリストア
※デバイス名に注意

# mount /dev/xvda2 /restore
# cd /restore
# restore -rf /bkup/root.dump

一次領域アンマウント

# cd /
# umount /restore

bootをマウントしてリストア

# mount /dev/xvda1 /restore
# cd /restore
# restore -rf /bkup/boot.dump

アンマウント

# cd /
# umount /restore

再度、rootをマウント

# mount /dev/xvda2 /restore

⑥/dev,/proc,/sysをバインド

これしないと後のgrub2関係がうまくいかないっぽいのでそれぞれバインド

# mount --bind /proc /mnt/sysimages/proc
# mount --bind /sys /mnt/sysimages/sys
# mount --bind /dev /mnt/sysimages/dev

⑦リストアした/システムをルートにする

chrootでルート変更

# chroot /restore

/bootをマウント

# mount /dev/xvda1 /boot

⑧/boot/grub2/grub.cfgを書き換える

ファイルシステムを再作成した時点でUUIDが変わっています。
そのため、/boot/grub2/grub.cfgに書かれている(/boot)のUUIDを
再作成した方のUUIDに書き換える必要があります。
grub.cfgは直接編集NGなので、現環境に合わせてgrub.cfgを再生成する以下コマンドを実施

# /sbin/grub2-mkconfig -o /boot/grub2/grub.cfg 

⑨/etc/fstabを書き換える

/etc/fstabも同様、書き換える必要があります。
こちらは直接編集可ですが、手打ちは怖いので以下のコマンドを実行。

# export NEWUUID=`blkid | grep /dev/xvda1 | awk '{print $2}' | cut -d '"' -f 2`
# export OLDUUID=`cat /bkup/fstab.dat | grep /boot | awk '{print $1}' | cut -d '=' -f 2`
# sed -i.org -e "s/UUID=${OLDUUID}/UUID=${NEWUUID}/g" /etc/fstab

⑩GRUB2をPReP Bootデバイス(/dev/xvda)に再インストール

# /sbin/grub2-install /dev/xvda

"install finished. no error reported"
と表示されればOK

⑪メディアを外してリブート

あとはリブートし、リストアしたシステムからブートするようにします。

この手順はOS領域のFSを一旦消す手順なので、実施する場合は注意してください。
またコマンドはコンソール上なのでコピペができないと思います。
バックアップと一緒に上記コマンドのスクリプト作って取っておいたがいいかもですね。


以上ウ

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?