Manipuler les VDI¶
Attention
Avant toutes modifications penser à faire trois choses : * Vérifier la taille du disque à resizer (avec un df -h) * Vérifier la présence de partition sur le disk à resizer. Si il n’y a pas de partition ne pas faire les opération de fdisk * Si vous avez un doute faite un snapshot de la machine avant opération
Opération sur le disque virtuel¶
Sur le XCP-NG Server/Xenserver, récupération de l” UUID du VDI disque :
xe vm-disk-list vm=srvtest
Renvoi l’uuid des vdi de la vm srvtest. Exemple : b46a60c5-1692-4964-a3c4-03bc59136864
Agrandissement du disque dur
xe vdi-resize uuid=b46a60c5-1692-4964-a3c4-03bc59136864 disk-size=30GiB
Opération sur l’OS Linux¶
Cas Général¶
On relance la machine virtuelle, dans le linux, si il n’y a qu’une seule partition
fdisk -u /dev/xvda
Afficher la table de partition, bien noter le début de la partition (ici 63 peut aussi être 2048 sur des squeeze)
Device Boot Start End Blocks Id System
/dev/xvda1 63 31455269 15727603+ 83 Linux
/\
||
Supprimer la partition et la recréer, vérifier que le début de la partition correspond bien à l’ancienne partition
d
Recréer la partition, de type primary
n
p
1
Choisir comme début la valeur qui a été récupérée à l’étape un peu plus au dessus
63 ou 2048 ou autre chose
Indication
Taper enter
directement pour choisir la fin de la partition
Afficher le résultat
p
Rebooter puis lancer un resize2fs
resize2fs /dev/xvda1
Cas spécifique, forcer le secteur 63¶
Sur des disques qui ont été créées sur des vieilles vm (type debian 5 ou mandriva 2008) le premier secteur se trouve en 63, et fdisk indique un « out of range »
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-2930277167, default 2048): 63
'''Value out of range.'''
First sector (2048-2930277167, default 2048): q
First sector (2048-2930277167, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2930277167, default 2930277167):
Using default value 2930277167
Command (m for help): q
On lance alors fdisk avec des options spécifiques (mode « old DOS-style disk block addressing »)
fdisk -c=dos -u=cylinders /dev/xvdc
WARNING: DOS-compatible mode is deprecated. It s strongly recommended to switch off the mode (with command c).
WARNING: cylinders as display units are deprecated. Use command u to change units to sectors.
Command (m for help): p
Disk /dev/xvdc: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8896f40d
Device Boot Start End Blocks Id System
/dev/xvdc1 1 78325 629145531 83 Linux
On delete la partition existante
Command (m for help): d
Selected partition 1
Et on recré la nouvelle en spécifiant le laissant les options par défaut.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First cylinder (1-78325, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-78325, default 78325):
Using default value 78325
On change les options d’affichage
Command (m for help): u
Changing display/entry units to sectors
On vérifie que le premier secteur est bien le 63eme
Command (m for help): p
Disk /dev/xvdc: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders, total 1258291200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8896f40d
Device Boot Start End Blocks Id System
/dev/xvdc1 63 1258291124 629145531 83 Linux
On valide les changements :
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Puis on reboot la machine
reboot
Enfin, on fait un resize du filesystem
resize2fs /dev/xvdc1
Création d’un VDI supérieur à 2 To¶
2 solutions possibles.
Méthode classique¶
Cette ligne de commande ne semble pas fonctionner sur les xen 7.1.2 non patchés
xe vdi-create sr-uuid=9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af name-label=BIG_DATA type=user virtual-size=5TiB sm-config:type=raw
Méthode un peu plus brut¶
Pour bien comprendre la démarche, il faut savoir que :
quand un vdi est créé sur xen, le lv porte le nom de l’uuid en VHD-XXXX
quand un sr est créé sur xen, le vg porte le nom de l’uuid en VG_XenStorage-XXXX
Récupérer l’uuid du sr sur lequel le vdi sera.
[root@xenserverBkUp ~]# xe sr-list name-label=Local\ storage --minimal
9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af
Récupérer le nom du vgs associé
vgs | awk '{print $1}' | grep 9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af
VG_XenStorage-9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af
Créer un lv dans ce VG, attention, bien préfixer en LV et non pas VHD, le xen ne trouvera pas de disque associé. uuidgen est une fonction qui génère aléatoirement un id unique. Dans notre exemple, le vdi fera 5To
lvcreate -L5T -n"LV-"$(uuidgen) VG_XenStorage-9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af --config global{metadata_read_only=0}
Avec un lvs, on peut voir notre nouveau storage rattaché au vg xen.
[root@xenserverBkUp ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV-2ab1e081-c69d-45cc-95fa-4ede2bbb4ab6 VG_XenStorage-9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af -wi-ao---- 5.00t
scanner le sr pour qu’il prenne en compte le nouveau vdi
xe sr-scan uuid=9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af
Il vous restera à nommer le vdi depuis le xencenter ou en cli et attacher ce disque à un vm.
Etendre un VDI supérieur à 2To¶
Trouver l’uuid du sr (commençant par VG_Xenstorage) puis l’uuid du vdi (on peut utiliser la commande xe vi-list si l’on connait le nom du vdi).
Puis retrouver le nom du LV avec l’uuid du VDI et agrandir. Ici, de 400G :
lvextend -L+400G /dev/VG_XenStorage-9ec3995a-eb2d-2645-dfc6-2b90b2a0c58b/LV-10692883-8142-423c-98bd-e2995e38c3a4 --config global{metadata_read_only=0}
Exporter des VDI¶
https://discussions.citrix.com/topic/389386-xe-vdi-import-not-doing-anything/
Il est possible en plus d’importer exporter des templates d’exporter et importer des VDI. Pour ce faire, exporter depuis le xen source le VDI qui vous intéresse, ici EnghienBK01-OS :
xe vdi-export uuid=17a8e771-2694-4f46-a05a-ba3260dcc927 filename=/big_data/EnghienBK01-OS
Puis, sur déplacer ce fichier sur le xenserver voulu.
Sur le xenserver cible, pour pourvoir importer le VDI depuis un filename, il faut d’abord lui créer un vdi vide avec la même volumétrie que le vdi de base. Ici, 80G.
xe vdi-create name-label=EnghienBK01-OS-new sr-uuid=9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af virtual-size=80GiB
Dans l’exemple, l’uuid du nouveau vdi est fe8cbad8-a0ac-4421-a852-f01cdd417a45
Enfin, importer le fichier dans le nouveau VDI :
xe vdi-import filename=/big_data/EnghienBK01-OS sr-uuid=9cfe3b34-4b9f-3ff7-706a-86ff2b50f8af uuid=fe8cbad8-a0ac-4421-a852-f01cdd417a45