[ホーム] - [Redhat Linux 7 FAQ 一覧] - [Redhat 7 の物理サーバの完全フルバックアップ / リストアを行う簡単な手順]



Redhat 7 の物理サーバの完全フルバックアップ / リストアを行う簡単な手順

環境:Redhat Enterprise linux 7(EL)




目的


Redhat 7.2 で物理サーバの完全フルバックアップ、リストアを行います。

注意


構成、ドライバ、機器、Redhatバージョン、Raid構成などにより手順は大きく異なります。あくまでも参考程度でお願いします。この手順をそっくり他の環境で実行して成功する確率は低いです。

構成


# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)


・バックアップ元
/dev/sda1 /boot xfs
/dev/sda2 / xfs
/dev/sda3 /usr xfs
/dev/sda4 拡張パーティション
/dev/sda5 swap xfs
/dev/sda6 /home xfs
/dev/sda7 /tmp xfs
/dev/sda8 /var xfs

(*)よって sda5とsda7はリストア対象外とします。(スワップエリアと一時エリアはリストア不要なため)

・バックアップ先
/dev/sdb


手順



1.バックアップ用のディスクを準備(一度きりの手順)

・以下バックアップ用ディスク(sdb)をフォーマットします。
(1)fdisk で パーティション sdb1 を作成します。


fdisk /dev/sdb



既存のパーティションを削除した後、Primaryでパーティション番号1で作成する。手順は割愛します。

(*)間違ってバックアップ元を削除しないようデバイス名を注意。

(2)確認

以下のような感じになっているはずです。*は環境により値が異なるので確認不要です。


# fdisk -l /dev/sdb | grep sdb
Disk /dev/sdb: ** GB, ************ bytes, ******** sectors
/dev/sdb1 **** ******** ******** ** Linux



(3)バックアップディスクをxfsでフォーマットします

#mkfx.xfs -f /dev/sdb1



(*)間違ってバックアップ元をフォーマットしないようデバイス名を注意。

(4)バックアップ用フォルダ作成


# mkdir /mnt/backup
# mount /dev/sdb1 /mnt/backup/




(5)パーティション情報をバックアップ
後でリストアしたときにパーティションを構成するため、現在のパーティション情報をバックアップしておきます。


# sfdisk -d /dev/sda > /mnt/backup/sfdisk.sda.txt



(6)マウント情報をバックアップ
同じくマウント情報をバックアップしておきます。


# cp /etc/fstab /mnt/backup



(注意)redhat 7 xfs では起動時のディスクチェックがなくなりました。よってredhat6までは
"Default mount options"及び"Maximum mount"及び "Check interval" のリストアも必要でしたが、本手順では省略します。

同じく XFSでは User_xattr 属性がデフォルトでオンのため、復元不要となっています。


以上で事前準備は終了です。



2.バックアップ取得する
システムが停止した状態で取得する必要があるため、レスキューモードでOSを起動して取得します。レスキューモードはマウントあり(xfsのため,extなら通常はマウントなし)状態とします。


(1)Redhat インストール DVD を装着してマシンを起動します。
(2)Rescureモードで起動します。
/dev/sda は /mnt/sysimage にマウントするオプションで起動します。dumpと異なり xfsdumpは mount していないとダンプできないからと思われます。

途中で(1)continue を選択します。

手順は省略

(3)マウント用のディレクトリを作成します。Rescureモードのため、メモリ上で作成されるだけ実際のファイルシステム上では作成されません。

#mkdir /mnt/backup




(4)バックアップ用のディスクである /dev/sdb1にマウントします。これで/mnt/backup でバックアップ用のディスクにアクセスできます。

#mount /dev/sdb1 /mnt/backup



(5)今回取得するためのバックアップディレクトリを作成する。例えば2017年4月1日の場合

#mkdir /mnt/backup/20170401



(6)sda1をダンプすることによりバックアップ

#xfsdump -l 0 -f /mnt/backup/20170401/sda1.dmp /dev/sda1



レベルは 0 (ベースダウンぷ)
-f でファイルへダンプ

ラベル名の入力プロンプトが表示されるので、空の状態で[enter]を押します。

Dump status: SUCCESS と表示されたら成功


(7)
同様に /tmp /swap 以外はダンプを実行します。


各パーティションのダンプを実行します。環境により異なるので読み替えてください。


#xfsdump -l 0 -f /mnt/backup/20170401/sda1.dmp /dev/sda1
#xfsdump -l 0 -f /mnt/backup/20170401/sda2.dmp /dev/sda2
#xfsdump -l 0 -f /mnt/backup/20170401/sda3.dmp /dev/sda3
#xfsdump -l 0 -f /mnt/backup/20170401/sda6.dmp /dev/sda6
#xfsdump -l 0 -f /mnt/backup/20170401/sda8.dmp /dev/sda8



(9)確認
以下のコマンドを実行し、サイズが0ではないことを確認します。


#ls -l /mnt/backup/20170401/*,dmp



参考まで/usr パーティションが大きいはずなのでこの場合は sda3.dmp が大きいはずです。


(10)exit でレスキューモードを終了します。



3.リストア前の確認

