« Virt/VirtualBox » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
 
(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 =
On installe maintenant VirtualBox
== 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 ensuite phpvirtualbox
== 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/
On installe le module php json et on restart Apache
# pecl install json
# /etc/init.d/httpd start
On vérifie la présence des modules php soap et json
# php -i | grep soap
# php -i | grep json


= Configuration de phpvirtualbox =
= Configuration de phpvirtualbox =
Ligne 54 : Ligne 93 :
  # /etc/init.d/vboxweb-service status
  # /etc/init.d/vboxweb-service status


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 ).
= Utilisation =
# cd /downloads
=== Cloner des VM ===
# wget http://download.virtualbox.org/virtualbox/4.0.8/Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack
Pour cloner des VM et ainsi gagner du temps sur l'installation de la VM, on peut procéder ainsi:
# 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
 
# su vbox -c 'VBoxManage list extpacks'
# su vbox -c 'VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"'
# su vbox -c 'VBoxManage list extpacks'
 
Lorsque on crée une nouvelle VM, pour activer le bouton console de la VM sur phpvirtualbox.
 
[[Image:]]
 
Voici les commandes a lancer (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.
 
= Cloner des VM =
Pour cloner des VM et ainsi gagner du temps sur l'installation de la VM, on peut procéder ainsi&nbsp;:


* 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 ===
'''Changer l'UUID d'un disque vmdk&nbsp;:'''
  # su - vbox
  # su - vbox
  $ VBoxManage internalcommands sethduuid /path/to/disk.vdi
  $ VBoxManage internalcommands sethduuid /path/to/disk.vdi


'''Regénérer une adresse MAC&nbsp;:'''
=== 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&nbsp;:'''
=== 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&nbsp;:'''
=== 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&nbsp;:'''
=== Supprimer une VM ===
  # su - vbox
  # su - vbox
  $ VboxManage unregistervm VM --delete
  $ VboxManage unregistervm VM --delete


'''Clavier en qwerty&nbsp;:'''
=== Clavier en qwerty ===
 
Windows:
 
alt + shift dans console phpvirtualbox > switch to azerty
 
Attention 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.


'''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.


/etc/init.d/network restart
=== Pointeur de la souris décallé ===
 
ou reboot
 
 
'''Pointeur de la souris décallé&nbsp;:'''


Lors de la prise en main de la VM via le RDP de VirtualBox ou bien via l'onglet «&nbsp;Console&nbsp;», 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 «&nbsp;Console&nbsp;», 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&nbsp;:
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 «&nbsp;VBoxWindowsAdditions.exe&nbsp;». 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 «&nbsp;VBoxWindowsAdditions.exe&nbsp;». Après l'installation, il faudra redémarrer la VM.


 
=== Augmenter la taille d'un disque dur virtuel VDI ===
'''Augmenter la taille d'un disque dur virtuel VDI&nbsp;:'''


Arrêter la VM cible pour laquelle on veut modifier la taille du disque puis sur le serveur Virtualbox&nbsp;:
Arrêter la VM cible pour laquelle on veut modifier la taille du disque puis sur le serveur Virtualbox&nbsp;:
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 en 83 Linux et qu'il faut modifier en 8e Linux LVM&nbsp;:
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% /
              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&nbsp;:
La sortie de la commande 'df' avant l'extension était&nbsp;:
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 0%   /dev/shm
  tmpfs        249M    0 249M   0%   /dev/shm


'''Augmenter la taille d'un disque dur virtuel VMDK&nbsp;:'''
=== 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&nbsp;:
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&nbsp;:
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 ===
'''Retrouver ses paramètres réseaux après un export/import&nbsp;:'''


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 ===
'''Erreur Error logging in to vboxwebsrv lors de la connexion sur phpvirtualbox&nbsp;:'''


Pour corriger cette erreur, il faut exécuter les commandes suivantes&nbsp;:
Pour corriger cette erreur, il faut exécuter les commandes suivantes&nbsp;:
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) ===
'''Erreur Failed to open/create the internal network (VERR_INTNET_FLT_IF_NOT_FOUND)&nbsp;:'''


Cette erreur signifie que l'interface réseau n'est pas correctement attaché à la VM, on va le constater avec la commande suivante&nbsp;:
Cette erreur signifie que l'interface réseau n'est pas correctement attaché à la VM, on va le constater avec la commande suivante&nbsp;:
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 VIRtualbox et phpvirtualbox =
= 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)&nbsp;:
== 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)
Téléchargement de la dernière release


