[フレーム]

しげふみメモ


おもにIT関連について、気になったことや試してみたことをメモしておきます。
Linux, Firefox, Thunderbird, Blog, Google, Amazon, Affiliate, iPod, PC, English ...

2009年02月08日00:52
カテゴリ
Linux

LinuxでXFSファイルシステムのOSのディスクを別のディスクにコピーする場合のメモ。

ミラーリングをしたくない場合でバックアップ用ディスクを作りたい場合や、ディスクの内容をまるごと別のディスクに移したい場合などに。

以下のログは SLES10 SP1 で試した時のもので、1本目のディスクは、swap と / の2パーティション構成の場合とします。

node01:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 74G 4.6G 69G 7% /
udev 501M 124K 501M 1% /dev
node01:~ # 
fdisk や parted で2本目のディスクにパーティションを作成。
今回はまったく同じ構成にしてみました。
(サイズやパーティション構成を変更したい場合にも使えます)
node01:~ # fdisk -l /dev/sd[ab]
Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 Device Boot Start End Blocks Id System
/dev/sda1 1 131 1052226 82 Linux swap / Solaris
/dev/sda2 132 9729 77095935 83 Linux
Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 Device Boot Start End Blocks Id System
/dev/sdb1 1 131 1052226 82 Linux swap / Solaris
/dev/sdb2 132 9729 77095935 83 Linux
node01:~ # 
mkfsでファイルシステム作成。
ext3と違って一瞬で完了するのが嬉しい。
node01:~ # mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=256 agcount=16, agsize=1204623 blks
 = sectsz=512 attr=0
data = bsize=4096 blocks=19273968, imaxpct=25
 = sunit=0 swidth=0 blks, unwritten=1
naming =version 2 bsize=4096 
log =internal log bsize=4096 blocks=9411, version=1
 = sectsz=512 sunit=0 blks
realtime =none extsz=4096 blocks=0, rtextents=0
node01:~ # 
swap作成。
node01:~ # mkswap /dev/sdb1
Setting up swapspace version 1, size = 1077473 kB
node01:~ # 
2本目のディスクの / パーティションを /new にマウント。
node01:~ # mount /dev/sdb2 /new
node01:~ # df -h / /new
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 74G 4.6G 69G 7% /
/dev/sdb2 74G 544K 74G 1% /new
node01:~ # 
あと、OSのDVD等に含まれるxfsdumpパッケージが必要。
これでdump/restoreの準備完了です。
/ から /new ファイルシステムへのコピーは、manページにあるように、基本的に以下で可能。
# xfsdump -J - / | xfsrestore -J - /new
この -J はdump inventory databaseを更新しないというオプション。
xfsdumpはインクリメンタルバックアップなどのために、databaseとして /var/lib/xfsdump/inventory を使用するが、今回のようなコピーの場合には必要がないため。

あと、私は -p 60 といったオプションを付けたりします。
指定秒毎に進捗を表示してくれます。

実際のログは以下。
node01:~ # xfsdump -J - / | xfsrestore -J -p 60 - /new
xfsrestore: using file dump (drive_simple) strategy
xfsdump: xfsrestore: version 2.2.43 (dump format 3.0) - Running single-threaded
using file dump (drive_simple) strategy
xfsdump: version 2.2.43 (dump format 3.0) - Running single-threaded
xfsdump: level 0 dump of node01:/
xfsdump: dump date: Thu Jan 8 19:17:11 2009
xfsdump: session id: b52423b6-bc30-4859-89cb-c1b6b478fdbc
xfsdump: session label: ""
xfsrestore: media label: ""
xfsrestore: file system id: cf274d72-c6f4-41ff-9f17-38b6fbc281dc
xfsrestore: session id: b52423b6-bc30-4859-89cb-c1b6b478fdbc
xfsrestore: media id: 59d1444a-04c8-4cac-a425-7b57f0ad1689
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsdump: dumping non-directory files
xfsrestore: 8796 directories and 101172 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: status at 19:18:11: 9955/89299 files restored, 5.7% complete, 60 seconds elapsed
xfsrestore: status at 19:19:11: 19612/89299 files restored, 11.5% complete, 120 seconds elapsed
(中略)
xfsrestore: status at 19:26:11: 75234/89299 files restored, 98.1% complete, 540 seconds elapsed
xfsdump: ending media file
xfsdump: media file size 4674038560 bytes
xfsdump: dump size (non-dir files) : 4641927160 bytes
xfsdump: dump complete: 564 seconds elapsed
xfsdump: Dump Status: SUCCESS
xfsrestore: restore complete: 573 seconds elapsed
xfsrestore: Restore Status: SUCCESS
node01:~ # 
dfなどで確認。
node01:~ # df -h / /new
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 74G 4.6G 69G 7% /
/dev/sdb2 74G 4.6G 69G 7% /new
node01:~ # 
/etc/fstab , /boot/grub/menu.lst を確認。
/dev/sda1などのデバイス名で指定してあれば問題ないが、LABELやUUIDで指定してある場合には変更などが必要。

最後に、このままでは、2本目のディスクには GRUB がインストールされていないので手動でインストールする必要がある。
今回、2本目のディスクの /boot はこの時点では /dev/sdb2 にあるので、grub で root (hd1,1) を指定して setup すればインストールされる。
node01:~ # grub
grub> root (hd1,1)
 Filesystem type is xfs, partition type 0x83
grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/xfs_stage1_5" exists... yes
 Running "embed /boot/grub/xfs_stage1_5 (hd1)"... 18 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd1) (hd1)1+18 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.
grub> 

以上で、2本目のディスクに入れ替えれば、同じOSで起動するはずです。

ちなみに、どのファイルシステムが好きかと言えば、やはりXFSですね。
サポートされていれば、XFSを使いたいです。

コメントする

名前
最新記事
人気記事
過去記事セレクト
エンジニア転職情報
traq

AltStyle によって変換されたページ (->オリジナル) /