リストアの実験をします。当然ですがテスト環境で実行してください。リストアに失敗するとシステムのデータ永遠にロストします。

まず事前に現状を確認しておきます。

(1)大よその各パーティションのサイズ

# df -h | grep sda
/dev/sda2 8.0G 57M 8.0G 1% /
/dev/sda3 4.0G 1009M 3.1G 25% /usr
/dev/sda6 497M 26M 472M 6% /home
/dev/sda9 1.3G 33M 1.3G 3% /crash
/dev/sda7 497M 26M 472M 6% /tmp
/dev/sda1 247M 110M 138M 45% /boot
/dev/sda8 497M 76M 422M 16% /var



(2)ファイル数

# find / -type f | wc -l
84474

# find /usr -type f | wc -l
36392

# find /home -type f | wc -l
3

# find /boot -type f | wc -l
319

# find /var -type f | wc -l
4611



4./dev/sda削除
リストアの実験をします。当然ですがテスト環境で実行してください。リストアに失敗するとシステムのデータ永遠にロストします。

Rescure mode で起動した後、以下のコマンドを実行することのより、Linux OSが格納されたパーティションを削除します。


#mkfs.xfs -f /dev/sda



5.リストア実行
システムが停止した状態で取得する必要があるため、レスキューモードでOSを起動して取得します。レスキューモードはマウントなし状態とします。


(1)マウント用のディレクトリを作成します。Rescureモードのため、メモリ上で作成されるだけ実際のファイルシステム上では作成されません。

#mkdir /mnt/backup



(2)バックアップ用のディスクである /dev/sdb1にマウントします。これで/mnt/backup でバックアップ用のディスクにアクセスできます。

#mount /dev/sdb1 /mnt/backup



(3)以前にバックアップしたパーティション情報から復元します。

#sfdisk --force /dev/sda < /mnt/backup/sfdisk.sda.txt



(4)パーティション情報が復旧したか確認します。

#sfdisk -l /dev/sda



(5)以下を実行しバックアップしたときの各パーティションのUUIDを確認します。

#cat /mnt/backup/fstab | grep UUID



[各パーティションのUUIDが表示されるがここでは省略]

(6)リストアパーティションをフォーマットする

#makefs.xfs -f /dev/sda1
#makefs.xfs -f /dev/sda2
#makefs.xfs -f /dev/sda3
#makefs.xfs -f /dev/sda6
#makefs.xfs -f /dev/sda7
#makefs.xfs -f /dev/sda8



(注意)以下の二つはフォーマットしません
/dev/sda4 拡張パーティション
/dev/sda5 swap xfs


(*)makefs.xfsでは UUID は指定できないようです。

(7)UUIDを戻します。[UUID]は前手順で確認したものです。

#xfs_admin -U [UUID] /dev/sda1



同様に他のUUIDをすべて元に戻します。


(8) / を /mnt/sysimage にマウントします。

#mount /dev/sda2 /mnt/sysimage
#cd /mnt/sysimage
#ls
<何も表示されないこと>



(9) / のリストア実行

#xfsrestore -f /mnt/backup/20170401/sda2.dmp /mnt/sysimage



「Restore Status: SUCCESS」と表示されること。


(10)

#mount /dev/sda1 /mnt/sysimage/boot
#cd /mnt/sysimage/boot
#xfsrestore -f /mnt/backup/20170401/sda1.dmp /mnt/sysimage/boot




(11)

#mount /dev/sda3 /mnt/sysimage/usr
#cd /mnt/sysimage/usr

#xfsrestore -f /mnt/backup/20170401/sda3.dmp /mnt/sysimage/usr



(12)

#mount /dev/sda6 /mnt/sysimage/home
#cd /mnt/sysimage/home

#xfsrestore -f /mnt/backup/20170401/sda6.dmp /mnt/sysimage/home



(13)

#mount /dev/sda8 /mnt/sysimage/var
#cd /mnt/sysimage/var

#xfsrestore -f /mnt/backup/20170401/sda8.dmp /mnt/sysimage/var



(14)スワップ作成します

mkswap /dev/sda5


(14)chroot実行

以下mount方式は環境、デバイスにより異なるので注意してください。


#mount --bind /dev /mnt/sysimage/dev
#mount --bind /proc /mnt/sysimage/proc
#mount --bind /sys /mnt/sysimage/sys
#chroot /mnt/sysimage



(14)

#ls -l /mnt/sysimage/boot/*.img



その中で initramfs-3.10.0-327.el7.x86_64.img のようなファイルがあるはずです。



(15)カーネルバージョン確認します。

#uname -r



3.10.0-327.el7.x86_64
のように表示されるはずです。

(16)initrd生成

#initrd を再生成します。


(17)grub2-install

#grub2-install /dev/sda



(*1)failed to get canonical path of で失敗する場合は/dev/sdaが見えてない。
(*2)"Attempting to install GRUB to a disk with multiple partition labels." が出る場合はパーティション生成に失敗している可能性あり。






(*)本ページは Redhat Enterprise Linux 7.2以後を想定しています。

最終更新日:2018/01/18



[ホーム] - [ Redhat Linux 7 FAQ 一覧]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018