LoginSignup
3
2

More than 5 years have passed since last update.

物理サーバーのCentOS5を停止せずに強引にイメージ化

Last updated at Posted at 2017-03-26

強引なやり方のためfsck覚悟。

dd

  1. 物理サーバーにssh
  2. nfs や usbをマウント
  3. dd if=/dev/sda | gzip -c > /mnt/nfs/disk.dd.gz

1TBで6時間くらいかかった。
ソフトウェアRAID1の場合、sdaとsdbとあるが、sdaだけddで良い。
ソフトウェアRAID0やRAID5などの場合はddどうするのかね。

イメージの扱い

  1. 元のディスクより大きいサイズのディスクを用意。(今回1TBのイメージだったので、2TBを用意した。)
  2. gzip -d disk.dd.gz
  3. qemu-convert -O qcow2 disk.dd disk.qcow2
  4. disk.qcow2 を利用して 仮想マシンを(今回はkvmを使った) で起動
  5. ストレージタイプはvirtioを選びたいところだが、CentOSの起動時に以前のストレージタイプ(sda)を指定しているため、sataにする。ネットワークは無効にしておいたほうが良い。
  6. DISKチェック。singleユーザーで起動
  7. fsck -y /dev/md1
  8. reboot

erro.png

無事起動したことを確認。

  1. ログインできたらディスクの空きをゼロ埋めする。 dd if=/dev/zero of=zero bs=1M; rm -f zero
  2. 仮想マシンを停止し仮想ディスクイメージをトリム。今一度qemu-img convert -O qcow2 disk.dd disk.dd.trim

dd以外の方法

無停止の dd だとデーターの欠損が気になるため
物理サーバをコンテナ化 (OpenVzの例) - Qiitaのようにtarで固めるか、

/boot/grub/menu.lst で root=/dev/md1 と指定がある場合は適宜書き換える。

ソフトウェアRAID1の場合

  • CentOS5 のDVDで起動しても /dev/md?? は認識しなかった。
  • clonezilla-live-20161121-yakkety-amd64.iso (ubuntu 16.10ベース) だと /dev/md126, /dev/md127 で認識した。

スクリーンショット_2017-03-27_08-47-07.png

旧DISKをマウント
mkdir rootdir
mount -o ro /dev/md126 old
mount -o ro /dev/md127 old/boot
新DISKをマウント
# CentOS5ではext4は使えない
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdb2
mkswap /dev/sdb3

mkdir newdir
mount -o ro /dev/sdb2 new
mount -o ro /dev/sdb1 new/boot
DISKコピー
rsync -a old/ new/
sync;sync;sync
編集
/etc/mdadm.conf
/etc/fstab
/boot/grub/menu.lst
  • CentOSのDVDから linux rescue で起動。
    • /mnt/sysimage に自動マウントされていない場合、/etc/fstabが間違っている。
# mount /dev/sda2 /mnt/sysimage
# mount /dev/sda1 /mnt/sysimage/boot

cd /mnt/sysimage

# mount -o bind /dev dev
# mount -t proc none proc
# mount -o bind /sys sys

chroot .

grub-install /dev/sda

grubをインストールして起動確認

grubinstall.png

起動に失敗する場合

スクリーンショット_2017-06-21_02-35-31.png

## `switchroot: mount failed: No such file or directory`
で起動に失敗するなら 
# mkinitrd /boot/initrd-2.6.xx.x.img 2.6.xx.x
/boot/grub/device.map
- (hd0) /dev/sda
+ (hd0) /dev/vda

grub-install /dev/vda

sata -> virtio に変更も上記にて成功した。

手動でgrubセットアップ方法

手動でgrubセットアップ
# grub --device-map=/dev/null
device (hd0) /dev/vda
root (hd0,0)
setup (hd0)
quit
3
2
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
3
2