Infra DevOps

インフラ構築のナレッジや、運用の自動簡易化に関する記事を書いていこうと思います

ddコマンドによるLinux OSクローン作成

Oracle Cloud Compute Cloudのインスタンスを複数クローンして

作成したかった。スナップショット機能で実現できそうだったが、

スナップショット機能が使えなかったのでddによるクローン手順を

考えたときのメモ。

 

 Compute Cloud Serviceのサービスコンソールの「ストレージ」より、「ストレージボリュームの作成」をクリック

f:id:liaisondangereuse:20160826110724p:plain

 

クローン元OSディスクと同一サイズサイズにてディスク作成

f:id:liaisondangereuse:20160826110842p:plain

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によるファイルシステム不整合の修正(これやったらファイル消えるかもしれないから、消えたものが判明したらクローン元からコピーで復旧)

# fsck.ext4 -y -f /dev/xvdc1

 

クローンディスクのマウント

# 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


クローンディスクをデタッチ


クローンしたディスクを使ってインスタンスを作成する