« Virt/VirtualBox » : différence entre les versions
| (13 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 8 : | Ligne 8 : | ||
# yum install libGL libICE SDL libSM libXcursor libXi libXinerama libXmu libXrandr \ | # yum install libGL libICE SDL libSM libXcursor libXi libXinerama libXmu libXrandr \ | ||
libX11 freetype fontconfig libpng gcc-c++ make dkms | libX11 freetype fontconfig libpng gcc-c++ make dkms | ||
On doit installer les paquets <package>php</package> depuis le repo b2pweb car la version majeure minimale doit être 5.2. | {{Admon/important|Version de <package>php</package>|On doit installer les paquets <package>php</package> depuis le repo b2pweb car la version majeure minimale doit être 5.2.}} | ||
# yum install unzip httpd php php-soap php-pear php-devel | # yum install unzip httpd php php-soap php-pear php-devel | ||
= Installation = | = Installation = | ||
== Installation de VirtualBox == | |||
=== Méthode avec le repository VirtualBox === | |||
cd /etc/yum.repos.d/ | |||
Pour Fedora 17/16/15/14/13/12 | |||
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo | |||
Pour CentOS et Red Hat (RHEL) 6.3/6.2/6.1/6/5.8 | |||
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo | |||
'''Installation des dépendances''' | |||
yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms | |||
'''Installation de VirtualBox''' | |||
yum install VirtualBox-4.2 | |||
=== Méthode alternative === | |||
# wget http://download.virtualbox.org/virtualbox/4.0.8/VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm | # wget http://download.virtualbox.org/virtualbox/4.0.8/VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm | ||
# rpm -i VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm | # rpm -i VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm | ||
On installe | == Installation du Guest Addition ( VirtualBox Extension Pack ) == | ||
On installe l'extension virtualbox nécessaire pour faire fonctionner l'USB sur les VM et pour pouvoir faire fonctionner l'onglet console sur l'interface phpvirtualbox ( fonctionnalité RDP ). | |||
L'extension est disponible sur [https://www.virtualbox.org/wiki/Downloads la page de téléchargement de VirtualBox]. La version des ''guest-addition'' doit être la même que le paquet <package>Virtualbox</package>. | |||
Installation du ''guest-addition'' | |||
# cd /downloads | |||
# wget http://download.virtualbox.org/virtualbox/4.0.8/Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack | |||
# chmod +x Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack | |||
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack | |||
Désinstallation du ''guest-addition'' | |||
# su vbox -c 'VBoxManage list extpacks' | |||
# su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"' | |||
# su vbox -c 'VBoxManage list extpacks' | |||
Activer le RDP pour une VM déjà créée (test est le nom de la VM) | |||
# su - vbox | |||
$ VBoxManage list vms | |||
$ VBoxManage modifyvm "test" --vrde on | |||
Il est important de configurer un numéro de port vrde sur chaque VM, voici les commandes à exécuter pour configurer un nouveau numéro de port sur une nouvelle VM. | |||
# su - vbox | |||
$ VBoxManage list vmsnap | |||
$ VBoxManage modifyvm "test" --vrdeport 5000 | |||
Ainsi avec la configuration appliquée ci-dessus, pour accéder à la VM xp en bureau à distance, on indiquera les coordonnées suivantes: | |||
192.168.0.15:5010 donc l'adresse IP du serveur vbox avec le port vrde configuré ou 192.168.0.10 qui correspond à l'adresse IP de la VM. | |||
== Installation de phpvirtualbox == | |||
Page de phpvirtualbox<ref>Page de phpvirtualbox http://code.google.com/p/phpvirtualbox</ref> | |||
# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.0-6.zip | # wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.0-6.zip | ||
# unzip phpvirtualbox-4.0-6.zip | # unzip phpvirtualbox-4.0-6.zip | ||
| Ligne 22 : | Ligne 70 : | ||
# mkdir /var/www/html/phpvirtualbox | # mkdir /var/www/html/phpvirtualbox | ||
# cp -r * /var/www/html/phpvirtualbox/ | # cp -r * /var/www/html/phpvirtualbox/ | ||
= Configuration de phpvirtualbox = | = Configuration de phpvirtualbox = | ||
| Ligne 54 : | Ligne 93 : | ||
# /etc/init.d/vboxweb-service status | # /etc/init.d/vboxweb-service status | ||
= Utilisation = | |||
=== Cloner des VM === | |||
Pour cloner des VM et ainsi gagner du temps sur l'installation de la VM, on peut procéder ainsi: | |||
= Cloner des VM = | |||
Pour cloner des VM et ainsi gagner du temps sur l'installation de la VM, on peut procéder ainsi | |||
* Prendre un snapshot de la VM (bouton snapshot, current state, take snapshot) | * Prendre un snapshot de la VM (bouton snapshot, current state, take snapshot) | ||
* Arrêter la VM | * Arrêter la VM | ||
* Exporter la VM (File > Export Appliance > choisir VM à exporter > Donner une destination et un nom à l'Appliance (.ova) > Vérification puis export) | * Exporter la VM (File > Export Appliance > choisir VM à exporter > Donner une destination et un nom à l'Appliance (.ova) > Vérification puis export) | ||
* Importer VM (File > Import Appliance > choisir fichier ova > Vérifier / donner nom et modifier path disque dur vmdk puis Importer) | * Importer VM (File > Import Appliance > choisir fichier ova > Vérifier / donner nom et modifier path disque dur vmdk puis Importer) | ||
| Ligne 106 : | Ligne 116 : | ||
$ cd /home/vbox/VirtualBox\ VMs/ | $ cd /home/vbox/VirtualBox\ VMs/ | ||
$ VBoxManage clonehd xp_base_1/-disk1.vmdk xp_base_2.vdi</pre>}} | $ VBoxManage clonehd xp_base_1/-disk1.vmdk xp_base_2.vdi</pre>}} | ||
=== Changer l'UUID d'un disque vmdk === | |||
# su - vbox | # su - vbox | ||
$ VBoxManage internalcommands sethduuid /path/to/disk.vdi | $ VBoxManage internalcommands sethduuid /path/to/disk.vdi | ||
=== Regénérer une adresse MAC === | |||
# su - vbox | # su - vbox | ||
$ VBoxManage modifyvm "xp" --macaddress1 auto | $ VBoxManage modifyvm "xp" --macaddress1 auto | ||
=== Activer la fonctionnalité vrde et configurer un port vrde === | |||
# su - vbox | # su - vbox | ||
$ VBoxManage list vms | $ VBoxManage list vms | ||
| Ligne 121 : | Ligne 130 : | ||
$ VBoxManage modifyvm "test" --vrdeport 5000 | $ VBoxManage modifyvm "test" --vrdeport 5000 | ||
=== Renommer une VM === | |||
# su - vbox | # su - vbox | ||
$ VboxManage modifyvm VM_AVANT --name VM_APRES | $ VboxManage modifyvm VM_AVANT --name VM_APRES | ||
| Ligne 127 : | Ligne 136 : | ||
N.B. Cela changera également le nom de tout les fichiers de la VM, hormis le fichier VDI. Pour renommer celui-ci, il n'y a pas d'autre solution que de le cloner. | N.B. Cela changera également le nom de tout les fichiers de la VM, hormis le fichier VDI. Pour renommer celui-ci, il n'y a pas d'autre solution que de le cloner. | ||
=== Supprimer une VM === | |||
# su - vbox | # su - vbox | ||
$ VboxManage unregistervm VM --delete | $ VboxManage unregistervm VM --delete | ||
=== Clavier en qwerty === | |||
'''Windows:''' | |||
alt + shift dans la console phpvirtualbox > switch to azerty | |||
{{Admon/warning|Passage du clavier en qwerty|Avec cette manip le clavier sur le poste de travail utilisé passe en qwerty, il faudra refaire un alt + shift sur le poste de travail pour repasser en azerty.}} | |||
Sur la session RDP, la clavier est en azerty | Sur la session RDP, la clavier est en azerty | ||
Linux: | '''Linux:''' | ||
Fichier <path>/etc/sysconfig/keyboard</path> | Fichier <path>/etc/sysconfig/keyboard</path> | ||
KEYTABLE="en_us" | KEYTABLE="en_us" | ||
Reboot de la VM. | |||
=== Pointeur de la souris décallé === | |||
Lors de la prise en main de la VM via le RDP de VirtualBox ou bien via l'onglet « Console », le pointeur de la souris est décalé par rapport au pointeur du poste qui prend la main. Pour résoudre ce problème, il faut installer sur le système les programmes additionnels invités (Guest Additions). | Lors de la prise en main de la VM via le RDP de VirtualBox ou bien via l'onglet « Console », le pointeur de la souris est décalé par rapport au pointeur du poste qui prend la main. Pour résoudre ce problème, il faut installer sur le système les programmes additionnels invités (Guest Additions). | ||
On peut télécharger l'image ISO à cet adresse | On peut télécharger l'image ISO à cet adresse: | ||
''http://download.virtualbox.org/virtualbox/'' | ''http://download.virtualbox.org/virtualbox/'' | ||
| Ligne 162 : | Ligne 163 : | ||
Il suffit alors de se rendre dans le dossier correspondant à notre version de VirtualBox et de télécharger l'image sur le serveur. Ensuite, il faut monter l'image sur la VM, et lancer le fichier « VBoxWindowsAdditions.exe ». Après l'installation, il faudra redémarrer la VM. | Il suffit alors de se rendre dans le dossier correspondant à notre version de VirtualBox et de télécharger l'image sur le serveur. Ensuite, il faut monter l'image sur la VM, et lancer le fichier « VBoxWindowsAdditions.exe ». Après l'installation, il faudra redémarrer la VM. | ||
=== Augmenter la taille d'un disque dur virtuel VDI === | |||
Arrêter la VM cible pour laquelle on veut modifier la taille du disque puis sur le serveur Virtualbox : | Arrêter la VM cible pour laquelle on veut modifier la taille du disque puis sur le serveur Virtualbox : | ||
| Ligne 173 : | Ligne 173 : | ||
Une fois que la VM a démarrée sur Gparted, il suffit de créer une nouvelle partition avec l'espace disque disponible (tout l'espace disque). On crée une partition primaire non formatée car on va gérer le volume avec LVM. On arrête alors de nouveau la VM et on démonte l'ISO du lecteur CD virtuel. | Une fois que la VM a démarrée sur Gparted, il suffit de créer une nouvelle partition avec l'espace disque disponible (tout l'espace disque). On crée une partition primaire non formatée car on va gérer le volume avec LVM. On arrête alors de nouveau la VM et on démonte l'ISO du lecteur CD virtuel. | ||
On redémarre la VM et on utilise fdisk pour changer le type de partition (tag) qui est actuellement | On redémarre la VM et on utilise fdisk pour changer le type de partition (tag) qui est actuellement du type '''83 Linux''' et qu'il faut modifier en '''8e Linux LVM''' | ||
Affichage des partitions courantes | |||
# fdisk -l | # fdisk -l | ||
Disque /dev/sda: 10.4 Go, 10485760000 octets | Disque /dev/sda: 10.4 Go, 10485760000 octets | ||
255 heads, 63 sectors/track, 1274 cylinders | 255 heads, 63 sectors/track, 1274 cylinders | ||
Unités = cylindres de 16065 * 512 = 8225280 octets | Unités = cylindres de 16065 * 512 = 8225280 octets | ||
Périphérique Amorce Début Fin Blocs Id Système | Périphérique Amorce Début Fin Blocs Id Système | ||
/dev/sda1 <nowiki>* </nowiki>1 13 104391 83 Linux | /dev/sda1 <nowiki>* </nowiki>1 13 104391 83 Linux | ||
| Ligne 183 : | Ligne 185 : | ||
/dev/sda3 1045 1275 1853440 83 Linux | /dev/sda3 1045 1275 1853440 83 Linux | ||
Modification du type de partition | |||
# fdisk /dev/sda | # fdisk /dev/sda | ||
| Ligne 226 : | Ligne 229 : | ||
Enfin on va utiliser cette nouvelle partition (/dev/sda3) pour augmenter la taille du volume LVM principal. | Enfin on va utiliser cette nouvelle partition (/dev/sda3) pour augmenter la taille du volume LVM principal. | ||
Préparation de la partition afin de l'inclure à lvm. On créer pour cela un volume physique lvm sur celle-ci. | |||
# pvcreate /dev/sda3 | # pvcreate /dev/sda3 | ||
pvs | pvs | ||
| Ligne 232 : | Ligne 236 : | ||
/dev/sda3 lvm2 a- 1,77G 1,77G | /dev/sda3 lvm2 a- 1,77G 1,77G | ||
Ajout du volume physique au groupe de volume | |||
# vgextend VolGroup00 /dev/sda3 | # vgextend VolGroup00 /dev/sda3 | ||
Volume group "VolGroup00" successfully extended | Volume group "VolGroup00" successfully extended | ||
| Ligne 257 : | Ligne 262 : | ||
VG UUID dTKLz4-DsDe-3wqC-55OT-czuA-LaPj-RjSjYH | VG UUID dTKLz4-DsDe-3wqC-55OT-czuA-LaPj-RjSjYH | ||
Redimensionnement du volume logique existant | |||
# lvresize --size +1,75G /dev/VolGroup00/LogVol00 | # lvresize --size +1,75G /dev/VolGroup00/LogVol00 | ||
Extending logical volume LogVol00 to 8,62 GB | Extending logical volume LogVol00 to 8,62 GB | ||
Logical volume LogVol00 successfully resized | Logical volume LogVol00 successfully resized | ||
Redimensionnement de la partition lvm | |||
# resize2fs /dev/VolGroup00/LogVol00 | # resize2fs /dev/VolGroup00/LogVol00 | ||
resize2fs 1.39 (29-May-2006) | resize2fs 1.39 (29-May-2006) | ||
| Ligne 270 : | Ligne 277 : | ||
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur | Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur | ||
/dev/mapper/VolGroup00-LogVol00 | /dev/mapper/VolGroup00-LogVol00 | ||
8,4G 1,3G 6,7G 17% / | |||
/dev/sda1 99M 13M 82M 14% /boot | /dev/sda1 99M 13M 82M 14% /boot | ||
tmpfs 249M 0 249M 0% /dev/shm | tmpfs 249M 0 249M 0% /dev/shm | ||
La sortie de la commande 'df' avant l'extension était : | La sortie de la commande 'df' avant l'extension était : | ||
| Ligne 281 : | Ligne 288 : | ||
6,7G 1,3G 5,1G 21% / | 6,7G 1,3G 5,1G 21% / | ||
/dev/sda1 99M 13M 82M 14% /boot | /dev/sda1 99M 13M 82M 14% /boot | ||
tmpfs 249M 0 249M | tmpfs 249M 0 249M 0% /dev/shm | ||
=== Augmenter la taille d'un disque dur virtuel VMDK === | |||
On arrête tout d'abord la VM. Ensuite, il va falloir faire un snapshot et le merger dans le disque, pour sauvegarder l'état courant de la VM. Sans ça, on se retrouvera avec une VM qui n'est pas à jour car toutes les modifications récentes se mettent dans un disque virtuel différentiel et non dans le disque lui même.Pour faire cela, via l'interface phpVirtualBox, il suffit de prendre un snapshot et de le restaurer.S'il existe d'autres snapshots, il faudra les restaurer un par un du plus bas au plus haut dans l'arborescence.Ensuite il va falloir convertir le disque dans le format VDI pour pouvoir le redimensionner : | On arrête tout d'abord la VM. Ensuite, il va falloir faire un snapshot et le merger dans le disque, pour sauvegarder l'état courant de la VM. Sans ça, on se retrouvera avec une VM qui n'est pas à jour car toutes les modifications récentes se mettent dans un disque virtuel différentiel et non dans le disque lui même.Pour faire cela, via l'interface phpVirtualBox, il suffit de prendre un snapshot et de le restaurer.S'il existe d'autres snapshots, il faudra les restaurer un par un du plus bas au plus haut dans l'arborescence.Ensuite il va falloir convertir le disque dans le format VDI pour pouvoir le redimensionner : | ||
| Ligne 295 : | Ligne 302 : | ||
On utilisera la procédure décrite au dessus pour attribuer l'espace disque rajouté sur un serveur Linux. Sur un serveur Windows, il suffira de passer par le gestionnaire de disque via Ordinateur / clic droit Gérer / Gestion des disques, où l'on étendra simplement la partition principale avec l'espace disponible que l'on vient de rajouter (clic droit / étendre le volume). | On utilisera la procédure décrite au dessus pour attribuer l'espace disque rajouté sur un serveur Linux. Sur un serveur Windows, il suffira de passer par le gestionnaire de disque via Ordinateur / clic droit Gérer / Gestion des disques, où l'on étendra simplement la partition principale avec l'espace disponible que l'on vient de rajouter (clic droit / étendre le volume). | ||
=== Retrouver ses paramètres réseaux après un export/import === | |||
Après avoir exporté puis importé une VM, celle-ci n'a plus les mêmes paramètres réseaux qu'avant (IP, netmask, gateway...). | Après avoir exporté puis importé une VM, celle-ci n'a plus les mêmes paramètres réseaux qu'avant (IP, netmask, gateway...). | ||
| Ligne 308 : | Ligne 314 : | ||
Au redémarrage de la VM, celle-ci aura retrouvé ses paramètres. | Au redémarrage de la VM, celle-ci aura retrouvé ses paramètres. | ||
=== Erreur Error logging in to vboxwebsrv lors de la connexion sur phpvirtualbox === | |||
Pour corriger cette erreur, il faut exécuter les commandes suivantes : | Pour corriger cette erreur, il faut exécuter les commandes suivantes : | ||
| Ligne 317 : | Ligne 322 : | ||
Après ça, on peut rafraîchir la page web de phpvirtualbox et on peut se connecter. | Après ça, on peut rafraîchir la page web de phpvirtualbox et on peut se connecter. | ||
=== Erreur Failed to open/create the internal network (VERR_INTNET_FLT_IF_NOT_FOUND) === | |||
Cette erreur signifie que l'interface réseau n'est pas correctement attaché à la VM, on va le constater avec la commande suivante : | Cette erreur signifie que l'interface réseau n'est pas correctement attaché à la VM, on va le constater avec la commande suivante : | ||
| Ligne 327 : | Ligne 331 : | ||
# su - vbox -c "vboxmanage showvminfo aaa "NIC 1: MAC: 080027A43A3E, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny | # su - vbox -c "vboxmanage showvminfo aaa "NIC 1: MAC: 080027A43A3E, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny | ||
= | = Update de Virtualbox et de phpvirtualbox = | ||
Pour mettre à jour virtualbox, il est nécessaire de désinstaller le package rpm de la version courante puis d'installer celui de la nouvelle version. Il faut donc au préalable arrêter toutes les VM en cours d'exécution sur le serveur. | Pour mettre à jour virtualbox, il est nécessaire de désinstaller le package rpm de la version courante puis d'installer celui de la nouvelle version. Il faut donc au préalable arrêter toutes les VM en cours d'exécution sur le serveur. | ||
Voici la procédure pour un update de version mineure (ici on passe de la version 4.0.8 à la 4.0.12) | == Mise à jour mineure == | ||
Voici la procédure pour un update de version mineure (ici on passe de la version 4.0.8 à la 4.0.12) | |||
'''Arrêt de toutes les VM''' | |||
Arrêt de toutes les VM | |||
'''Mise à jour Virtualbox''' | |||
yum install VirtualBox-4.0 | |||
{{Admon/tip|Mise à jour sans avoir déclaré le repository virtualbox|Téléchargement de la dernière release<pre># cd /downloads | |||
# wget VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm</pre> | |||
Désinstallation de Vbox | Désinstallation de Vbox | ||
<pre># rpm -qa | grep VirtualBox | |||
# VirtualBox-4.0-4.0.8_71778_rhel5-1 | |||
# rpm -e VirtualBox-4.0-4.0.8_71778_rhel5-1</pre> | |||
Installation de la nouvelle release | Installation de la nouvelle release | ||
<pre># rpm -Uvh VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm</pre>}} | |||
'''Suppression de l'ancien Extension Pack''' | |||
# su vbox -c 'VBoxManage list extpacks' | # su vbox -c 'VBoxManage list extpacks' | ||
| Ligne 375 : | Ligne 376 : | ||
Extension Packs: 0 | Extension Packs: 0 | ||
'''Téléchargement et installation du nouveau Extension Pack''' | |||
# wget http://download.virtualbox.org/virtualbox/4.0.12/Oracle_VM_VirtualBox_Extension_Pack-4.0.12-72916.vbox-extpack | # wget http://download.virtualbox.org/virtualbox/4.0.12/Oracle_VM_VirtualBox_Extension_Pack-4.0.12-72916.vbox-extpack | ||
| Ligne 401 : | Ligne 402 : | ||
Why unusable: | Why unusable: | ||
'''Vérification du numéro de version''' | |||
Vérification à effectuer sur l'application phpvirtualbox | |||
Voici la procédure pour un update de version majeure (ici on passe de la version 4.0.12 à la 4.1.2) | == Mise à jour majeure == | ||
Voici la procédure pour un update de version majeure (ici on passe de la version 4.0.12 à la 4.1.2) | |||
'''Arrêt de toutes les VM''' | |||
{| | '''Mise à jour Virtualbox''' | ||
| | yum install VirtualBox-4.0 | ||
{{Admon/tip|Mise à jour sans avoir déclaré le repository virtualbox|Téléchargement de la dernière release<pre># cd /downloads | |||
# wget http://download.virtualbox.org/virtualbox/4.1.2/VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm</pre> | |||
Désinstallation de Vbox | |||
<pre># rpm -qa | grep VirtualBox | |||
# VirtualBox-4.0-4.0.12_72916_rhel5-1 | |||
# rpm -e VirtualBox-4.0-4.0.12_72916_rhel5-1</pre> | |||
Installation de la nouvelle release | |||
<pre># rpm -Uvh VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm</pre>}} | |||
'''Suppression de l'ancien Extension Pack''' | |||
# su vbox -c 'VBoxManage list extpacks' | |||
Extension Packs: 1 | |||
Pack no. 0: Oracle VM VirtualBox Extension Pack | |||
Version: 4.0.12 | |||
Revision: 72916 | |||
Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. | |||
VRDE Module: VBoxVRDP | |||
Usable: false | |||
Why unusable: VBoxExtPackRegister returned VERR_VERSION_MISMATCH, pReg=0000000000000000 ErrInfo='VirtualBox version mismatch - expected 4.0 got 4.1' | |||
# VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack" | |||
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% | |||
Successfully uninstalled "Oracle VM VirtualBox Extension Pack". | |||
# su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"' | |||
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% | |||
Successfully uninstalled "Oracle VM VirtualBox Extension Pack". | |||
# VBoxManage list extpacks | |||
# su vbox -c 'VBoxManage list extpacks' | |||
'''Téléchargement et installation du nouveau Extension Pack''' | |||
# wget http://download.virtualbox.org/virtualbox/4.1.2/Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack | |||
# chmod -x Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack | |||
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack | |||
# VBoxManage list extpacks | |||
Extension Packs: 1 | |||
Pack no. 0: Oracle VM VirtualBox Extension Pack | |||
Version: 4.1.2 | |||
Revision: 73507 | |||
Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. | |||
VRDE Module: VBoxVRDP | |||
Usable: true | |||
Why unusable: | |||
su vbox -c 'VBoxManage list extpacks' | |||
Extension Packs: 1 | |||
Pack no. 0: Oracle VM VirtualBox Extension Pack | |||
Version: 4.1.2 | |||
Revision: 73507 | |||
Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. | |||
VRDE Module: VBoxVRDP | |||
Usable: true | |||
Why unusable: | |||
su vbox -c 'VBoxManage list extpacks' | |||
Extension Packs: 1 | |||
Pack no. 0: Oracle VM VirtualBox Extension Pack | |||
Version: 4.1.2 | |||
Revision: 73507 | |||
Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. | |||
VRDE Module: VBoxVRDP | |||
Usable: true | |||
Why unusable: | |||
La version courante de phpvirtualbox est fonctionnelle pour virtualbox en version 4.0.X mais ne fonctionne pas pour les version 4.1.X, il est donc nécessaire de mettre à jour phpvirtualbox. Les manipulations sont assez simples, voici le détail : | La version courante de phpvirtualbox est fonctionnelle pour virtualbox en version 4.0.X mais ne fonctionne pas pour les version 4.1.X, il est donc nécessaire de mettre à jour phpvirtualbox. Les manipulations sont assez simples, voici le détail : | ||
'''Mise à jour de phpvirtualbox''' | |||
# mv /var/www/html/phpvirtualbox /var/www/html/phpvirtualbox.bak | |||
# cd /downloads | |||
# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-2.zip | |||
mv /var/www/html/phpvirtualbox /var/www/html/phpvirtualbox.bak | # unzip phpvirtualbox-4.1-2.zip | ||
# cd phpvirtualbox-4.1-2 | |||
cd /downloads | # mkdir /var/www/html/phpvirtualbox | ||
# cp -r * /var/www/html/phpvirtualbox/ | |||
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-2.zip | # cd /var/www/html/phpvirtualbox/ | ||
# cp config.php-example config.php | |||
unzip phpvirtualbox-4.1-2.zip | |||
cd phpvirtualbox-4.1-2 | |||
mkdir /var/www/html/phpvirtualbox | |||
cp -r * /var/www/html/phpvirtualbox/ | |||
cd /var/www/html/phpvirtualbox/ | |||
cp config.php-example config.php | |||
Fichier <path>/var/www/html/phpvirtualbox/config.php</path> | Fichier <path>/var/www/html/phpvirtualbox/config.php</path> | ||
| Ligne 559 : | Ligne 492 : | ||
var $rdphost = '192.168.0.17'; | var $rdphost = '192.168.0.17'; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= SCRIPTS = | = SCRIPTS = | ||
| Ligne 689 : | Ligne 613 : | ||
Dans les environnements serveur avec plusieurs VMs, les Guest Additions peuvent être utilisés pour partager de la mémoire hôte physique entre plusieurs VMs, en réduisant la quantité totale de mémoire en utilisation par les VMs. Si l'utilisation de la mémoire est le facteur limite et les ressources CPU demeurent disponibles, ceci peut aider pour avoir plus de VMs sur chaque hôte. | Dans les environnements serveur avec plusieurs VMs, les Guest Additions peuvent être utilisés pour partager de la mémoire hôte physique entre plusieurs VMs, en réduisant la quantité totale de mémoire en utilisation par les VMs. Si l'utilisation de la mémoire est le facteur limite et les ressources CPU demeurent disponibles, ceci peut aider pour avoir plus de VMs sur chaque hôte. | ||
== Memory Ballooning == | |||
A partir de la version 3.2, Les Guest Additions de VirtualBox peuvent changer la quantité de mémoire hôte qu'une VM utilise lorsque la machine est en cours d'exécution. En raison de comment elle est implémentée, cette fonctionnalité est nommée « memory ballooning ». | |||
A partir de la version 3.2, Les Guest Additions de VirtualBox peuvent changer la quantité de mémoire hôte qu'une VM utilise lorsque la machine est en cours d'exécution. En raison de comment elle est implémentée, cette fonctionnalité est nommée « | |||
VirtualBox supporte le memory ballooning seulement sur les hôtes 64 bits et n'est pas supportée sur les hôtes Mas OS X. | VirtualBox supporte le memory ballooning seulement sur les hôtes 64 bits et n'est pas supportée sur les hôtes Mas OS X. | ||
Normalement, pour changer la quantité de mémoire allouée à une machine virtuelle, il faut arrêter la machine virtuelle entièrement et modifier ses paramètres. Avec le ballon de mémoire, la mémoire qui a été allouée pour une machine virtuelle peut être donnée à une autre machine virtuelle sans avoir à éteindre la machine. | |||
Lorsque la mémoire ballon est demandée, les Guest Additions de VirtualBox (qui s'exécutent à l'intérieur de l'invité) allouent de la mémoire physique du système d'exploitation invité sur le niveau du noyau et verrouille cette mémoire dans l'invité. | |||
Lorsque | |||
Cela garantit que l'invité n'utilisera pas cette mémoire plus longtemps: aucunes applications clientes ne peut se l'allouer, et le noyau invité ne l'utilisera pas non plus. VirtualBox peut ensuite réutiliser cette mémoire et la donner à une autre machine virtuelle. | |||
''' | La mémoire disponible par l'intermédiaire du mécanisme de gonflement est uniquement disponible pour la réutilisation par VirtualBox. Elle n'est pas retournée comme mémoire libre pour l'hôte. Le fait de demander de la mémoire ballon à partir d'un invité en cours d'exécution ne fera donc pas augmenter la quantité de mémoire libre non allouée sur l'hôte. En effet, la mémoire ballon est donc un mécanisme de surcharge de mémoire pour de multiples machines virtuelles pendant leur exécution. | ||
Cela peut être utile pour démarrer temporairement une autre machine, ou dans des environnements plus complexes, pour la gestion de la mémoire sophistiquée de nombreuses machines virtuelles qui peuvent être exécutées en parallèle selon la façon dont la mémoire est utilisée par les invités. | |||
Pour le moment, la mémoire ballooning est prise en charge uniquement par le biais de VBoxManage. Utilisez la commande suivante pour augmenter ou diminuer la taille du ballon de mémoire dans une machine virtuelle qui a les Guest Additions installés: | |||
VBoxManage controlvm "VM name" guestmemoryballoon <nowiki><n></nowiki> | |||
où "VM name" est le nom ou l'UUID de la machine virtuelle en question et <n> est la quantité de mémoire à allouer depuis l'invité en méga-octets. Voir la section intitulée « VBoxManage controlvm » pour plus d'informations. | |||
Vous pouvez également définir un ballon par défaut qui sera automatiquement demandé par la VM à chaque fois après qu'elle ai démarré avec la commande suivante: | |||
VBoxManage modifyvm "VM name" --guestmemoryballoon <nowiki><n></nowiki> | |||
Par défaut, aucun ballon de mémoire n'est alloué. Ceci est un paramètre VM, comme les autres paramètres modifyvm, et ne peut donc être réglé que lorsque la machine est arrêtée, voir la section intitulée «VBoxManage modifyvm". | |||
== Page Fusion == | |||
Alors que''' '''la mémoire''' '''ballon''' '''réduit simplement la quantité''' '''de RAM''' '''qui est disponible pour''' '''une machine virtuelle, Page''' '''Fusion''' '''fonctionne différemment: il''' '''évite la duplication''' '''de la mémoire entre''' '''plusieurs''' '''machines virtuelles similaires en exécution.''' ''' | |||
Dans un environnement serveur exécutant plusieurs machines virtuelles similaires (par exemple avec des systèmes d'exploitation identiques) sur le même hôte, beaucoup de pages de mémoire sont identiques. La technologie VirtualBox Page Fusion, introduite dans VirtualBox 3.2, est une nouvelle technique pour identifier efficacement ces pages mémoire identiques et les partager entre plusieurs machines virtuelles. | |||
VirtualBox supporte Page Fusion seulement sur les hôtes 64 bits, et il n'est pas pris en charge sur les hôtes Mac OS X. Fusion page ne fonctionne actuellement qu'avec les clients Windows (2000 et plus). | |||
Plus les machines virtuelles sur un hôte donné sont similaires, plus Page Fusion peut efficacement réduire la quantité de mémoire de l'hôte qui est en cours d'utilisation. Il fonctionne mieux donc si toutes les machines virtuelles sur un hôte exécutent des systèmes d'exploitation identiques (par exemple Windows XP Service Pack 2). Au lieu d'avoir une copie complète de chaque système d'exploitation dans chaque VM, Page Fusion identifie les pages mémoire identiques utilisatées par ces systèmes d'exploitation et élimine les doublons, en partageant de la mémoire hôte entre plusieurs machines («la déduplication"). Si une machine virtuelle tente de modifier une page qui a été partagée avec d'autres machines virtuelles, une nouvelle page est allouée à nouveau pour ceete VM avec | |||
une copie de la page partagée ("copy on write"). Tout cela est totalement transparent pour la machine virtuelle. | |||
Vous connaissez peut-être ce genre de surcharge de mémoire à partir d'autres produits hyperviseur, qui appellent cette fonction « page sharing » ou « same page merging ». Toutefois, Page Fusion diffère sensiblement de ces autres solutions, dont les approches présentent plusieurs inconvénients: | |||
# Les hyperviseurs traditionnels scannent toute la mémoire et calculer les sommes de contrôle (hashes) pour chaque page de mémoire unique. Puis, ils recherchent des pages avec des hashes identiques et comparent la totalité du contenu de ces pages, si deux pages produisent le même hachage, il est très probable que les pages ont un contenu identique. Ceci, bien sûr, peut prendre un peu de temps, surtout si le système n'est pas au repos (idle). En conséquence, la mémoire supplémentaire ne devient disponible qu'après une quantité importante de temps (cela peut durer des heures voire des jours!). <br/> Pire encore, ce genre d'algorithme de partage de page consomme généralement d'importantes ressources CPU et augmente la surcharge de virtualisation de 10-20%.<br/> Page Fusion dans VirtualBox utilise la logique des Guest Additions de VirtualBox pour identifier rapidement les cellules de mémoire qui sont les plus susceptibles d'être identiques à travers les machines virtuelles. On peut donc atteindre la plupart des économies possibles de partage de page presque immédiatement et avec presque pas de charge. (genre eux c'est des ouf …)<br/> | |||
# Page Fusion est aussi beaucoup moins susceptibles d'être désorienté par la mémoire identique qu'il éliminera simplement pour apprendre quelques secondes plus tard que la mémoire va maintenant changer et il devra ainsi effectuer une redistribution très coûteuse engendrant souvent une interruption de service. | |||
Actuellement Page Fusion peut seulement être contrôlé avec VBoxManage, et seulement si la machine virtuelle est arrêtée. Pour activer Page Fusion pour une machine virtuelle, utilisez la commande suivante: | |||
VBoxManage modifyvm "VM name" --pagefusion on | VBoxManage modifyvm "VM name" --pagefusion on | ||
Vous pouvez | Vous pouvez observer le fonctionnement de Page Fusion en utilisant quelques métriques. RAM / VMM / Shared indique le montant total de pages fusionnées, alors que la métrique per-VM Guest / RAM / Utilisation / Shared retournera la quantité de mémoire fusionnée pour une VM donnée. Se référer à la section intitulée "VboxManage metrics"pour plus d'informations sur la façon d'interroger les métriques. | ||
Dernière version du 3 octobre 2012 à 09:47
Introduction
Ce document décrit le déroulement de l'installation de VirtualBox couplé à l'interface web phpvirtualbox. Cette installation va permettre de virtualiser des serveurs sur un serveur physique installé en CentOS. Il faut donc une fresh install CentOS sur un serveur assez performant de façon à pouvoir faire tourner plusieurs VM de façon optimale.
PRE-CONFIGURATION
Tout d'abord nous allons installer les paquets requis pour installer Virtualbox, il nous faut dans un premier temps installer le repo rpmforge ainsi que le repo b2pweb.
Ensuite on peut installer les paquets requis.
# yum install libGL libICE SDL libSM libXcursor libXi libXinerama libXmu libXrandr \ libX11 freetype fontconfig libpng gcc-c++ make dkms
# yum install unzip httpd php php-soap php-pear php-devel
Installation
Installation de VirtualBox
Méthode avec le repository VirtualBox
cd /etc/yum.repos.d/
Pour Fedora 17/16/15/14/13/12
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
Pour CentOS et Red Hat (RHEL) 6.3/6.2/6.1/6/5.8
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
Installation des dépendances
yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
Installation de VirtualBox
yum install VirtualBox-4.2
Méthode alternative
# wget http://download.virtualbox.org/virtualbox/4.0.8/VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm # rpm -i VirtualBox-4.0-4.0.8_71778_rhel5-1.x86_64.rpm
Installation du Guest Addition ( VirtualBox Extension Pack )
On installe l'extension virtualbox nécessaire pour faire fonctionner l'USB sur les VM et pour pouvoir faire fonctionner l'onglet console sur l'interface phpvirtualbox ( fonctionnalité RDP ).
L'extension est disponible sur la page de téléchargement de VirtualBox. La version des guest-addition doit être la même que le paquet <package>Virtualbox</package>.
Installation du guest-addition
# cd /downloads # wget http://download.virtualbox.org/virtualbox/4.0.8/Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack # chmod +x Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack # VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack
Désinstallation du guest-addition
# su vbox -c 'VBoxManage list extpacks' # su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"' # su vbox -c 'VBoxManage list extpacks'
Activer le RDP pour une VM déjà créée (test est le nom de la VM)
# su - vbox $ VBoxManage list vms $ VBoxManage modifyvm "test" --vrde on
Il est important de configurer un numéro de port vrde sur chaque VM, voici les commandes à exécuter pour configurer un nouveau numéro de port sur une nouvelle VM.
# su - vbox $ VBoxManage list vmsnap $ VBoxManage modifyvm "test" --vrdeport 5000
Ainsi avec la configuration appliquée ci-dessus, pour accéder à la VM xp en bureau à distance, on indiquera les coordonnées suivantes: 192.168.0.15:5010 donc l'adresse IP du serveur vbox avec le port vrde configuré ou 192.168.0.10 qui correspond à l'adresse IP de la VM.
Installation de phpvirtualbox
Page de phpvirtualbox[1]
# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.0-6.zip # unzip phpvirtualbox-4.0-6.zip # cd phpvirtualbox-4.0-6 # mkdir /var/www/html/phpvirtualbox # cp -r * /var/www/html/phpvirtualbox/
Configuration de phpvirtualbox
On peut alors configurer phpvirtualbox ( adresse IP du serveur vbox: 192.168.0.15 )
# mv config.php-example config.php # adduser vbox # passwd vbox
On met le mot de passe à vbox
# echo "VBOXWEB_USER=vbox" > /etc/default/virtualbox
Fichier <path>/var/www/html/phpvirtualbox/config.php</path>
var $username = 'vbox';
var $password = 'vbox';
var $location = 'http://127.0.0.1:18083/';
var $consoleHost = '192.168.0.15';
var $rdphost = '192.168.0.15';
On démarre le service
# /etc/init.d/vboxweb-service start # /etc/init.d/vboxweb-service status
Utilisation
Cloner des VM
Pour cloner des VM et ainsi gagner du temps sur l'installation de la VM, on peut procéder ainsi:
- Prendre un snapshot de la VM (bouton snapshot, current state, take snapshot)
- Arrêter la VM
- Exporter la VM (File > Export Appliance > choisir VM à exporter > Donner une destination et un nom à l'Appliance (.ova) > Vérification puis export)
- Importer VM (File > Import Appliance > choisir fichier ova > Vérifier / donner nom et modifier path disque dur vmdk puis Importer)
- Changer le port RDP (méthode décrite ci-dessus donc via CLI ou via l'interface web dans la configuration de la nouvelle VM)
- regénérer une nouvelle adresse MAC via l'interface web dans les paramètres de configuration ou via CLI :
# su - vbox $ VBoxManage modifyvm "xp" --macaddress1 auto
On peut également faire comme ceci.
# su - vbox $ VboxManage clonevm VM --name VM_CLONE --register
Cela régénérera un nouvel UUID ainsi qu'une nouvelle adresse MAC pour la VM_CLONE.
Changer l'UUID d'un disque vmdk
# su - vbox $ VBoxManage internalcommands sethduuid /path/to/disk.vdi
Regénérer une adresse MAC
# su - vbox $ VBoxManage modifyvm "xp" --macaddress1 auto
Activer la fonctionnalité vrde et configurer un port vrde
# su - vbox $ VBoxManage list vms $ VBoxManage modifyvm "test" --vrde on $ VBoxManage modifyvm "test" --vrdeport 5000
Renommer une VM
# su - vbox $ VboxManage modifyvm VM_AVANT --name VM_APRES
N.B. Cela changera également le nom de tout les fichiers de la VM, hormis le fichier VDI. Pour renommer celui-ci, il n'y a pas d'autre solution que de le cloner.
Supprimer une VM
# su - vbox $ VboxManage unregistervm VM --delete
Clavier en qwerty
Windows: alt + shift dans la console phpvirtualbox > switch to azerty
Sur la session RDP, la clavier est en azerty
Linux: Fichier <path>/etc/sysconfig/keyboard</path>
KEYTABLE="en_us"
Reboot de la VM.
Pointeur de la souris décallé
Lors de la prise en main de la VM via le RDP de VirtualBox ou bien via l'onglet « Console », le pointeur de la souris est décalé par rapport au pointeur du poste qui prend la main. Pour résoudre ce problème, il faut installer sur le système les programmes additionnels invités (Guest Additions).
On peut télécharger l'image ISO à cet adresse:
http://download.virtualbox.org/virtualbox/
Il suffit alors de se rendre dans le dossier correspondant à notre version de VirtualBox et de télécharger l'image sur le serveur. Ensuite, il faut monter l'image sur la VM, et lancer le fichier « VBoxWindowsAdditions.exe ». Après l'installation, il faudra redémarrer la VM.
Augmenter la taille d'un disque dur virtuel VDI
Arrêter la VM cible pour laquelle on veut modifier la taille du disque puis sur le serveur Virtualbox :
# su - vbox $ VBoxManage modifyhd /home/vbox/MaVM/MonDisque.vdi --resize 10000
On va utiliser la distribution Gparted pour allouer l'espace disque disponible sur le disque dur virtuel. Monter l'ISO sur le lecteur CD virtuel et booter sur celui-ci.
Une fois que la VM a démarrée sur Gparted, il suffit de créer une nouvelle partition avec l'espace disque disponible (tout l'espace disque). On crée une partition primaire non formatée car on va gérer le volume avec LVM. On arrête alors de nouveau la VM et on démonte l'ISO du lecteur CD virtuel.
On redémarre la VM et on utilise fdisk pour changer le type de partition (tag) qui est actuellement du type 83 Linux et qu'il faut modifier en 8e Linux LVM Affichage des partitions courantes
# fdisk -l Disque /dev/sda: 10.4 Go, 10485760000 octets 255 heads, 63 sectors/track, 1274 cylinders Unités = cylindres de 16065 * 512 = 8225280 octets Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1044 8281507+ 8e Linux LVM /dev/sda3 1045 1275 1853440 83 Linux
Modification du type de partition
# fdisk /dev/sda Le nombre de cylindres pour ce disque est initialisé à 1274. Il n'y a rien dincorrect avec cela, mais c'est plus grand que 1024, et cela pourrait causer des problèmes en fonction pour certaines configurations: 1) logiciels qui sont exécutés à l'amorçage (i.e., vieilles versions de LILO) 2) logiciels d'amorçage et de partitionnement pour d'autres SE (i.e., DOS FDISK, OS/2 FDISK) Commande (m pour l'aide): p Disque /dev/sda: 10.4 Go, 10485760000 octets 255 heads, 63 sectors/track, 1274 cylinders Unités = cylindres de 16065 * 512 = 8225280 octets Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1044 8281507+ 8e Linux LVM /dev/sda3 1045 1275 1853440 83 Linux Commande (m pour l'aide): t Numéro de partition (1-4): 3 Code Hex (taper L pour lister les codes): 8e Type de partition système modifié de 3 à 8e (Linux LVM) Commande (m pour l'aide): p Disque /dev/sda: 10.4 Go, 10485760000 octets 255 heads, 63 sectors/track, 1274 cylinders Unités = cylindres de 16065 * 512 = 8225280 octets Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1044 8281507+ 8e Linux LVM /dev/sda3 1045 1275 1853440 8e Linux LVM Commande (m pour l'aide): w La table de partitions a été altérée! Appel de ioctl() pour relire la table de partitions. AVERTISSEMENT: la re-lecture de la table de partitions a échoué avec l'erreur 16: Périphérique ou ressource occupé. Le kernel va continuer d'utiliser l'ancienne table. La nouvelle table sera utilisé lors du prochain réamorçage. Synchronisation des disques.
Enfin on va utiliser cette nouvelle partition (/dev/sda3) pour augmenter la taille du volume LVM principal. Préparation de la partition afin de l'inclure à lvm. On créer pour cela un volume physique lvm sur celle-ci.
# pvcreate /dev/sda3 pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup00 lvm2 a- 7,88G 0 /dev/sda3 lvm2 a- 1,77G 1,77G
Ajout du volume physique au groupe de volume
# vgextend VolGroup00 /dev/sda3 Volume group "VolGroup00" successfully extended
# vgdisplay --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 9,62 GB PE Size 32,00 MB Total PE 308 Alloc PE / Size 252 / 7,88 GB Free PE / Size 56 / 1,75 GB VG UUID dTKLz4-DsDe-3wqC-55OT-czuA-LaPj-RjSjYH
Redimensionnement du volume logique existant
# lvresize --size +1,75G /dev/VolGroup00/LogVol00 Extending logical volume LogVol00 to 8,62 GB Logical volume LogVol00 successfully resized
Redimensionnement de la partition lvm
# resize2fs /dev/VolGroup00/LogVol00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2260992 (4k) blocks. Le système de fichiers /dev/VolGroup00/LogVol00 a maintenant une taille de 2260992 blocs.
# df -h
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/mapper/VolGroup00-LogVol00
8,4G 1,3G 6,7G 17% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 249M 0 249M 0% /dev/shm
La sortie de la commande 'df' avant l'extension était :
# df -h
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/mapper/VolGroup00-LogVol00
6,7G 1,3G 5,1G 21% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 249M 0 249M 0% /dev/shm
Augmenter la taille d'un disque dur virtuel VMDK
On arrête tout d'abord la VM. Ensuite, il va falloir faire un snapshot et le merger dans le disque, pour sauvegarder l'état courant de la VM. Sans ça, on se retrouvera avec une VM qui n'est pas à jour car toutes les modifications récentes se mettent dans un disque virtuel différentiel et non dans le disque lui même.Pour faire cela, via l'interface phpVirtualBox, il suffit de prendre un snapshot et de le restaurer.S'il existe d'autres snapshots, il faudra les restaurer un par un du plus bas au plus haut dans l'arborescence.Ensuite il va falloir convertir le disque dans le format VDI pour pouvoir le redimensionner :
# su - vbox -c "vboxmanage clonehd /home/vbox/MaVM/MonDisque.vmdk /home/vbox/MaVM/MonDisque.vdi --format VDI"
Puis on le redimensionne :
# su - vbox -c "vboxmanage modifyhd /home/vbox/MaVM/MonDisque.vdi --resize 40000"
On peut ensuite supprimer l'ancien disque VMDK et attacher le VDI à la VM.
On utilisera la procédure décrite au dessus pour attribuer l'espace disque rajouté sur un serveur Linux. Sur un serveur Windows, il suffira de passer par le gestionnaire de disque via Ordinateur / clic droit Gérer / Gestion des disques, où l'on étendra simplement la partition principale avec l'espace disponible que l'on vient de rajouter (clic droit / étendre le volume).
Retrouver ses paramètres réseaux après un export/import
Après avoir exporté puis importé une VM, celle-ci n'a plus les mêmes paramètres réseaux qu'avant (IP, netmask, gateway...).
Cela est dû au fait que VirtualBox affecte une autre adresse MAC à la carte réseau.
En réalité, le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 qui contenait ces paramètres est toujours là mais renommé en ifcfg-eth0.bak.
Il suffit alors de le renommer ifcfg-eth0 en écrasant celui par défaut, puis de noter l'adresse MAC, arrêter la VM et aller configurer l'adresse MAC relevée dans l'interface phpVirtualBox.
Au redémarrage de la VM, celle-ci aura retrouvé ses paramètres.
Erreur Error logging in to vboxwebsrv lors de la connexion sur phpvirtualbox
Pour corriger cette erreur, il faut exécuter les commandes suivantes :
# su - vbox -c "VBoxManage setproperty websrvauthlibrary null" # /etc/init.d/vboxweb-service restart
Après ça, on peut rafraîchir la page web de phpvirtualbox et on peut se connecter.
Erreur Failed to open/create the internal network (VERR_INTNET_FLT_IF_NOT_FOUND)
Cette erreur signifie que l'interface réseau n'est pas correctement attaché à la VM, on va le constater avec la commande suivante :
# su - vbox -c "vboxmanage showvminfo aaa"NIC 1: MAC: 080027A43A3E, Attachment: Bridged Interface , Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
On configure donc l'interface eth0 sur la VM comme ceci :
# su - vbox -c "vboxmanage modifyvm aaa --bridgeadapter1 eth0" # su - vbox -c "vboxmanage showvminfo aaa "NIC 1: MAC: 080027A43A3E, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
Update de Virtualbox et de phpvirtualbox
Pour mettre à jour virtualbox, il est nécessaire de désinstaller le package rpm de la version courante puis d'installer celui de la nouvelle version. Il faut donc au préalable arrêter toutes les VM en cours d'exécution sur le serveur.
Mise à jour mineure
Voici la procédure pour un update de version mineure (ici on passe de la version 4.0.8 à la 4.0.12)
Arrêt de toutes les VM
Mise à jour Virtualbox
yum install VirtualBox-4.0
Suppression de l'ancien Extension Pack
# su vbox -c 'VBoxManage list extpacks' Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.0.8 Revision: 71778 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:
# VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack" 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Successfully uninstalled "Oracle VM VirtualBox Extension Pack".
# su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"' 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Successfully uninstalled "Oracle VM VirtualBox Extension Pack".
# VBoxManage list extpacks Extension Packs: 0
# su vbox -c 'VBoxManage list extpacks' Extension Packs: 0
Téléchargement et installation du nouveau Extension Pack
# wget http://download.virtualbox.org/virtualbox/4.0.12/Oracle_VM_VirtualBox_Extension_Pack-4.0.12-72916.vbox-extpack #chmod +x Oracle_VM_VirtualBox_Extension_Pack-4.0.12-72916.vbox-extpack # VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.12-72916.vbox-extpack
# VBoxManage list extpacks Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.0.12 Revision: 72916 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:
# su vbox -c 'VBoxManage list extpacks' Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.0.12 Revision: 72916 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:
Vérification du numéro de version
Vérification à effectuer sur l'application phpvirtualbox
Mise à jour majeure
Voici la procédure pour un update de version majeure (ici on passe de la version 4.0.12 à la 4.1.2)
Arrêt de toutes les VM
Mise à jour Virtualbox
yum install VirtualBox-4.0
Suppression de l'ancien Extension Pack
# su vbox -c 'VBoxManage list extpacks' Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.0.12 Revision: 72916 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: false Why unusable: VBoxExtPackRegister returned VERR_VERSION_MISMATCH, pReg=0000000000000000 ErrInfo='VirtualBox version mismatch - expected 4.0 got 4.1'
# VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack" 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Successfully uninstalled "Oracle VM VirtualBox Extension Pack".
# su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"' 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Successfully uninstalled "Oracle VM VirtualBox Extension Pack".
# VBoxManage list extpacks
# su vbox -c 'VBoxManage list extpacks'
Téléchargement et installation du nouveau Extension Pack
# wget http://download.virtualbox.org/virtualbox/4.1.2/Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack # chmod -x Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack # VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack # VBoxManage list extpacks Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.1.2 Revision: 73507 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:
su vbox -c 'VBoxManage list extpacks' Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.1.2 Revision: 73507 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:
La version courante de phpvirtualbox est fonctionnelle pour virtualbox en version 4.0.X mais ne fonctionne pas pour les version 4.1.X, il est donc nécessaire de mettre à jour phpvirtualbox. Les manipulations sont assez simples, voici le détail :
Mise à jour de phpvirtualbox
# mv /var/www/html/phpvirtualbox /var/www/html/phpvirtualbox.bak # cd /downloads # wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-2.zip # unzip phpvirtualbox-4.1-2.zip # cd phpvirtualbox-4.1-2 # mkdir /var/www/html/phpvirtualbox # cp -r * /var/www/html/phpvirtualbox/ # cd /var/www/html/phpvirtualbox/ # cp config.php-example config.php
Fichier <path>/var/www/html/phpvirtualbox/config.php</path>
var $username = 'vbox';
var $password = 'vbox';
var $location = 'http://127.0.0.1:18083/';
var $consoleHost = '192.168.0.17';
var $rdphost = '192.168.0.17';
SCRIPTS
Backup manuel
#!/bin/bash ##
# ##
# Script Name: backup_vm_vbox.sh ##
# Script description: List running vms, choose VM to save, remove old backup, take snapshot of VM, ##
# halt VM, export this VM to OVA file, start VM, move OVA file to backup directory. ##
# Note: This script can be used only for running Linux VMs, we have to launch it manually. ##
# ##
# GG - B2PWeb - 05082011 ##
##########################################################################################################
###########################################
## Define Time and directories variables ##
###########################################
## Time
date=`date '+%d-%m-%Y-%Hh%Mm%Ss'`
now=`date '+%Hh%Mm%Ss'`
## Directories
vboxdir=/home/vbox
vmdir=/home/vbox/VirtualBox\ VMs
backupdir=/opt/backup
##################################################
## Choose VM and define snap / export variables ##
##################################################
## List running VMs
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : List of running VMs"
su vbox -c "VBoxManage list runningvms"
## Nom VM
echo -e "Veuillez indiquer le nom de la machine virtuelle à sauvegarder:"
read vmname
## Variables files
vmsnap=snap_"$vmname"_"$date"
vmexport="$vmname"_"$date".ova
###############
## Backup VM ##
###############
## Suppression ancien backup
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Remove old backup files"
rm -rf $backupdir/$vmname*
## Take snapshot of this VM
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Take a snapshot of this VM"
su vbox -c "VBoxManage snapshot $vmname take $vmsnap --pause"
## Halt VM
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Halt this VM"
ssh $vmname halt
## Wait for halting
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Waiting one minute"
sleep 60
## Export VM
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Export this VM to OVA file"
su vbox -c "VBoxManage export $vmname -o $vboxdir/$vmexport"
## Start VM
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Starting VM"
su vbox -c "VBoxManage startvm "$vmname" --type headless"
## Move OVA file to backup directory
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Move OVA file to backup directory"
mv $vboxdir/$vmexport $backupdir/
# EOS
Snapshot manuel
#!/bin/bash ##
# ##
# Script Name: snapshot_vm_vbox.sh ##
# Script description: List running vms, choose VM to save, take snapshot of VM (with pause), ##
# Note: This script can be used only for running Linux VMs, we have to launch it manually. ##
# ##
# GG - B2PWeb - 21092011 ##
##########################################################################################################
###########################################
## Define Time and directories variables ##
###########################################
## Time
date=`date '+%d-%m-%Y-%Hh%Mm%Ss'`
now=`date '+%Hh%Mm%Ss'`
## Directories
vboxdir=/home/vbox
vmdir=/home/vbox/VirtualBox\ VMs
##################################################
## Choose VM and define snap / export variables ##
##################################################
## List running VMs
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : List of running VMs"
su vbox -c "VBoxManage list runningvms"
## Nom VM
echo -e "Veuillez indiquer le nom de la machine virtuelle pour le snapshot:"
read vmname
## Variables files
vmsnap=snap_"$vmname"_"$date"
#################
## Snapshot VM ##
#################
## Take snapshot of this VM
now=`date '+%Hh%Mm%Ss'`
echo -e "$now : Take a snapshot of this VM"
su vbox -c "VBoxManage snapshot $vmname take $vmsnap --pause"
# EOS
Memory overcommitment
Dans les environnements serveur avec plusieurs VMs, les Guest Additions peuvent être utilisés pour partager de la mémoire hôte physique entre plusieurs VMs, en réduisant la quantité totale de mémoire en utilisation par les VMs. Si l'utilisation de la mémoire est le facteur limite et les ressources CPU demeurent disponibles, ceci peut aider pour avoir plus de VMs sur chaque hôte.
Memory Ballooning
A partir de la version 3.2, Les Guest Additions de VirtualBox peuvent changer la quantité de mémoire hôte qu'une VM utilise lorsque la machine est en cours d'exécution. En raison de comment elle est implémentée, cette fonctionnalité est nommée « memory ballooning ».
VirtualBox supporte le memory ballooning seulement sur les hôtes 64 bits et n'est pas supportée sur les hôtes Mas OS X.
Normalement, pour changer la quantité de mémoire allouée à une machine virtuelle, il faut arrêter la machine virtuelle entièrement et modifier ses paramètres. Avec le ballon de mémoire, la mémoire qui a été allouée pour une machine virtuelle peut être donnée à une autre machine virtuelle sans avoir à éteindre la machine.
Lorsque la mémoire ballon est demandée, les Guest Additions de VirtualBox (qui s'exécutent à l'intérieur de l'invité) allouent de la mémoire physique du système d'exploitation invité sur le niveau du noyau et verrouille cette mémoire dans l'invité.
Cela garantit que l'invité n'utilisera pas cette mémoire plus longtemps: aucunes applications clientes ne peut se l'allouer, et le noyau invité ne l'utilisera pas non plus. VirtualBox peut ensuite réutiliser cette mémoire et la donner à une autre machine virtuelle.
La mémoire disponible par l'intermédiaire du mécanisme de gonflement est uniquement disponible pour la réutilisation par VirtualBox. Elle n'est pas retournée comme mémoire libre pour l'hôte. Le fait de demander de la mémoire ballon à partir d'un invité en cours d'exécution ne fera donc pas augmenter la quantité de mémoire libre non allouée sur l'hôte. En effet, la mémoire ballon est donc un mécanisme de surcharge de mémoire pour de multiples machines virtuelles pendant leur exécution.
Cela peut être utile pour démarrer temporairement une autre machine, ou dans des environnements plus complexes, pour la gestion de la mémoire sophistiquée de nombreuses machines virtuelles qui peuvent être exécutées en parallèle selon la façon dont la mémoire est utilisée par les invités.
Pour le moment, la mémoire ballooning est prise en charge uniquement par le biais de VBoxManage. Utilisez la commande suivante pour augmenter ou diminuer la taille du ballon de mémoire dans une machine virtuelle qui a les Guest Additions installés:
VBoxManage controlvm "VM name" guestmemoryballoon <n>
où "VM name" est le nom ou l'UUID de la machine virtuelle en question et <n> est la quantité de mémoire à allouer depuis l'invité en méga-octets. Voir la section intitulée « VBoxManage controlvm » pour plus d'informations.
Vous pouvez également définir un ballon par défaut qui sera automatiquement demandé par la VM à chaque fois après qu'elle ai démarré avec la commande suivante:
VBoxManage modifyvm "VM name" --guestmemoryballoon <n>
Par défaut, aucun ballon de mémoire n'est alloué. Ceci est un paramètre VM, comme les autres paramètres modifyvm, et ne peut donc être réglé que lorsque la machine est arrêtée, voir la section intitulée «VBoxManage modifyvm".
Page Fusion
Alors que la mémoire ballon réduit simplement la quantité de RAM qui est disponible pour une machine virtuelle, Page Fusion fonctionne différemment: il évite la duplication de la mémoire entre plusieurs machines virtuelles similaires en exécution.
Dans un environnement serveur exécutant plusieurs machines virtuelles similaires (par exemple avec des systèmes d'exploitation identiques) sur le même hôte, beaucoup de pages de mémoire sont identiques. La technologie VirtualBox Page Fusion, introduite dans VirtualBox 3.2, est une nouvelle technique pour identifier efficacement ces pages mémoire identiques et les partager entre plusieurs machines virtuelles.
VirtualBox supporte Page Fusion seulement sur les hôtes 64 bits, et il n'est pas pris en charge sur les hôtes Mac OS X. Fusion page ne fonctionne actuellement qu'avec les clients Windows (2000 et plus).
Plus les machines virtuelles sur un hôte donné sont similaires, plus Page Fusion peut efficacement réduire la quantité de mémoire de l'hôte qui est en cours d'utilisation. Il fonctionne mieux donc si toutes les machines virtuelles sur un hôte exécutent des systèmes d'exploitation identiques (par exemple Windows XP Service Pack 2). Au lieu d'avoir une copie complète de chaque système d'exploitation dans chaque VM, Page Fusion identifie les pages mémoire identiques utilisatées par ces systèmes d'exploitation et élimine les doublons, en partageant de la mémoire hôte entre plusieurs machines («la déduplication"). Si une machine virtuelle tente de modifier une page qui a été partagée avec d'autres machines virtuelles, une nouvelle page est allouée à nouveau pour ceete VM avec une copie de la page partagée ("copy on write"). Tout cela est totalement transparent pour la machine virtuelle.
Vous connaissez peut-être ce genre de surcharge de mémoire à partir d'autres produits hyperviseur, qui appellent cette fonction « page sharing » ou « same page merging ». Toutefois, Page Fusion diffère sensiblement de ces autres solutions, dont les approches présentent plusieurs inconvénients:
- Les hyperviseurs traditionnels scannent toute la mémoire et calculer les sommes de contrôle (hashes) pour chaque page de mémoire unique. Puis, ils recherchent des pages avec des hashes identiques et comparent la totalité du contenu de ces pages, si deux pages produisent le même hachage, il est très probable que les pages ont un contenu identique. Ceci, bien sûr, peut prendre un peu de temps, surtout si le système n'est pas au repos (idle). En conséquence, la mémoire supplémentaire ne devient disponible qu'après une quantité importante de temps (cela peut durer des heures voire des jours!).
Pire encore, ce genre d'algorithme de partage de page consomme généralement d'importantes ressources CPU et augmente la surcharge de virtualisation de 10-20%.
Page Fusion dans VirtualBox utilise la logique des Guest Additions de VirtualBox pour identifier rapidement les cellules de mémoire qui sont les plus susceptibles d'être identiques à travers les machines virtuelles. On peut donc atteindre la plupart des économies possibles de partage de page presque immédiatement et avec presque pas de charge. (genre eux c'est des ouf …) - Page Fusion est aussi beaucoup moins susceptibles d'être désorienté par la mémoire identique qu'il éliminera simplement pour apprendre quelques secondes plus tard que la mémoire va maintenant changer et il devra ainsi effectuer une redistribution très coûteuse engendrant souvent une interruption de service.
Actuellement Page Fusion peut seulement être contrôlé avec VBoxManage, et seulement si la machine virtuelle est arrêtée. Pour activer Page Fusion pour une machine virtuelle, utilisez la commande suivante:
VBoxManage modifyvm "VM name" --pagefusion on
Vous pouvez observer le fonctionnement de Page Fusion en utilisant quelques métriques. RAM / VMM / Shared indique le montant total de pages fusionnées, alors que la métrique per-VM Guest / RAM / Utilisation / Shared retournera la quantité de mémoire fusionnée pour une VM donnée. Se référer à la section intitulée "VboxManage metrics"pour plus d'informations sur la façon d'interroger les métriques.
- ↑ Page de phpvirtualbox http://code.google.com/p/phpvirtualbox