SystemRescueCDをつかったリストア手順
SystemRescueCDでバックアップしたデータからのリストア手順です。
今回の手順はLinux(CentOS)を想定した手順となっています。
※Windowsの場合は若干手順が異なる箇所があると思います。(MBRの普及方法など)
リストア時の注意点
リストアする際に、バックアップデータを採取したパーティションよりも小さいパーティションにはデータをリストアすることが出来ません。
(たとえそれが1シリンダーだったとしても!!)
ですので全てのバックアップデータをリストアする際には、必ず元のバックアップ元のHDDと同じ容量かそれ以上の容量のHDDを使用してください。
※今回の手順はディザスタリカバリーを想定しています。
用意しておくもの
実際にデータリストアを行う前に以下の物を用意しておいてください。
- バックアップの際に取得した「fdisk -l」「/etc/fstab」の情報(パーティションとswapファイル作成に必要)
- バックアップデータが保存されているメディア
- OSインストールの際に使用したインストールメディア(MBR復旧に使用)
SystemRescueCDからの起動
まずは、SystemRescueCDを使ってOSを起動させます。
SystemRescueCDからの起動
メディアを挿入してサーバの電源をONにします。
キーマップ選択
使用するキーボードのキーマップを選択します。
日本語キーボードの場合は「22 jp」なので、22と入力します。
起動完了画面
パーティションの作成
リストア先のHDDにパーティションが作成されていなければ作成する必要があります。
(今まで使用していたHDDにデータをリストアする場合、この作業は必要ありませんので「HDDの接続」へ進んでください。)
今回はリストアを行うHDDのデバイス名を/dev/sdaと想定して手順を記述しています。
実際の作業時には適宜読み替えて作業を行ってください。
fdisk コマンドを使用して、HDDのフォーマットおよびパーティションの作成を行います。
この作業はバックアップの時に採取した「fdisk -l」の情報を元に作業を行います。
backup取得時のfdisk -l情報
ちなみに、バックアップデータを取得する際に採取しておいた「fdisk -l」の情報は以下の通りとなっています。
この情報を元にHDDにパーティションを作成してきます。
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 78 522112+ 82 Linux swap / Solaris
/dev/sda3 79 1044 7759395 83 Linux
fdisk実行
まずは、HDDのデバイスを指定してfdiskを実行します。
※mと入力することで、fdiskのメニュー画面が表示されます。
sysresccd ~ # fdisk /dev/sda
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): m <--メニューを表示
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
パーティションの作成
[n]で「add a new partition」を選択してパーティションを作成していきます。
※今回はパーティションが3つしかないので、全て[ p primary partition (1-4)]を選択し、
パーティション番号を入力していきます。
Command (m for help): n <--n でパーティションを作成を選択
Command action
e extended
p primary partition (1-4)
p 「primary partition を作成するので p を入力」
Partition number (1-4): 1 「作成するパーティションの番号を入力」
First cylinder (1-1044, default 1): 1 「始めのシリンダー番号を入力」
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): 13 「最後のシリンダー番号を入力」
上記の手順を作成するパーティションの数だけ繰り返します。
cylinderの値について
「First cylinder」と「Last cylinder or +size or +sizeM or +sizeK」の項目は「fdiksk -l」情報の
「Start」と「End」の値を適用していきます。
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 78 522112+ 82 Linux swap / Solaris
/dev/sda3 79 1044 7759395 83 Linux
今回の例では以下のような形で残りのパーティションを作成して行くことになります。
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-1044, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-1044, default 1044): 78
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (79-1044, default 79): 79
Last cylinder or +size or +sizeM or +sizeK (79-1044, default 1044): 1044
スワップ領域用のパーティションid変更
全てのパーティションの作成が終わったら、今度はスワップ領域用パーティションのsystem idを変更します。
[ t change a partition's system id ]を選択し、
作成したパーティションでswap用のパーティションのsystem idを変更します。
Command (m for help): t 「t change a partition's system id 」を選択
Partition number (1-4): 2 「system id を変更するパーティションの番号を入力」
Hex code (type L to list codes): L 「system id の一覧を表示」
0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot
1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx
6 FAT16 42 SFS 86 NTFS volume set da Non-FS data
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3 75 PC/IX
Hex code (type L to list codes): 82 「Linux のswapファイルなので82を選択」
Changed system type of partition 2 to 82 (Linux swap / Solaris)
パーティション情報の確認
ここまでの設定が終わりましたら、[p print the partition table]で現在のパーティション情報を確認することができるので、設定した情報で間違いが無いか確認をします。
Command (m for help): p <--「p print the partition table」を選択
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 13 104391 83 Linux
/dev/sda2 14 78 522112+ 82 Linux swap / Solaris
/dev/sda3 79 1044 7759395 83 Linux
バックアップ時に採取した「fdisk -l」と比較してパーティションの数や容量に間違いが無いか確認してください。
万が一間違ってた場合は、「q quit without saving changes」を選択していったんfdiskより抜けて、
最初からパーティションを作り直しましょう。
設定の保存
作成したパーティションに間違いが無ければ、[w write table to disk and exit]で設定情報の保存を行います。
Command (m for help): w <-- 「w write table to disk and exit」でパーティション情報を保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
HDDの接続
バックアップデータが保存されているデバイスを接続します。
今回は別のHDDデバイス/dev/sdb1にバックアップデータが保存されているのでそれを接続します。
マウント用ディレクトリ作成
接続したデバイスをマウントするために、マウント用のディレクトリを作成します。
sysresccd ~ # mkdir /mnt/disk
HDDのマウント
作成したディレクトリに、接続したHDDをマウントします。
sysresccd ~ # mount /dev/sdb1 /mnt/disk/
無事マウント出来たかdfコマンドで確認してみます。
sysresccd ~ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 123M 21M 102M 17% /
/dev/sr0 163M 163M 0 100% /mnt/cdrom
/dev/loop0 128M 128M 0 100% /mnt/livecd
udev 10M 176K 9.9M 2% /dev
tmpfs 123M 3.4M 119M 3% /mnt/livecd/lib/firmware
tmpfs 123M 0 123M 0% /mnt/livecd/usr/portage
/dev/sdb1 7.9G 848M 6.7G 12% /mnt/disk
無事マウント出来ていることが確認できました。
バックアップデータの確認
HDDのマウントが出来たら、バックアップデータに間違いないことを確認します。
sysresccd ~ # ls -la /mnt/disk/
total 718436
drwxr-xr-x 3 root root 4096 Jan 18 10:40 .
drwxr-xr-x 9 root root 180 Jan 18 13:20 ..
-rw------- 1 root root 4703249 Jan 18 10:14 centos5-sda1.000
-rw------- 1 root root 730218059 Jan 18 10:40 centos5-sda3.000
drwx------ 2 root root 16384 Jan 18 10:10 lost+found
データのリストア
バックアップデータの準備が出来ましたら、いよいよリストア作業を行っています。
リストア作業もバックアップをする際に使用したコマンドを使用して行っていきます。
# partimage
partiamgeコマンドを実行すると、下記のような画面が表示されるので以下の手順でデータのリストアを行って行きます。
- 「Partition to save/restore」項目でリストア先のパーティションを選択します。
- 「Image file to create/use」項目でリストアをするバックアップデータをフルパスで指定します。
- 「Action to be done」項目で「Restore partitino from an image file」を選択します。
- 「F5」キーを押下します。
- データのバックアップを行った際に、詳細情報を入力していれば「Partition description」が表示され、バックアップデータの詳細が表示されるので、データに間違いがないことを確認し「OK」を選択します。
- Optionの選択画面が表示されますが、何も設定変更を行わずに「F5」キーを押下しそのまま処理を続行します。
- リストアするデータの解析結果が表示されますので、そのまま「Enter」キーを押下します。
- リストア処理を開始しても良いかの確認が表示されます。
リストア先のパーティションとリストアデータに間違いが無い事を確認し「Yes」を選択し「Enter」キーを押下し
リストアを開始します。
- リストアが完了すると、「Success」画面が表示されるので「Enter」キーを押下します。
以上の処理を、リストアするデータの分だけ繰り返します。
swap領域の作成
swapのバックアップは行っていませんので(特にデータがないのでする必要が無い)
mkswapコマンドを使ってswapファイルを作成します。
作成の際には、バックアップ時に採取した「/etc/fstab」情報を元に作成します。
backup取得時の/etc/fstab情報
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda2 swap swap defaults 0 0
/etc/fstab情報を確認するとswapとしてマウントするパーティションは「LABEL=SWAP-hda2」となっています。
ですので、「mkswap」コマンドでswapファイルを作成する際に「-L」オプションをつけてパーティションにLABEL(ラベル)情報も
あわせて付与していきます。
sysresccd ~ # mkswap -L SWAP-hda2 /dev/sda2
Setting up swapspace version 1, size = 534638 kB
LABEL=SWAP-hda2, UUID=42cef94e-80e4-4aac-9c79-48b9582a67c7
これで、swap領域が作成されました。
LABEL付けされていない場合
/dev/sda2 swap swap defaults 0 0
上記のようにswapのマウント用パーティションがLABELではなくデバイス名で記述されていた場合は
「-L」オプションをつけずにmkswapコマンドを実行します。
sysresccd ~ # mkswap /dev/sda2
MBR(MasterBootRecode マスターブートレコード)作成
データのリカバリーとswap領域の作成が完了しましたらMBRの作成を行っていきます。
データをリストアしただけですと、MBRが無い状態なのでOSを起動することができません。
ですので、OSのインストールメディアを使用してMBRの作成を行います。
既存のHDDにデータのリストアを行う場合で、MBRが既に存在している場合はこの作業は必要ありません。
※簡単に言うと、データのリストアが終わった後にサーバを再起動し無事起動すれば「MBRを作成する必要はありません。」
ということです。
レスキューモードで起動
サーバを再起動し、OSをインストールした際に使用したメディアを挿入し起動します。
sysresccd ~ # reboot
サーバが起動してくる途中でSystemRescueCDを取り出して、OSのインストールメディアと交換しておくことを忘れないでくださいね。
そうしないと、またSystemRescueが起動してきますから:-p
- boot: プロンプトが表示されたら linux rescue と入力しレスキューモードで起動します。
- 「Chose a Language」画面が表示されるので「English」を選択後「OK」に移動し「Enter」キーを押下します。
※ここで「Japanse」を選んでも、rescueモードが日本語には対応していないので日本語表示にはなりません。
※「Tab」キーで項目間を移動することが出来ます。(ここの画面では「OK」と言語選択項目のこと)
※「カーソル」キーで項目の選択をすることが出来ます。
- キーボードのキーマップを選択後「OK」に移動し「Enter」キーを押下します。
- 「No」を選択後「Enter」キーを押下します。
※「Yes」を選択するとネットワークの設定を行うことが出来て、ネットーワークを使えるようになるのですが今回は使用しないので「No」を選択します。
- 「Continue」を選択し「Enter」キーを押下します。
- 「Enter」キーを押下してrescueモードでshellを起動させます。
MBR作成
rescueモードで起動しましたら、grubを使用してMBRの作成をしていきます。
grubと入力することでgrubシェルへ移動できます。
sh-3.1# grub
grubシェルへ移動後以下のコマンドを実行することでMBRを作成することが出来ます。
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
サーバ再起動
MBRの作成が完了しましたら、サーバを再起動します。
※インストールメディアを入れっぱなしにしておくと、
またインストールが実行されるので注意してくださいね。
sh-3.1# reboot
起動確認
無事起動したことを確認し、データもリストアされていることを確認してみてください。
swap領域確認
swapが認識されているのか確認
[root@vm-centos5 ~]# free
total used free shared buffers cached
Mem: 255628 97660 157968 0 8152 53652
-/+ buffers/cache: 35856 219772
Swap: 522104 0 522104
無事全てのデータがリストアされていればおしまいです。
お疲れ様でした:-)