まず、ストレージを接続するための仮想マシンを2台作成します。
function get_uuid () { cat - | grep " id " | awk '{print $4}'; }
export MY_WORK_NET=`neutron net-show work-net | get_uuid`
nova boot --flavor m1.tiny --image "cirros-0.3.5" \
--key-name my-key --security-groups open-all \
--nic net-id=${MY_WORK_NET} \
--min-count 2 \
test-vm-2
仮想マシンの起動を確認します。
nova list
2台がACTIVEになるのを待ちます。
nova list
Floating IPを2つ確保しておきます。
neutron floatingip-create public
neutron floatingip-create public
neutron floatingip-list
Floating IPのUUIDを変数に格納して控えておきます。
FIP_UUID1=`neutron floatingip-list -f value -c id --floating_ip_address=192.168.99.210`
FIP_UUID2=`neutron floatingip-list -f value -c id --floating_ip_address=192.168.99.206`
echo $FIP_UUID1
echo $FIP_UUID2
起動した2台のサーバーの論理ポートのUUIDをメモしておきます。
neutron port-list
PORT_UUID1=`neutron port-list -f value -c id --fixed_ips ip_address=172.16.11.5`
PORT_UUID2=`neutron port-list -f value -c id --fixed_ips ip_address=172.16.11.8`
echo $PORT_UUID1
echo $PORT_UUID2
2台の仮想マシンへそれぞれFloating IPを割り当てます。
neutron floatingip-associate $FIP_UUID1 $PORT_UUID1
neutron floatingip-associate $FIP_UUID2 $PORT_UUID2
nova list
まず1GBのボリュームを作成します。
cinder create --name test-vol2 1
これで1GBのボリュームができました。
cinder list
1台目のサーバーにボリュームを接続します。この時に、接続前の状態を確認しておきます。
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'hostname; lsblk'
サーバーにボリュームを接続します。引数にはボリュームのUUIDを指定します。
nova volume-attach test-vm-2-1 3ac68b3f-62cd-4838-8689-2f1b335b79fa
接続されたことが確認できます。
cinder list
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'hostname; lsblk'
ボリュームをフォーマット&マウントし、テスト用のファイルを配置しておきます。
$ ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210
$ sudo mkdir -p /mnt/cinder-vol
$ sudo fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9f638b43.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n ← nを入力
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ← pを入力
Partition number (1-4, default 1): ← そのままエンター
First sector (2048-2097151, default 2048): 1 ← そのままエンター
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 1 ← そのままエンター
Using default value 2097151
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
$ sudo mkfs.ext4 /dev/vdb1
$ sudo mount /dev/vdb1 /mnt/cinder-vol
$ sudo sh -c "echo your_name >> /mnt/cinder-vol/my-data.txt"
$ sudo cat /mnt/cinder-vol/my-data.txt
your_name
$ sudo sync
$ sudo umount /mnt/cinder-vol
$ exit
nova volume-detach test-vm-2-1 3ac68b3f-62cd-4838-8689-2f1b335b79fa
cinder list
ボリュームが切断され、OSから確認できなくなっています。
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'hostname; lsblk'
切断したボリュームをもう1台のサーバーへ接続します。
nova volume-attach test-vm-2-2 3ac68b3f-62cd-4838-8689-2f1b335b79fa
cinder list
サーバー側の状態を確認すると、先程作成したボリュームが確認できます。
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.206 'hostname; lsblk'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.206 'sudo mkdir -p /mnt/cinder-vol; sudo mount /dev/vdb1 /mnt/cinder-vol; sudo cat /mnt/cinder-vol/my-data.txt'
次の作業のために、ボリュームを切断しておきます。
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.206 'sudo umount /mnt/cinder-vol'
nova volume-detach test-vm-2-2 3ac68b3f-62cd-4838-8689-2f1b335b79fa
cinder list
ボリュームの複製もCinderから行うことができます。
cinder list
オリジナルボリュームからのクローン
cinder create --name clone-vol --source-volid 3ac68b3f-62cd-4838-8689-2f1b335b79fa
cinder list
スナップショットからのクローン
cinder snapshot-create --name snap1 3ac68b3f-62cd-4838-8689-2f1b335b79fa
cinder snapshot-list
cinder create --name clone-vol-from-snap --snapshot-id cd2b38ad-e705-43a9-a8cc-44f473c1eced
cinder list
ボリュームをサーバーへ接続してデータの状態を確認します。
nova volume-attach test-vm-2-1 ff76b2ed-9131-42e3-8d0b-de40d6bfa04d
nova volume-attach test-vm-2-1 b85d66e3-f7ad-4b02-9afe-2762a80d5de1
cinder list
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'hostname; lsblk'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo mkdir -p /mnt/cinder-vol1 /mnt/cinder-vol2'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo mount /dev/vdb1 /mnt/cinder-vol1'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo mount /dev/vdc1 /mnt/cinder-vol2'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo df -h'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo cat /mnt/cinder-vol1/my-data.txt'
ssh -oStrictHostKeyChecking=no -i ~/my-key.pem cirros@192.168.99.210 'sudo cat /mnt/cinder-vol2/my-data.txt'
nova delete test-vm-2-1 test-vm-2-2
nova list
cinder list
cinder delete clone-vol clone-vol-from-snap
スナップショットを持つボリュームを削除できないため、先にスナップショットを削除しておきます。
cinder snapshot-list
cinder snapshot-delete cd2b38ad-e705-43a9-a8cc-44f473c1eced
cinder delete test-vol2
cinder list