# cd /downloads
'''Arrêt de toutes les VM'''
# wget VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm
 
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
# rpm -qa | grep VirtualBox
# VirtualBox-4.0-4.0.8_71778_rhel5-1
# VirtualBox-4.0-4.0.8_71778_rhel5-1
# rpm -e VirtualBox-4.0-4.0.8_71778_rhel5-1</pre>
# rpm -e VirtualBox-4.0-4.0.8_71778_rhel5-1
 
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>}}


# rpm -Uvh VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm
'''Suppression de l'ancien Extension Pack'''
 
Remove old Extension Pack


  # su vbox -c 'VBoxManage list extpacks'
  # su vbox -c 'VBoxManage list extpacks'
Ligne 375 : Ligne 376 :
  Extension Packs: 0
  Extension Packs: 0
   
   
DL & Install New Extension Pack
'''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:


Check release version
'''Vérification du numéro de version'''


F5 phpvirtualbox > OK
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)&nbsp;:
== 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'''


{| style="border-spacing:0;"
'''Mise à jour Virtualbox'''
| style="border:0.05pt solid #000000;padding:0.097cm;"| <nowiki>## DL Last release</nowiki>
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>}}


cd /downloads
'''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'


wget http://download.virtualbox.org/virtualbox/4.1.2/VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm
# 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".


<nowiki>## halt de toutes les VM</nowiki>
# VBoxManage list extpacks


# su vbox -c 'VBoxManage list extpacks'


<nowiki>## Remove Vbox</nowiki>
'''Téléchargement et installation du nouveau Extension Pack'''


rpm -qa | grep VirtualBox
# 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:


VirtualBox-4.0-4.0.12_72916_rhel5-1
su vbox -c 'VBoxManage list extpacks'
 
Extension Packs: 1
rpm -e VirtualBox-4.0-4.0.12_72916_rhel5-1
Pack no. 0: Oracle VM VirtualBox Extension Pack
 
Version: 4.1.2
rpm -qa | grep VirtualBox
Revision: 73507
 
Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
<nowiki>#</nowiki>
VRDE Module: VBoxVRDP
 
Usable: true
 
Why unusable:
<nowiki>## Install New release</nowiki>
 
rpm -Uvh VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm
 
 
<nowiki>## Remove old Extension Pack</nowiki>
 
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'
 
 
<nowiki>## DL & Install New Extension Pack</nowiki>
 
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&nbsp;:
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&nbsp;:


'''Mise à jour de phpvirtualbox'''


{| style="border-spacing:0;"
# mv /var/www/html/phpvirtualbox /var/www/html/phpvirtualbox.bak
| style="border:0.05pt solid #000000;padding:0.097cm;"| <nowiki>## Update phpvirtualbox version</nowiki>
# 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>
<nowiki>## Check release version</nowiki>
virtualbox > OK
phpvirtualbox > OK
|}


= 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 ==


'''Memory Ballooning&nbsp;:'''
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 «&nbsp;memory ballooning&nbsp;».
 


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.


Normalement,&nbsp;pour changer la&nbsp;quantité de mémoire allouée&nbsp;à une machine virtuelle,&nbsp;il faut&nbsp;arrêter la machine&nbsp;virtuelle&nbsp;entièrement&nbsp;et modifier ses paramètres.&nbsp;Avec&nbsp;le ballon&nbsp;de mémoire, la&nbsp;mémoire qui a été&nbsp;allouée&nbsp;pour une machine virtuelle peut être donnée&nbsp;à une autre&nbsp;machine virtuelle&nbsp;sans avoir à&nbsp;é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&nbsp;la mémoire ballon est demandée,&nbsp;les&nbsp;Guest Additions&nbsp;de VirtualBox&nbsp;(qui s'exécutent à l'intérieur&nbsp;de l'invité)&nbsp;allouent de la mémoire&nbsp;physique du système d'exploitation invité&nbsp;sur le&nbsp;niveau du noyau&nbsp;et verrouille&nbsp;cette mémoire&nbsp;dans&nbsp;l'invité.
 
Cela garantit que&nbsp;l'invité&nbsp;n'utilisera pas cette mémoire&nbsp;plus longtemps:&nbsp; aucunes applications&nbsp;clientes ne peut se l'allouer,&nbsp;et le&nbsp;noyau invité&nbsp;ne l'utilisera pas&nbsp;non plus. VirtualBox&nbsp;peut&nbsp;ensuite réutiliser&nbsp;cette mémoire&nbsp;et la donner à&nbsp;une autre machine virtuelle.
 
 
La mémoire&nbsp;disponible&nbsp;par l'intermédiaire du&nbsp;mécanisme de&nbsp;gonflement&nbsp;est uniquement disponible pour&nbsp;la réutilisation&nbsp;par VirtualBox.&nbsp;Elle&nbsp;n'est pas&nbsp;retournée comme&nbsp;mémoire libre pour&nbsp;l'hôte. Le fait de demander de&nbsp;la mémoire ballon&nbsp;à partir d'un&nbsp;invité en cours d'exécution&nbsp;ne fera donc pas augmenter la quantité de mémoire libre non allouée&nbsp;sur l'hôte.&nbsp;En effet, la mémoire ballon est donc&nbsp;un mécanisme de&nbsp;surcharge de mémoire&nbsp;pour de multiples&nbsp;machines virtuelles&nbsp;pendant leur exécution.&nbsp;
 
Cela peut être&nbsp;utile pour démarrer&nbsp;temporairement&nbsp;une autre machine,&nbsp;ou&nbsp;dans des environnements plus&nbsp;complexes,&nbsp;pour la gestion de&nbsp;la mémoire sophistiquée de nombreuses&nbsp;machines virtuelles&nbsp;qui peuvent être&nbsp;exécutées en parallèle&nbsp;selon la façon dont&nbsp;la mémoire est utilisée&nbsp;par les&nbsp;invités.
 
 
Pour le moment, la mémoire ballooning est&nbsp;prise en charge uniquement&nbsp;par le biais de VBoxManage.&nbsp;Utilisez la commande suivante&nbsp;pour augmenter ou diminuer&nbsp;la taille&nbsp;du ballon&nbsp;de mémoire dans&nbsp;une machine virtuelle&nbsp;qui a les&nbsp;Guest Additions&nbsp;installés:
 
 
<nowiki>VBoxManage controlvm "VM name" guestmemoryballoon <n></nowiki>
 
 
où "VM name"&nbsp;est le nom ou l'UUID&nbsp;de la machine virtuelle&nbsp;en question et&nbsp;<nowiki><n> est</nowiki>&nbsp;la quantité de mémoire&nbsp;à allouer depuis&nbsp;l'invité&nbsp;en méga-octets.&nbsp;Voir&nbsp;la section intitulée «&nbsp;VBoxManage&nbsp;controlvm&nbsp;»&nbsp;pour plus d'informations.
 
 
Vous pouvez également définir&nbsp;un ballon&nbsp;par défaut qui&nbsp;sera automatiquement&nbsp;demandé par la&nbsp;VM&nbsp;à chaque fois&nbsp;après qu'elle ai démarré&nbsp;avec&nbsp;la commande suivante:
 
 
<nowiki>VBoxManage modifyvm "VM name" --guestmemoryballoon <n></nowiki>
 
 
Par défaut,&nbsp;aucun ballon de mémoire n'est alloué.&nbsp;Ceci est un paramètre&nbsp;VM, comme les autres paramètres&nbsp;modifyvm,&nbsp;et ne peut donc&nbsp;être réglé que lorsque&nbsp;la machine&nbsp;est arrêtée, voir&nbsp;la section intitulée «VBoxManage&nbsp;modifyvm".  


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.


'''Page Fusion&nbsp;:'''
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.


Alors que'''&nbsp;'''la mémoire'''&nbsp;'''ballon'''&nbsp;'''réduit simplement la quantité'''&nbsp;'''de RAM'''&nbsp;'''qui est disponible pour'''&nbsp;'''une machine virtuelle,&nbsp;Page''' '''Fusion'''&nbsp;'''fonctionne différemment: il'''&nbsp;'''évite la duplication'''&nbsp;'''de la mémoire entre'''&nbsp;'''plusieurs'''&nbsp;'''machines virtuelles similaires en exécution.''' '''
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>


Dans un environnement&nbsp;serveur exécutant&nbsp;plusieurs&nbsp;machines virtuelles&nbsp;similaires&nbsp;(par exemple avec&nbsp;des systèmes d'exploitation&nbsp;identiques)&nbsp;sur le même hôte, beaucoup de pages de mémoire&nbsp;sont identiques.&nbsp;La technologie&nbsp;VirtualBox&nbsp;Page&nbsp;Fusion,&nbsp;introduite dans VirtualBox&nbsp;3.2,&nbsp;est une nouvelle technique&nbsp;pour identifier efficacement&nbsp;ces&nbsp;pages mémoire identiques&nbsp;et les partager entre&nbsp;plusieurs machines virtuelles.  
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:


VirtualBox supporte Page&nbsp;Fusion&nbsp;seulement sur&nbsp;les hôtes 64 bits,&nbsp;et il n'est pas&nbsp;pris en charge sur&nbsp;les hôtes&nbsp;Mac OS X.&nbsp;Fusion&nbsp;page&nbsp;ne ​fonctionne actuellement qu'avec&nbsp;les clients&nbsp;Windows (2000&nbsp;et plus).
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".


Plus les&nbsp;machines virtuelles&nbsp;sur&nbsp;un hôte donné&nbsp;sont similaires, plus Page Fusion peut efficacement&nbsp;réduire la quantité de&nbsp;mémoire de l'hôte&nbsp;qui est&nbsp;en cours d'utilisation.&nbsp;Il fonctionne mieux&nbsp;donc si&nbsp;toutes les machines virtuelles&nbsp;sur un hôte&nbsp;exécutent des systèmes&nbsp;d'exploitation&nbsp;identiques&nbsp;(par exemple&nbsp;Windows XP&nbsp;Service Pack&nbsp;2).&nbsp;Au lieu d'avoir&nbsp;une copie complète&nbsp;de chaque&nbsp;système d'exploitation&nbsp;dans chaque&nbsp;VM, Page&nbsp;Fusion identifie&nbsp;les&nbsp;pages&nbsp;mémoire identiques&nbsp;utilisatées&nbsp;par&nbsp;ces systèmes d'exploitation&nbsp;et élimine&nbsp;les doublons,&nbsp;en partageant de la mémoire&nbsp;hôte entre&nbsp;plusieurs machines&nbsp;(«la déduplication").&nbsp;Si&nbsp;une machine virtuelle&nbsp;tente de modifier&nbsp;une page qui&nbsp;a été partagée avec&nbsp;d'autres machines virtuelles, une&nbsp;nouvelle page est allouée&nbsp;à nouveau pour&nbsp;ceete&nbsp;VM avec
== Page Fusion ==
une&nbsp;copie de la page&nbsp;partagée&nbsp;("copy on write").&nbsp;Tout cela&nbsp;est totalement transparent pour&nbsp;la machine virtuelle.


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.''' '''


Vous&nbsp;connaissez peut-être ce genre&nbsp;de surcharge de mémoire&nbsp;à partir&nbsp;d'autres produits&nbsp;hyperviseur, qui appellent&nbsp;cette fonction&nbsp;«&nbsp;page sharing&nbsp;» ou « same page merging&nbsp;».&nbsp;Toutefois,&nbsp;Page Fusion&nbsp;diffère sensiblement de&nbsp;ces&nbsp;autres solutions,&nbsp;dont les approches&nbsp;présentent plusieurs inconvénients:
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).


# Les hyperviseurs&nbsp;traditionnels&nbsp;scannent&nbsp;toute la mémoire&nbsp;et calculer&nbsp;les sommes de contrôle&nbsp;(hashes)&nbsp;pour chaque page&nbsp;de mémoire unique.&nbsp;Puis, ils recherchent des pages&nbsp;avec des hashes&nbsp;identiques&nbsp;et comparent&nbsp;la totalité du contenu&nbsp;de ces&nbsp;pages, si&nbsp;deux&nbsp;pages&nbsp;produisent&nbsp;le même hachage,&nbsp;il est très probable&nbsp;que les&nbsp;pages&nbsp;ont un contenu identique.&nbsp;Ceci, bien sûr,&nbsp;peut prendre&nbsp;un peu de temps,&nbsp;surtout si&nbsp;le système n'est pas&nbsp;au repos (idle).&nbsp;En conséquence,&nbsp;la mémoire supplémentaire&nbsp;ne devient disponible qu'après&nbsp;une quantité importante&nbsp;de temps&nbsp;(cela peut&nbsp;durer des heures&nbsp;voire des jours!). <br/> Pire encore,&nbsp;ce genre d'algorithme&nbsp;de partage de page&nbsp;consomme généralement d'importantes ressources CPU&nbsp;et augmente&nbsp;la surcharge&nbsp;de virtualisation&nbsp;de 10-20%.<br/> Page Fusion&nbsp;dans&nbsp;
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  
VirtualBox&nbsp;utilise la logique&nbsp;des&nbsp;Guest Additions&nbsp;de VirtualBox&nbsp;pour identifier rapidement les&nbsp;cellules de mémoire qui&nbsp;sont les plus susceptibles&nbsp;d'être identiques à travers&nbsp;les machines virtuelles.&nbsp;On peut donc&nbsp;atteindre la plupart des&nbsp;économies possibles&nbsp;de&nbsp;partage de page&nbsp;presque immédiatement&nbsp;et avec presque&nbsp;pas de charge. (genre eux c'est des ouf …)<br/>
une copie de la page partagée ("copy on write"). Tout cela est totalement transparent pour la machine virtuelle.


# Page Fusion&nbsp;est aussi&nbsp;beaucoup moins&nbsp;susceptibles d'être désorienté&nbsp;par la mémoire identique&nbsp;qu'il éliminera&nbsp;simplement pour apprendre&nbsp;quelques secondes plus tard&nbsp;que la mémoire&nbsp;va maintenant changer&nbsp;et il devra ainsi&nbsp;effectuer une&nbsp;redistribution&nbsp;très coûteuse&nbsp;engendrant souvent&nbsp;une interruption de service.
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:


Actuellement Page Fusion peut seulement&nbsp;être contrôlé avec&nbsp;VBoxManage,&nbsp;et seulement si la machine virtuelle&nbsp;est arrêtée.&nbsp;Pour&nbsp;activer Page Fusion pour&nbsp;une machine virtuelle,&nbsp;utilisez la commande suivante:
# 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&nbsp;observer le fonctionnement&nbsp;de Page Fusion&nbsp;en utilisant&nbsp;quelques métriques. RAM&nbsp;/&nbsp;VMM&nbsp;/ Shared&nbsp;indique le montant&nbsp;total de pages&nbsp;fusionnées, alors que&nbsp;la métrique&nbsp;per-VM Guest /&nbsp;RAM&nbsp;/&nbsp;Utilisation&nbsp;/ Shared&nbsp;retournera&nbsp;la quantité de mémoire fusionnée&nbsp;pour une&nbsp;VM&nbsp;donnée.&nbsp;Se référer à&nbsp;la section intitulée&nbsp;"VboxManage metrics"pour&nbsp;plus d'informations sur la façon&nbsp;d'interroger&nbsp;les métriques.
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
Important.png
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

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.

Idea.png
Cloner un disque vmdk
# su - vbox
 $ cd /home/vbox/VirtualBox\ VMs/
 $ VBoxManage clonehd xp_base_1/-disk1.vmdk xp_base_2.vdi

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

Warning.png
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

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
Idea.png
Mise à jour sans avoir déclaré le repository virtualbox
Téléchargement de la dernière release
# cd /downloads
# wget VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm

Désinstallation de Vbox

# rpm -qa | grep VirtualBox
# VirtualBox-4.0-4.0.8_71778_rhel5-1
# rpm -e VirtualBox-4.0-4.0.8_71778_rhel5-1

Installation de la nouvelle release

# rpm -Uvh VirtualBox-4.0-4.0.12_72916_rhel5-1.x86_64.rpm

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
Idea.png
Mise à jour sans avoir déclaré le repository virtualbox
Téléchargement de la dernière release
# cd /downloads
# wget http://download.virtualbox.org/virtualbox/4.1.2/VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm

Désinstallation de Vbox

# rpm -qa | grep VirtualBox
# VirtualBox-4.0-4.0.12_72916_rhel5-1
# rpm -e VirtualBox-4.0-4.0.12_72916_rhel5-1

Installation de la nouvelle release

# rpm -Uvh VirtualBox-4.1-4.1.2_73507_rhel5-1.x86_64.rpm

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:

  1. 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 …)
  2. 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.