ddコマンドによるLinux OSクローン作成
Oracle Cloud Compute Cloudのインスタンスを複数クローンして
作成したかった。スナップショット機能で実現できそうだったが、
スナップショット機能が使えなかったのでddによるクローン手順を
考えたときのメモ。
Compute Cloud Serviceのサービスコンソールの「ストレージ」より、「ストレージボリュームの作成」をクリック
クローン元OSディスクと同一サイズサイズにてディスク作成
Compute Cloud Serviceのサービスコンソールの「ストレージ」より作成したディスクを選択してクローン元インスタンスにアタッチ
クローン元インスタンスに接続し、アタッチしたディスクが存在するか確認
# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdb 202:16 0 100G 0 disk
xvdb1 202:17 0 100G 0 part /
xvdc 202:32 0 100G 0 disk
ddコマンドによるクローンを実施。Ddコマンド実施後、ディスクをデタッチ、アタッチしなおす(100GBで30分くらいでした)
# time dd if=/dev/xvdb of=/dev/xvdc bs=10240k
fsckによるファイルシステム不整合の修正(これやったらファイル消えるかもしれないから、消えたものが判明したらクローン元からコピーで復旧)
クローンディスクのマウント
# mount /dev/xvdc1 /mnt
クローン後のディスクUUIDを変更
# tune2fs -U `uuidgen` /dev/xvdc1
# blkid
クローンディスク上のfstab内のUUIDを新UUIDに更新
# vi /mnt/etc/fstab
~~~
UUID=新UUID / ext4 defaults 1 1
grub.conf内のUUIDを新UUIDに更新
# vi /mnt/boot/grub/grub.conf
~~~
kernel /boot/vmlinuz-2.6.32-573.22.1.el6.x86_64 ro root=UUID=新UUID rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 crashkernel=auto SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
クローンディスクをアンマウント
# cd
# umount /mnt
クローンディスクをデタッチ
クローンしたディスクを使ってインスタンスを作成する