Openstack Management TTNN » Historique » Version 25
Version 24 (Laurent GUERBY, 15/12/2014 21:23) → Version 25/140 (Laurent GUERBY, 15/12/2014 21:45)
{{>toc}}
h1. Openstack Management TTNN
openstack tools for ttnn: http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools
h2. Opération sur les VMs (des membres)
h3. Voir la console graphique sans spice-html5:
Copier le script suivant 'gvnc' sur ca machine:
<pre>
#!/bin/bash
vm=$1
info=($(ssh openstack.tetaneutral.net -p 2222 -l root -- "mysql nova --skip-column-names --batch -e 'select host, uuid from instances where display_name=\"$vm\";'"))
if [ "${info[0]}" == "mysql" ]; then
echo "Error in mysql request"
exit 1
fi
hypervisor=${info[0]}.tetaneutral.net
uuid=${info[1]}
spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${uuid} | awk -F: '{print $3}')
echo "$vm on $hypervisor port $spice_port"
ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} &
pid=$!
cleanup(){
kill $pid
}
trap cleanup EXIT
sleep 2
remote-viewer spice://localhost:5910/
</pre>
Puis
<pre>
sudo apt-get install virt-viewer
./gvnc puppet.openstack.net
</pre>
h3. Reboot VM en error
<pre>
nova reset-state --active xxx.tetaneutral.net
nova reboot --hard --poll xxx.tetaneutral.net
</pre>
h3. Shutdown une VM
<pre>
nova stop xxx.tetaneutral.net
</pre>
A noter que suspend fait une sauvegarde de la RAM comme sur un laptop. shelve est bugué ne pas utiliser.
h3. Effacer une VM
<pre>
nova delete xxx.tetaneutral.net
</pre>
h3. Disques de VM
Pour renommer (et permettre a boot-disk de recreer) ou effacer :
<pre>
cinder list
cinder rename <ID> <newname>
cinder delete <ID_or_Name>
</pre>
h3. Agrandissement d'un disque
Sur la machine 'openstack':
<pre>
root@openstack:~/tools ./os-grow-disk.sh
usage: os-grow-disk.sh CINDER_VOLUME_ID SIZE_GB
root@openstack:~/tools# ./os-grow-disk.sh bc6f01cb-c6b6-4413-b2ef-1f7df0031049 60
Cinder:
bc6f01cb-c6b6-4413-b2ef-1f7df0031049 , test4-bootdisk | 40 -> 60
Enter YES to update
YES
Testing g3 ssh connection...
Resizing the kvm blockdevice...
Block device 'vda' is resized
Updating cinder database with the new value...
Update finish
</pre>
Puis sur la VM:
Il faut avoir un 'parted' récent ou patché avec le support du 'online resizepart':
'online resizepart' est natif depuis parted >= 3.1:
* debian >= jessie
* ubuntu >= 14.10
'online resizepart' backporté dans:
* ubuntu >= 13.10 < 14.10
Pour debian wheezy, utilisation les packages ubuntu de 14.04 devrait marcher
(pas encore testé, à voir si le kernel veut bien reload la table des partitions après)
<pre>
root@test4:~# parted /dev/vda print | grep vda
Disk /dev/vda: 64.4GB
root@test4# parted /dev/vda resizepart 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [42.9GB]? 64.4GB # METTRE ICI LA TAILLE VU AU DESSUS
Information: You may need to update /etc/fstab.
root@test4:~# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vda1 is now 15722400 blocks long.
root@test4:~# df -h | grep vda
/dev/vda1 60G 797M 56G 2% /
</pre>
Méthode plus risquée et manuelle pour wheezy :
<pre>
sfdisk -d /dev/vda > vda.mbr
cp vda.mbr vda.mbr.ori
vi vda.mbr
# mettre un tres grand nombre pour la fin de la partition
sfdisk -L -n --no-reread /dev/vda < vda.mbr
# cela va faire une erreur avec le max a mettre pour la fin de la partition
# changer la fin de la partition avec ce chiffre
sfdisk -L --no-reread /dev/vda < vda.mbr
reboot
resize2fs -p /dev/vda1
</pre>
h3. Ajout d'une interface réseau à une VM:
<pre>
$ neutron net-list | grep vlan3199
| 460f49ce-f5ed-449e-9e0f-7626bcee4379 | vlan3199 | ba3f12af-074a-4a31-9a7c-a621993e13bb 192.168.99.0/24 |
$ neutron port-create 460f49ce-f5ed-449e-9e0f-7626bcee4379 --name nagios-eth2 --fixed-ips type=dict list=true ip_address=192.168.99.248
Created a new port:
+-----------------------+---------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+---------------------------------------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| device_id | |
| device_owner | |
| fixed_ips | {"subnet_id": "ba3f12af-074a-4a31-9a7c-a621993e13bb", "ip_address": "192.168.99.248"} |
| id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
| mac_address | fa:16:3e:6b:32:07 |
| name | nagios-eth2 |
| network_id | 460f49ce-f5ed-449e-9e0f-7626bcee4379 |
| security_groups | b6d5b5fb-a053-4f97-b964-9e1a12d243b1 |
| status | DOWN |
| tenant_id | ed980105f9d047e2bee738b3f261f126 |
+-----------------------+---------------------------------------------------------------------------------------+
$ nova interface-attach --port-id 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 nagios.tetaneutral.net
</pre>
Dans la VM:
<pre>
$ dmesg | tail
[ 1315.826088] virtio-pci 0000:00:06.0: using default PCI settings
[ 1315.826102] virtio-pci 0000:00:07.0: no hotplug settings from platform
[ 1315.826102] virtio-pci 0000:00:07.0: using default PCI settings
[ 1315.826116] pci 0000:00:08.0: no hotplug settings from platform
[ 1315.826117] pci 0000:00:08.0: using default PCI settings
[ 1315.826382] virtio-pci 0000:00:08.0: enabling device (0000 -> 0003)
[ 1315.829281] virtio-pci 0000:00:08.0: setting latency timer to 64
[ 1315.829535] virtio-pci 0000:00:08.0: irq 50 for MSI/MSI-X
[ 1315.829555] virtio-pci 0000:00:08.0: irq 51 for MSI/MSI-X
[ 1315.829563] virtio-pci 0000:00:08.0: irq 52 for MSI/MSI-X
$ ip l show dev eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether fa:16:3e:6b:32:07 brd ff:ff:ff:ff:ff:ff
$ tail -4 /etc/network/interfaces
auto eth2
iface eth2 inet static
address 192.168.99.248
netmask 255.255.255.0
$ ifup eth2
$ ping 192.169.99.250
PING 192.169.99.250 (192.169.99.250) 56(84) bytes of data.
64 bytes from 192.169.99.250: icmp_req=1 ttl=119 time=170 ms
64 bytes from 192.169.99.250: icmp_req=2 ttl=119 time=204 ms
^C
</pre>
h3. Monter le disque d'un vm sur une machine hote pour dépannage.
L’exemple montre la modification du fichier /etc/ssh/sshd_config
Récuperer l'id et l'hyperviseur de la VM
<pre>
# nova stop VMNAME.tetaneutral.net
# nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
| OS-EXT-SRV-ATTR:host | g1 |
| id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
</pre>
Aller sur l'hyperviseur en question, puis:
<pre>
# virt-edit -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /etc/ssh/sshd_config
</pre>
Fermer le fichier et restart la VM
<pre>
# nova start VMNAME.tetaneutral.net
</pre>
h3. Exemple de migration de ganeti à openstack:
Sur h4:
<pre>
$ gnt-instance stop VMNAME.tetaneutral.net
$ gnt-instance activate-disks VMNAME.tetaneutral.net
h5.tetaneutral.net:disk/0:/dev/drbd34
</pre>
Sur g1, mettre l'image dans cinder
<pre>
name=VMNAME.tetaneutral.net
</pre>
Crée un volume (remplacer 20 par la taille du disque désiré):
<pre>
cinder create --volume_type ceph --display-name ${name}-bootdisk 20 # mettre ici un peu plus grand que le vrai disque.
volume_id=$(cinder show ${name}-bootdisk | awk '/ id /{print $4}')
</pre>
On remplace le volume rbd par le disque de la VM:
<pre>
rbd -p disks mv volume-$volume_id disks/volume-${volume_id}.old
socat -u tcp4-listen:505555 - | rbd -p disks import --image-format 2 - volume-$volume_id
</pre>
Sur la machine hX qui as le disque (ici h5 et le disque drbd34)
<pre>
cat /dev/drbd34 | socat -u - tcp4:g1:505555
# ou avec une bar de progression
apt-get install pv
pv /dev/drbd34 | socat -u - tcp4:g1:505555
</pre>
<pre>
# On peut voir l'avancement via:
watch -n1 -- rbd -p disks info volume-$volume_id
</pre>
On change la taille de l'image pour mettre la meme que le volume créé par openstack
<pre>
$ rbd -p disks info volume-$volume_id.old
rbd image 'volume-$volume_id.old':
size **XXX** MB in 5120 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.752a15a94252f
format: 2
features: layering
$ # ou bien
$ rbd -p disks info --pretty-format --format json volume-$volume_id.old | grep size
$ # puis
$ rbd -p disks resize --size XXX volume-$volume_id
</pre>
Booter la VM avec ce disque (le disque existant déjà le script l'utilisera):
<pre>
/root/tools/boot-vm.sh --ip A.B.C.D --flavor Xvcpu-Yram ${name}
</pre>
_Note: Si le disque a été agrandi, on peut utiliser dans la VM "growpart /dev/vda 1" ou 'parted resizepart' pour récupérer l'espace disponible (fonctionne bien sous jessie ou dernier ubuntu)_
Quand c'est fini sur h4:
<pre>
gnt-instance deactivate-disks VMNAME.tetaneutral.net
</pre>
S'il faut changer la RAM et vCPU
<pre>
nova flavor-list
nova list
nova resize ${name} FLAVOR_ID --poll
nova resize-confirm VM_ID
</pre>
h3. Convertion des images rbd au format 2 (pour les premieres VMs migrées de ganeti)
<pre>
$ nova stop <vm_name>
$ rbd -p disks export volume-XXXXXXXXXXXXXX - | rbd import --image-format 2 -p disks - volume-XXXXXXXXXXXXXX.converted
$ rbd -p disks mv volume-XXXXXXXXXXXXXX volume-XXXXXXXXXXXXXX.old
$ rbd -p disks mv volume-XXXXXXXXXXXXXX.converted volume-XXXXXXXXXXXXXX
$ rbd -p disks rm volume-XXXXXXXXXXXXXX.old
$ nova start <vm_name>
</pre>
h3. Déplacer une VM de pool ceph (en cours d'écriture)
<pre>
$ nova stop puppet.tetaneutral.net
$ cinder list | grep puppet.tetaneutral.net
$ rbd -p disks export volume-213e894e-2f20-42b5-a27b-21f5a355c722 - | rbd import --image-format 2 -p ssds - volume-213e894e-2f20-42b5-a27b-21f5a355c722
# Laurent 20141215
/root/tools/boot-vm.sh --ip 89.234.156.246 --image debian-wheezy --disk-size 10 --flavor 1vcpu-1024ram test246.tetaneutral.net
cinder create --volume_type ceph-ssd --display-name test246.tetaneutral.net-bootdisk-tmp 10
rbd -p ssds mv volume-$volume_id ssds/volume-${volume_id}.old
date;rbd -p disks export volume-0afab4c6-e340-4352-a609-7c43d51b5795 - | rbd import --image-format 2 -p ssds - volume-${volume_id} ;date
root@g1:~# nova volume-detach test246.tetaneutral.net 0afab4c6-e340-4352-a609-7c43d51b5795
ERROR (Forbidden): Can't detach root device volume (HTTP 403) (Request-ID: req-98a6e8f3-8897-4361-8fd7-6f10484d51b9)
# see https://bugs.launchpad.net/nova/+bug/1396965 and https://ask.openstack.org/en/question/53732/detaching-root-device-volume-of-an-instance/
nova delete test246.tetaneutral.net
cinder delete test246.tetaneutral.net-bootdisk
cinder rename test246.tetaneutral.net-bootdisk-tmp test246.tetaneutral.net-bootdisk
/root/tools/boot-vm.sh --ip 89.234.156.246 --flavor 1vcpu-1024ram test246.tetaneutral.net
</pre>
https://bugs.launchpad.net/nova/+bug/1396965
h2. VM de management (nommé openstack)
h3. Live Migration d'un host à l'autre
Cela fait tout à notre place niveau kvm/libvirt/ceph
<pre>
virsh migrate --persistent --undefinesource --live --p2p openstack qemu+ssh://g2:2222/system
</pre>
h3. Recover depuis une perte de la machine hote:
Créé un fichier openstack.xml à partir d'un backup de '/etc/libvirt/qemu/openstack.xml' ou utiliser l'exemple ici: attachment:openstack.xml
_Note: il faut surement viré les uuid des interfaces openvswitch qui sont différent suivant le hosts_
Puis on recréé la VM
<pre>
$ virsh create openstack.xml
$ virsh start openstack.xml
</pre>
h2. Operations sur les hotes
h3. Reboot
<pre>
nova list --host=n7 # list des VM xxx sur n7
for i in xxx; do nova live-migration $i stri; done # repartir sur plusieurs hosts
ps fauxwww|grep kvm # verifier qu'il n'y a plus de VM
for i in $(rados lspools) ; do ceph osd pool set $i min_size 1 ; done # diminuer le nombre de copies
ceph osd set noout # pour prevenir que les OSD vont revenir
/etc/init.d/ceph stop
shutdown -h now
</pre>
Post reboot remettre les min_size a 2, rappatrier les VM.
h1. Openstack Management TTNN
openstack tools for ttnn: http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools
h2. Opération sur les VMs (des membres)
h3. Voir la console graphique sans spice-html5:
Copier le script suivant 'gvnc' sur ca machine:
<pre>
#!/bin/bash
vm=$1
info=($(ssh openstack.tetaneutral.net -p 2222 -l root -- "mysql nova --skip-column-names --batch -e 'select host, uuid from instances where display_name=\"$vm\";'"))
if [ "${info[0]}" == "mysql" ]; then
echo "Error in mysql request"
exit 1
fi
hypervisor=${info[0]}.tetaneutral.net
uuid=${info[1]}
spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${uuid} | awk -F: '{print $3}')
echo "$vm on $hypervisor port $spice_port"
ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} &
pid=$!
cleanup(){
kill $pid
}
trap cleanup EXIT
sleep 2
remote-viewer spice://localhost:5910/
</pre>
Puis
<pre>
sudo apt-get install virt-viewer
./gvnc puppet.openstack.net
</pre>
h3. Reboot VM en error
<pre>
nova reset-state --active xxx.tetaneutral.net
nova reboot --hard --poll xxx.tetaneutral.net
</pre>
h3. Shutdown une VM
<pre>
nova stop xxx.tetaneutral.net
</pre>
A noter que suspend fait une sauvegarde de la RAM comme sur un laptop. shelve est bugué ne pas utiliser.
h3. Effacer une VM
<pre>
nova delete xxx.tetaneutral.net
</pre>
h3. Disques de VM
Pour renommer (et permettre a boot-disk de recreer) ou effacer :
<pre>
cinder list
cinder rename <ID> <newname>
cinder delete <ID_or_Name>
</pre>
h3. Agrandissement d'un disque
Sur la machine 'openstack':
<pre>
root@openstack:~/tools ./os-grow-disk.sh
usage: os-grow-disk.sh CINDER_VOLUME_ID SIZE_GB
root@openstack:~/tools# ./os-grow-disk.sh bc6f01cb-c6b6-4413-b2ef-1f7df0031049 60
Cinder:
bc6f01cb-c6b6-4413-b2ef-1f7df0031049 , test4-bootdisk | 40 -> 60
Enter YES to update
YES
Testing g3 ssh connection...
Resizing the kvm blockdevice...
Block device 'vda' is resized
Updating cinder database with the new value...
Update finish
</pre>
Puis sur la VM:
Il faut avoir un 'parted' récent ou patché avec le support du 'online resizepart':
'online resizepart' est natif depuis parted >= 3.1:
* debian >= jessie
* ubuntu >= 14.10
'online resizepart' backporté dans:
* ubuntu >= 13.10 < 14.10
Pour debian wheezy, utilisation les packages ubuntu de 14.04 devrait marcher
(pas encore testé, à voir si le kernel veut bien reload la table des partitions après)
<pre>
root@test4:~# parted /dev/vda print | grep vda
Disk /dev/vda: 64.4GB
root@test4# parted /dev/vda resizepart 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [42.9GB]? 64.4GB # METTRE ICI LA TAILLE VU AU DESSUS
Information: You may need to update /etc/fstab.
root@test4:~# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vda1 is now 15722400 blocks long.
root@test4:~# df -h | grep vda
/dev/vda1 60G 797M 56G 2% /
</pre>
Méthode plus risquée et manuelle pour wheezy :
<pre>
sfdisk -d /dev/vda > vda.mbr
cp vda.mbr vda.mbr.ori
vi vda.mbr
# mettre un tres grand nombre pour la fin de la partition
sfdisk -L -n --no-reread /dev/vda < vda.mbr
# cela va faire une erreur avec le max a mettre pour la fin de la partition
# changer la fin de la partition avec ce chiffre
sfdisk -L --no-reread /dev/vda < vda.mbr
reboot
resize2fs -p /dev/vda1
</pre>
h3. Ajout d'une interface réseau à une VM:
<pre>
$ neutron net-list | grep vlan3199
| 460f49ce-f5ed-449e-9e0f-7626bcee4379 | vlan3199 | ba3f12af-074a-4a31-9a7c-a621993e13bb 192.168.99.0/24 |
$ neutron port-create 460f49ce-f5ed-449e-9e0f-7626bcee4379 --name nagios-eth2 --fixed-ips type=dict list=true ip_address=192.168.99.248
Created a new port:
+-----------------------+---------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+---------------------------------------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| device_id | |
| device_owner | |
| fixed_ips | {"subnet_id": "ba3f12af-074a-4a31-9a7c-a621993e13bb", "ip_address": "192.168.99.248"} |
| id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
| mac_address | fa:16:3e:6b:32:07 |
| name | nagios-eth2 |
| network_id | 460f49ce-f5ed-449e-9e0f-7626bcee4379 |
| security_groups | b6d5b5fb-a053-4f97-b964-9e1a12d243b1 |
| status | DOWN |
| tenant_id | ed980105f9d047e2bee738b3f261f126 |
+-----------------------+---------------------------------------------------------------------------------------+
$ nova interface-attach --port-id 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 nagios.tetaneutral.net
</pre>
Dans la VM:
<pre>
$ dmesg | tail
[ 1315.826088] virtio-pci 0000:00:06.0: using default PCI settings
[ 1315.826102] virtio-pci 0000:00:07.0: no hotplug settings from platform
[ 1315.826102] virtio-pci 0000:00:07.0: using default PCI settings
[ 1315.826116] pci 0000:00:08.0: no hotplug settings from platform
[ 1315.826117] pci 0000:00:08.0: using default PCI settings
[ 1315.826382] virtio-pci 0000:00:08.0: enabling device (0000 -> 0003)
[ 1315.829281] virtio-pci 0000:00:08.0: setting latency timer to 64
[ 1315.829535] virtio-pci 0000:00:08.0: irq 50 for MSI/MSI-X
[ 1315.829555] virtio-pci 0000:00:08.0: irq 51 for MSI/MSI-X
[ 1315.829563] virtio-pci 0000:00:08.0: irq 52 for MSI/MSI-X
$ ip l show dev eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether fa:16:3e:6b:32:07 brd ff:ff:ff:ff:ff:ff
$ tail -4 /etc/network/interfaces
auto eth2
iface eth2 inet static
address 192.168.99.248
netmask 255.255.255.0
$ ifup eth2
$ ping 192.169.99.250
PING 192.169.99.250 (192.169.99.250) 56(84) bytes of data.
64 bytes from 192.169.99.250: icmp_req=1 ttl=119 time=170 ms
64 bytes from 192.169.99.250: icmp_req=2 ttl=119 time=204 ms
^C
</pre>
h3. Monter le disque d'un vm sur une machine hote pour dépannage.
L’exemple montre la modification du fichier /etc/ssh/sshd_config
Récuperer l'id et l'hyperviseur de la VM
<pre>
# nova stop VMNAME.tetaneutral.net
# nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
| OS-EXT-SRV-ATTR:host | g1 |
| id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
</pre>
Aller sur l'hyperviseur en question, puis:
<pre>
# virt-edit -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /etc/ssh/sshd_config
</pre>
Fermer le fichier et restart la VM
<pre>
# nova start VMNAME.tetaneutral.net
</pre>
h3. Exemple de migration de ganeti à openstack:
Sur h4:
<pre>
$ gnt-instance stop VMNAME.tetaneutral.net
$ gnt-instance activate-disks VMNAME.tetaneutral.net
h5.tetaneutral.net:disk/0:/dev/drbd34
</pre>
Sur g1, mettre l'image dans cinder
<pre>
name=VMNAME.tetaneutral.net
</pre>
Crée un volume (remplacer 20 par la taille du disque désiré):
<pre>
cinder create --volume_type ceph --display-name ${name}-bootdisk 20 # mettre ici un peu plus grand que le vrai disque.
volume_id=$(cinder show ${name}-bootdisk | awk '/ id /{print $4}')
</pre>
On remplace le volume rbd par le disque de la VM:
<pre>
rbd -p disks mv volume-$volume_id disks/volume-${volume_id}.old
socat -u tcp4-listen:505555 - | rbd -p disks import --image-format 2 - volume-$volume_id
</pre>
Sur la machine hX qui as le disque (ici h5 et le disque drbd34)
<pre>
cat /dev/drbd34 | socat -u - tcp4:g1:505555
# ou avec une bar de progression
apt-get install pv
pv /dev/drbd34 | socat -u - tcp4:g1:505555
</pre>
<pre>
# On peut voir l'avancement via:
watch -n1 -- rbd -p disks info volume-$volume_id
</pre>
On change la taille de l'image pour mettre la meme que le volume créé par openstack
<pre>
$ rbd -p disks info volume-$volume_id.old
rbd image 'volume-$volume_id.old':
size **XXX** MB in 5120 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.752a15a94252f
format: 2
features: layering
$ # ou bien
$ rbd -p disks info --pretty-format --format json volume-$volume_id.old | grep size
$ # puis
$ rbd -p disks resize --size XXX volume-$volume_id
</pre>
Booter la VM avec ce disque (le disque existant déjà le script l'utilisera):
<pre>
/root/tools/boot-vm.sh --ip A.B.C.D --flavor Xvcpu-Yram ${name}
</pre>
_Note: Si le disque a été agrandi, on peut utiliser dans la VM "growpart /dev/vda 1" ou 'parted resizepart' pour récupérer l'espace disponible (fonctionne bien sous jessie ou dernier ubuntu)_
Quand c'est fini sur h4:
<pre>
gnt-instance deactivate-disks VMNAME.tetaneutral.net
</pre>
S'il faut changer la RAM et vCPU
<pre>
nova flavor-list
nova list
nova resize ${name} FLAVOR_ID --poll
nova resize-confirm VM_ID
</pre>
h3. Convertion des images rbd au format 2 (pour les premieres VMs migrées de ganeti)
<pre>
$ nova stop <vm_name>
$ rbd -p disks export volume-XXXXXXXXXXXXXX - | rbd import --image-format 2 -p disks - volume-XXXXXXXXXXXXXX.converted
$ rbd -p disks mv volume-XXXXXXXXXXXXXX volume-XXXXXXXXXXXXXX.old
$ rbd -p disks mv volume-XXXXXXXXXXXXXX.converted volume-XXXXXXXXXXXXXX
$ rbd -p disks rm volume-XXXXXXXXXXXXXX.old
$ nova start <vm_name>
</pre>
h3. Déplacer une VM de pool ceph (en cours d'écriture)
<pre>
$ nova stop puppet.tetaneutral.net
$ cinder list | grep puppet.tetaneutral.net
$ rbd -p disks export volume-213e894e-2f20-42b5-a27b-21f5a355c722 - | rbd import --image-format 2 -p ssds - volume-213e894e-2f20-42b5-a27b-21f5a355c722
# Laurent 20141215
/root/tools/boot-vm.sh --ip 89.234.156.246 --image debian-wheezy --disk-size 10 --flavor 1vcpu-1024ram test246.tetaneutral.net
cinder create --volume_type ceph-ssd --display-name test246.tetaneutral.net-bootdisk-tmp 10
rbd -p ssds mv volume-$volume_id ssds/volume-${volume_id}.old
date;rbd -p disks export volume-0afab4c6-e340-4352-a609-7c43d51b5795 - | rbd import --image-format 2 -p ssds - volume-${volume_id} ;date
root@g1:~# nova volume-detach test246.tetaneutral.net 0afab4c6-e340-4352-a609-7c43d51b5795
ERROR (Forbidden): Can't detach root device volume (HTTP 403) (Request-ID: req-98a6e8f3-8897-4361-8fd7-6f10484d51b9)
# see https://bugs.launchpad.net/nova/+bug/1396965 and https://ask.openstack.org/en/question/53732/detaching-root-device-volume-of-an-instance/
nova delete test246.tetaneutral.net
cinder delete test246.tetaneutral.net-bootdisk
cinder rename test246.tetaneutral.net-bootdisk-tmp test246.tetaneutral.net-bootdisk
/root/tools/boot-vm.sh --ip 89.234.156.246 --flavor 1vcpu-1024ram test246.tetaneutral.net
</pre>
https://bugs.launchpad.net/nova/+bug/1396965
h2. VM de management (nommé openstack)
h3. Live Migration d'un host à l'autre
Cela fait tout à notre place niveau kvm/libvirt/ceph
<pre>
virsh migrate --persistent --undefinesource --live --p2p openstack qemu+ssh://g2:2222/system
</pre>
h3. Recover depuis une perte de la machine hote:
Créé un fichier openstack.xml à partir d'un backup de '/etc/libvirt/qemu/openstack.xml' ou utiliser l'exemple ici: attachment:openstack.xml
_Note: il faut surement viré les uuid des interfaces openvswitch qui sont différent suivant le hosts_
Puis on recréé la VM
<pre>
$ virsh create openstack.xml
$ virsh start openstack.xml
</pre>
h2. Operations sur les hotes
h3. Reboot
<pre>
nova list --host=n7 # list des VM xxx sur n7
for i in xxx; do nova live-migration $i stri; done # repartir sur plusieurs hosts
ps fauxwww|grep kvm # verifier qu'il n'y a plus de VM
for i in $(rados lspools) ; do ceph osd pool set $i min_size 1 ; done # diminuer le nombre de copies
ceph osd set noout # pour prevenir que les OSD vont revenir
/etc/init.d/ceph stop
shutdown -h now
</pre>
Post reboot remettre les min_size a 2, rappatrier les VM.