Le stockage virtuel
Comme la machine virtuelle s'attendra, la plupart du temps, à voir un
disque dur construit dans son ordinateur virtuel, VirtualBox doit pouvoir présenter
du "vrai" stockage à l'invité comme un disque dur virtuel. Il existe aujourd'hui
trois méthodes pour faire cela :
Le plus souvent, VirtualBox utilisera de gros fichiers images sur un
vrai disque dur et les présentera à un invité comme des disques durs virtuels.
Cela est décrit au .
Sinon, si vous avez des serveurs de stockage iSCSI, vous pouvez connecter
un tel serveur à VirtualBox comme le décrit le .
Enfin, comme fonction avancée, vous pouvez permettre à une machine
virtuelle d'accéder directement à un des disques durs de votre hôte ;
cette fonction avancée est décrite au .
Chaque périphérique virtuel (fichier image, cible iSCSI ou disque physique)
devra être connecté au contrôleur de disque dur virtuel présenté par VirtualBox
à une machine virtuelle. Ceci est expliqué à la prochaine
section.
Les contrôleurs de disque dur : IDE, SATA (AHCI), SCSI, SAS
Dans un vrai PC, les disques durs et les lecteurs de CD/DVD sont
connectés à un périphérique appelé le contrôleur de disque dur, qui pilote les
opérations du disque dur et les transferts de données. VirtualBox peut émuler
les quatre types contrôleurs de disque les plus courants qu'on trouve en
général dans les PCs d'aujourd'hui : IDE, SATA (AHCI), SCSI et
SAS.
Le support SATA a été ajouté avec VirtualBox 1.6 ; le support SCSI
expérimental a été ajouté à la 2.1 et complètement implémenté avec la
2.2. En général, les connexions de stockage ont été rendues beaucoup plus
flexibles avec VirtualBox 3.1 ; voir ci-dessous. Le support pour
le contrôleur LSI Logic SAS a été ajouté avec
VirtualBox 3.2.
Les contrôleurs IDE (ATA) sont
une extension très avancée de la rétrocompatibilité du contrôleur de
disque dur dans les PC/AT IBM (1984). Au début, cette interface
ne fonctionnait qu'avec des disques durs mais elle a ensuite été
étendue aussi au support des lecteurs CD-ROM et d'autres types de
médias amovibles. Dans des PCs physiques, ce standard utilise des
nappes de 40 ou 80 fils. Chaque câble peut connecter deux périphériques
à un contrôleur, ce qu'on appelait traditionnellement le "maître" et "l'esclave".
Les PCs classiques avaient deux connecteurs par câbles, le support
jusqu'à quatre périphériques était donc classique.
Dans VirtualBox, chaque machine virtuelle peut avoir un contrôleur IDE
activé, ce qui vous donne jusqu'à quatre périphériques de stockage virtuels
connectables à la machine. (Par défaut, un des quatre -- le maître
secondaire -) est préconfiguré pour être le lecteur CD/DVD de la
machine virtuelle, mais ceci peut être modifié.
L'affectation du lecteur CD/DVD de la machine au maître
secondaire était figé avant VirtualBox 3.1 ; il est maintenant
modifiable et le lecteur peut être sur d'autres slots du contrôleur
IDE et il peut y avoir plus de deux lecteurs.
)
Donc, même si votre système d'exploitation invité ne supporte
pas les périphériques SCSI ou SATA, il devrait toujours pouvoir voir
un contrôleur IDE.
Vous pouvez aussi sélectionner le type exact de contrôleur IDE
que VirtualBox devrait matériellement présenter à la machine virtuelle
(PIIX3, PIIX4 ou ICH6). Il n'y a pas de différence en termes de performance,
mais si vous importez une machine virtuelle d'un autre produit de
virtualisation, le système d'exploitation de cette machine peut attendre
un type de contrôleur particulier et planter s'il n'est pas trouvé.
Après avoir créé une nouvelle machine virtuelle avec l'assistant
"Nouvelle Machine virtuelle" de l'interface graphique, vous verrez généralement
un contrôleur IDE dans les paramètres de "Stockage" de la machine, auquel
le lecteur CD/DVD sera connecté, sur un des quatre
ports du contrôleur.
Serial ATA (SATA) est un
standard récent introduit en 2003. Par rapport à l'IDE, il supporte
plus de périphériques par contrôleur et à bien plus haute vitesse. De
plus, avec du matériel physique, les périphériques peuvent être ajoutés
et supprimés pendant que le système fonctionne. L'interface standard
des contrôleurs SATA est appelé
Advanced Host Controller Interface (AHCI).
Comme un vrai contrôleur SATA, le contrôleur SATA virtuel de
VirtualBox travaille plus vite et consomme moins de ressources processeur
que le contrôleur IDE virtuel. De plus, il vous permet de connecter
jusqu'à 30 disques durs virtuels à une machine au lieu de seulement
trois comme avec le contrôleur IDE de VirtualBox (avec le lecteur DVD
déjà connecté).
Pour cette raison, à partir de la version 3.2 et selon le système
d'exploitation invité sélectionné, VirtualBox utilise SATA par défaut
pour les machines virtuelles nouvellement créées. Un contrôleur virtuel
SATA est créé par défaut et le disque par défaut créé avec une nouvelle
VM est connecté à ce contrôleur.
Tout le contrôleur SATA et les disques virtuels qui s'y connectent
(y compris ceux en mode de compatibilité IDE) ne seront pas vus par
les systèmes d'exploitation n'ayant pas de support périphérique
pour AHCI. En particulier, il n'y a pas de
support pour AHCI dans Windows avant Windows Vista, donc
Windows XP (même SP3) ne verra pas de tels disques sauf si vous
installez des pilotes supplémentaires. Il est possible de passer
de l'IDE à SATA après l'installation en installant les pilotes SATA
et en changeant le type de contrôleur dans la boîte de dialogue des
paramètres de la VM.
VirtualBox recommande les pilotes Intel Matrix Storage
qui sont téléchargeables sur http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101.
Pour ajouter un contrôleur SATA à une machine pour laquelle il n'a
pas été activé par défaut (soit parce qu'elle a été créée par une
version antérieure VirtualBox, soit parce que SATA n'est pas supporté
par défaut par le système d'exploitation invité sélectionné), allez
dans l'onglet "Stockage" de la boîte de dialogue des paramètres de la
machine, cliquez sur le bouton "Ajouter un contrôleur" sous la case
"Arborescence de stockage" puis sélectionnez "Ajouter un contrôleur
SATA". Après quoi, le contrôleur traditionnel apparaîtra comme un
périphérique PCI distinct dans la machine virtuelle et vous pouvez y ajouter
des disques virtuels.
Pour modifier les paramètres du mode de compatibilité IDE pour
le contrôleur SATA, merci de voir .
SCSI est un autre standard
industriel signifiant "Small Computer System Interface".
SCSI a été standardisé dès 1986 comme une interface générique pour
transférer des données entre tous les types de périphériques, y compris
ceux de stockage. Aujourd'hui, SCSI est encore utilisé pour connecter
des disques durs et des lecteurs à bandes, mais il est généralement devenu
un matériel de convenance. On l'utilise encore souvent sur des stations
de travail et des serveurs à haute performance.
En priorité pour des raisons de compatibilité avec d'autres
logiciels de virtualisation, VirtualBox supporte en option les contrôleurs
LSI Logic et BusLogic SCSI, chacun d'entre eux pouvant gérer jusqu'à
15 disques durs virtuels.
Pour activer un contrôleur SCSI, sur l'onglet "Stockage" de la
boîte de dialogue des paramètres d'une machine virtuelle, cliquez sur
le bouton "Ajouter un contrôleur" sous la case "Arborescence de
stockage" puis sélectionnez "Ajouter un contrôleur SCSI". Après quoi,
le contrôleur supplémentaire apparaîtra comme périphérique PCI distinct
dans la machine virtuelle.
Comme avec les autres types de contrôleurs, un contrôleur SCSI
ne sera vu que par les systèmes d'exploitation ayant un support
de ce périphérique.
Windows 2003 et supérieur incluent des pilotes pour le contrôleur
LSI Logic, tandis que Windows NT 4.0 et Windows 2000 incluent
des pilotes pour le contrôleur BusLogic. Windows XP n'inclut
aucun pilote.
Serial Attached SCSI (SAS) est
un autre standard de bus qui utilise le jeu de commandes SCSI. Mais
contrairement au SCSI, avec les périphériques physiques, on utilise
des câbles série au lieu de ceux parallèles, ce qui simplifie la
connexion de périphériques physiques. D'une certaine manière, SAS
est donc au SCSI ce que SATA est à l'IDE: il permet des connexions
plus fiables et plus rapides.
Pour supporter des invités de haut niveau exigeant des contrôleurs
SAS, VirtualBox émule un contrôleur a LSI Logic SAS qui peut être
activé de la même façon qu'un contrôleur SCSI. Pour le moment, on
peut connecter jusqu'à huit périphériques au contrôleur SAS.
Comme avec SATA, le contrôleur SAS ne sera vu que par les systèmes
d'exploitation supportant ce périphérique. En particulier,
il n'y a pas de support de SAS dans Windows
avant Windows Vista, donc Windows XP (même SP3) ne
verra pas de tels ditques, sauf si vous installez des pilotes supplémentaires.
En résumé, VirtualBox vous offre les catégories de connecteur (slot) de stockage
virtuels suivantes :
quatre slots attachés au contrôleur IDE traditionnel, qui sont
toujours présents (un d'eux est en général un lecteur de CD/DVD
virtuel) ;
30 slots attachés au contrôleur SATA s'il est activé et si votre
système d'exploitation invité le supporte ;
15 slots attachés au contrôleur SCSI s'il est activé et si le
système d'exploitation invité peut le voir ;
huit slots attachés au contrôleur SAS, s'il est activé et si le
système d'exploitation invité peut le voir ;
Étant donné le vaste choix de contrôleurs de stockage, il se peut que
vous vous demandiez lequel choisir. En général, vous devriez éviter l'IDE,
à moins que ce soit le seul contrôleur
supporté par votre invité. Que vous utilisiez SATA, SCSI ou SAS ne présente
pas de vraie différence. La variété des contrôleurs n'est fournie par
VirtualBox que pour des raisons de compatibilité avec le matériel existant
et d'autres hyperviseurs.
Fichiers images de disque (VDI, VMDK, VHD, HDD)
Les fichiers images de disque résident sur le système hôte sont vus
par les systèmes invités comme des disques durs d'une certaine géométrie.
Quand un système d'exploitation invité lit ou écrit sur un disque dur,
VirtualBox redirige la requête vers le fichier image.
Comme un disque physique, un disque virtuel est d'une taille (capacité),
qui doit être indiquée quand le fichier image est créé. Mais contrairement
à un disque physique, VirtualBox vous permet d'étendre un fichier image
après l'avoir créé, même s'il contient déjà des données (voir pour les détails.
Le redimensionnement d'image a été ajouté avec VirtualBox 4.0.
VirtualBox supporte quatre variantes de fichiers images de disque :
Normalement, VirtualBox utilise son propre format de container
pour les disques durs invités -- des fichiers Virtual Disk Image (VDI).
En particulier,ce format sera utilisé quand vous créerez une nouvelle
machine virtuelle avec un nouveau
disque.
VirtualBox supporte aussi complètement le format de
container VMDK ouvert et populaire, utilisé par de nombreux produits
de virtualisation, en particulier, par VMware.
Le premier support du VMDK a été ajouté avec VirtualBox 1.4 ;
depuis la version 2.1, VirtualBox supporte complètement VMDK,
ce qui veut dire que vous pouvez créer des dépôts et utiliser toutes
les autres fonctions avancées décrites ci-dessus pour les images
VDI avec VMDK.
VirtualBox supporte complètement le format VHD utilisé par
Microsoft.
Les fichiers images de Parallels version 2 (format HDD) sont
aussi supportés.
Le support a été ajouté avec VirtualBox 3.1.
Par manque de documentation du format, les nouveaux formats
(3 et 4) ne sont pas supportés. Vous pouvez cependant convertir de
tels fichiers images à leur version 2 en utilisant des outils fournis
par Parallels.
Indépendamment de la capacité et du format du disque, comme on l'a
brièvement indiqué au , il y a deux
options sur la façon de créer une image de disque : la taille fixe ou
dynamique..
Si vous créez une image à taille fixe
, un fichier image sera créé sur votre système hôte ayant
rigoureusement la même taille que la capacité du disque virtuel. Donc,
pour un disque de 10G, vous aurez un fichier de 10G. Remarquez que la
création d'une image à taille fixe peut prendre du temps selon la taille
de l'image et les performances d'écriture de votre disque dur.
Pour une gestion du stockage plus flexible, utilisez une image dynamique. Elle sera très petite au départ
et n'occupera pas de place pour des secteurs de disque virtuel inutilisés,
mais elle grandira à chaque fois qu'un secteur de disque sera écrit pour
la première fois, jusqu'à ce que le lecteur atteigne la capacité maximale
choisie quand le lecteur a été créé. Si ce format prend moins de place au
départ, le fait que VirtualBox doit étendre le fichier image consomme
des ressources de calcul supplémentaires, donc jusqu'à ce que la taille
du fichier de disque ait été stabilisée, les opérations d'écriture peuvent
être plus lentes qu'avec des disques à taille fixe. Cependant, après
un certain temps, le taux de croissance ralentira et le handicap
moyen des opérations d'écriture deviendra négligeable.
Le gestionnaire de médias virtuels
VirtualBox garde une trace de toutes les images de disque dur, de lecteur
CD/DVD-ROM et de disquette utilisés par les machines virtuelles. On les désigne
souvent comme des "médias connus" et ils proviennent de deux sources :
tous les médias actuellement attachés aux machines virtuelles ;
les médias "enregistrés" pour la compatibilité avec les
versions de VirtualBox inférieures à 4.0. Pour les détails sur les modalités
du changement de l'enregistrement des médias, avec la version 4.0,
merci de vous reporter à .
Vous pouvez visualiser et modifier les médias connus dans le gestionnaire de médias virtuels, auquel vous
pouvez accéder à partir du menu "Fichier" de la fenêtre principale de
VirtualBox :
Les médias connus sont regroupés, par commodité, dans trois
onglets pour les trois formats possibles. Ces formats sont :
Les images de disque dur, soit au format de VirtualBox Virtual Disk
Image(VDI), soit dans des formats tiers listés au chapitre précédent ;
Les images CD/DVD au format ISO standard ;
les images de disquette au format standard RAW.
Comme vous pouvez le voir dans l'impression d'écran ci-dessus, pour
chaque image, le gestionnaire de médias Virtuels vous montre le chemin complet
vers le fichier image et d'autres informations, telles que la machine virtuelle
à laquelle est attachée l'image, s'il y en a.
Le gestionnaire de média virtuels vous permet de
supprimer une image du
registre (et effacer éventuellement le fichier image en même temps) ;
"libérer" une image, c'est-à-dire
la détacher d'une machine virtuelle si elle est rattachée actuellement à
une d'elles en tant que disque dur virtuel.
À partir de la version 4.0, pour créer de
nouvelles images de disque, merci d'utiliser l'onglet "Stockage"
dans la boîte de dialogue des paramètres d'une machine virtuelle, car les
images de disque sont désormais stockées par défaut dans le dossier de chaque
machine.
Vous pouvez copier des fichiers images de disque dur entre systèmes
hôtes et les importer alors dans les machines virtuelles, bien que certains
systèmes invités (surtout Windows 2000 et XP) exigeront que la nouvelle
machine virtuelle soit réglée de façon identique à l'ancienne.
Ne faites pas de simples copies des images de disque dur virtuels.
Si vous importez une seconde copie dans une machine virtuelle, VirtualBox
se plaindra avec une erreur puisque VirtualBox affecte un identifiant
unique (UUID) à chaque image de disque pour garantir qu'elle n'est
utilisée qu'une fois. Voir pour des instructions à ce sujet. De plus, si
vous voulez copier une machine virtuelle sur un autre système, VirtualBox
a un outil d'importation/exportation qui pourrait mieux convenir à vos besoins ;
voir .
Modes spéciaux d'écriture d'images
Pour chaque image de disque dur virtuel supportée par VirtualBox, vous
pouvez déterminer distinctement la façon dont elle peut être touchée par les
opérations d'écriture par une machine virtuelle et les opérations de prise
d'instantanés. Ceci vaut pour tous les formats d'image précités (VDI, VMDK,
VHD ou HDD) et indépendamment du fait qu'une image soit de taille fixe
ou dynamique.
Par défaut, les images sont en mode "normal". Pour marquer une image
existante avec un des modes non standards listés ci-dessous, utilisez
VBoxManage modifyhd ; voir . Sinon, utilisez VBoxManage pour attacher
l'image à une VM et utilisez l'argument --mtype ;
voir .
Avec des images normales (le
réglage par défaut), il n'y a aucune restriction de lecture et d'écriture
pour les systèmes invités.
Quand vous prenez un instantané de votre machine virtuelle comme
décrit au , l'état d'un "disque dur normal"
sera enregistré avec l'instantané et, lors du retour à l'instantané,
son état sera complètement réinitialisé.
(Techniquement, pour parler rigoureusement, le fichier image lui-même
n'est pas "réinitialisé". Quand un instantané est pris, VirtualBox "gèle"
plutôt le fichier image et n'écrit plus dedans. Pour les opérations d'écriture
de la VM, un deuxième fichier image de "différenciation" est créé, qui
ne reçoit que les modifications de l'image d'origine ; voir la section
suivante pour les détails.)
Si vous pouvez attacher une même image "normale" à plus d'une
machine virtuelle, une seule de ces machines virtuelles attachée au
même fichier image peut être exécuté en même temps, sans quoi il y aurait
des conflits si plusieurs machines écrivent dans le même fichier image.
Cette restriction est plus légère qu'avant
VirtualBox 2.2. Jadis, chaque image de disque "normale" ne pouvait
être attachée qu'à une seule machine. Maintenant,
elle peut être attachée à plus d'une machine du moment qu'une seule
des machines soit en fonction.
À l'opposé, les disques durs write-through
ne sont absolument pas concernés par les instantanés : leur
état n'est pas sauvegardé quand on prend l'instantané,
et il n'est pas restauré quand on le restaure.
Les Disques durs partageables sont
des variantes des disques durs write-through. En principe, ils se
comportent exactement de la même façon, à savoir que leur état
n'est pas sauvegardé quand on prend l'instantané
et il n'est pas restauré quand on le restaure. La
différence n'apparaît que si vous attachez de tels disques à plusieurs
VMs. Les disques partageables peuvent être attachés à plusieurs VMs qui
peuvent fonctionner en même temps. Cela les rend adaptés pour l'utilisation
de systèmes de fichiers cluster entre des VMs et des applications identiques
qui sont explicitement préparés pour accéder en même temps à un
disque. Seules des images de disques fixes peuvent être utilisées dans ce
mode, les images dynamiques sont rejetées.
C'est une fonctionnalité pour experts, dont la mauvaise utilisation
peut provoquer une perte de données -- les systèmes de fichiers réguliers
ne sont pas préparés à gérer des modifications simultanées par
plusieurs éléments.
Ensuite, les images immuables
ne se souviennent des accès en écriture que de manière temporaire pendant
que la machine est en fonction ; tous les changements sont perdus
quand la machine virtuelle est allumée la fois d'après. Il s'en suit qu'à
l'inverse des images "normales", une même image immuable peut être utilisée
avec plusieurs machines virtuelles sans
restrictions.
La création d'une image immuable a peu de sens
puisqu'elle serait vide au départ et elle perdrait son contenu à chaque
redémarrage de la machine (sauf si vous voulez vraiment avoir un disque
toujours non formaté quand la machine démarre). Du coup, normalement,
vous créeriez d'abord une image "normale" puis, quand vous estimez son
contenu utile, vous la marquez plus tard comme immuable.
Si vous prenez l'instantané d'une machine avec des images immuables,
sur chaque machine allumée, ces images sont réinitialisées à leur état du dernier
instantané (actuel) (et non à l'état de l'image immuable d'origine).
En guise d'exception particulière, les images immuables
ne sont pas réinitialisées si elles sont attachées
à une machine dont le dernier instantané a été pris pendant que la machine
était en fonction (ce qu'on appelle un instantané "en ligne"). Il s'en
suit que si l'instantané actuel de la machine est "en ligne",
ses images immuables se comportent exactement comme les images "normales"
décrites précédemment. Pour réactiver la réinitialisation automatique
de telles images, effacez l'instantané actuel de la machine.
De nouveau, techniquement, VirtualBox n'écrit jamais directement
sur l'image immuable. Toutes les opérations d'écriture de la machine seront
envoyées dans une image de différenciation ; la prochaine fois que
la VM sera allumée, l'image de différenciation sera rétablie à chaque
démarrage de la machine, ses images immuables ont exactement le même
contenu.
Ce comportement a aussi changé avec VirtualBox 2.2. Jadis,
les images de différenciation étaient désactivées quand la session
de la machine se terminait ; maintenant,
elles sont désactivées à chaque fois que la machine est allumée.
L'image de différenciation n'est réinitialisée que lorsque
la machine est allumée à partir de VirtualBox, pas quand vous redémarrez
en demandant un redémarrage à l'intérieur de la machine. C'est
également pourquoi les images immuables se comportent comme décrit
ci-dessus quand des instantanés sont aussi présents, ce qui utilise
également des images de différenciation.
Si la désactivation automatique de l'image de différenciation au
démarrage d'une VM ne correspond pas à vos besoins, vous pouvez la
désactiver en utilisant le paramètre
autoreset de
VBoxManage modifyhd ; voir pour le detail.
Une image en mode multiattachée
peut être attachée à plus d'une machine virtuelle en même temps même si
ces machines sont en fonction en même temps. Pour chaque
machine virtuelle à laquelle une image est attachée, une image de
différenciation est créée. Il s'en suit que les données écrites sur un
tel disque dur virtuel par une machine n'est pas vue par les autres machines
auxquelles l'image est attachée ; chaque machine crée son propre
historique des écritures de l'image multiattachée.
Techniquement, une image "multiattachée" se comporte de la même façon
qu'une image "immuable", sauf que l'image de différenciation n'est pas
réinitialisée à chaque fois que la machine démarre.
Enfin, l'image en lecture seule
est utilisée automatiquement pour les images de CD/DVD, vu que les
CDs/DVDs ne sont jamais inscriptibles.
Pour illustrer les différences entre les différents types au
regard des instantanés : supposons que avez installé votre système
d'exploitation hôte dans votre VM et que vous avez pris un instantané.
Imaginons que vous avez accidentellement infecté votre VM avec un virus et
vous voulez revenir à l'instantané. Avec une image de disque dur normale,
vous restaurez simplement l'instantané et l'état antérieur de votre image
de disque dur seront restaurés également (et votre infection virale sera
annulée). Avec un disque dur immuable, il suffit d'éteindre et de rallumer
votre VM et l'infection virale sera désactivée. Par contre, avec une image
write-through, vous ne pouvez pas annuler facilement
l'infection virale par la virtualisation, mais vous devrez désinfecter
votre machine virtuelle comme un vrai ordinateur.
Là encore, vous pourriez trouver les images write-through utiles si vous
voulez préserver des données critiques indépendamment des instantanés, et
comme vous pouvez attacher plus d'une imafe à une VM, vous pourriez vouloir
avoir une image immuable pour le système d'exploitation et une en write-through
pour vos fichiers de données.
Images de différenciation
La section précédente portait sur les images de différenciation et la
façon de les utiliser avec des instantanés, des images immuables et
des attachements immuables. Pour l'utilisateur curieux de VirtualBox, cette
section décrit avec plus de détails la façon dont elles fonctionnent.
Une image de différenciation est une image de disque spéciale qui ne
garde que les différences avec une autre image. En elle-même, une image de
différenciation est inutile, elle doit toujours se référer à une autre image.
On parle donc généralement d'une image de différenciation comme d'un "enfant"
qui garde les différences d'avec son
"parent".
Quand une image de différenciation est active, elle reçoit toutes les
opérations d'écriture de la machine virtuelle à la place de son parent. L'image
de différenciation ne contient que les secteurs du disque dur virtuel qui
ont changé depuis que l'image de différenciation a été créée. Quand la
machine lit un secteur à partir d'un tel disque dur virtuel, elle regarde
d'abord dans l'image de différenciation. Si le secteur est présent, il est
renvoyé à partir de là ; sinon VirtualBox regarde dans le parent. En
d'autres termes, le parent devient en lecture seule ; on n'écrit plus jamais
dedans mais il est lu si un secteur n'a pas changé.
On peut enchaîner les images de différenciation. Si une autre image de
différenciation est créée pour un disque virtuel qui a déjà une image de
différenciation, il devient le "petit-fils" du parent d'origine. La première
image de différenciation devient alors également en lecture seule et les
opérations d'écriture ne vont que dans l'image de différenciation du second
niveau. Lors de la lecture à partir d'un disque virtuel,
VirtualBox a besoin de regarder d'abord dans la deuxième image de différenciation,
puis dans la première si le secteur n'a pas été trouvé, puis dans
l'image d'origine.
Il peut y avoir un nombre illimité d'images de différenciation et
chaque image peut avoir plus d'un enfant. Il s'en suit que les images de
différenciation peuvent constituer une arborescence complexe avec des parents,
des "fratries" et des enfants, en fonction de la complexité de la configuration
de votre machine. Les opérations d'écriture vont toujours dans l'image de
différenciation "active" attachée à la machine, et pour les opérations de
lecture, VirtualBox peut avoir besoin de regarder jusqu'aux parents dans la
chaîne, jusqu'à ce qu'il trouve le secteur en question. Vous pouvez regarder
l'arborescence dans le gestionnaire de médias virtuels :
Dans toutes ces situations, du point de vue de la machine virtuelle,
le disque dur virtuel se comporte comme n'importe quel autre disque.
Pendant que la machine virtuelle est en fonction, il y a un léger ralentissement
des E/S (overhead) car il se peut que VirtualBox doive regarder des
secteurs plusieurs fois. Cela ne se ressent cependant pas, puisque les tables
d'informations des secteurs sont toujours gardées en mémoire et peuvent être
consultées rapidement.
On utilise des images de différenciation dans les situations
suivantes :
Les instantanés. Quand vous
créez un instantané comme expliqué dans la section précédente, VirtualBox
"gèle" les images attachées à la machine virtuelle et crée des
images de différenciation pour chacun d'eux (pour être précis, une
par image qui n'est pas en mode "write-through"). Du point de vue de
la machine virtuelle, les disques virtuels continuent d'agir comme
avant, mais toutes les opérations d'écriture vont dans les images de
différenciation. Chaque fois que vous créez un autre instantané, pour
chaque disque dur attaché, une autre image de différenciation est
créée et attachée, formant une chaîne ou une arborescence.
Dans l'impression d'écran ci-dessus, vous voyez que l'image du
disque d'origine est maintenant attachée à un instantané, ce qui
représente l'état du disque quand on a pris l'instantané.
Si vous restaurez maintenant
un instantané -- à savoir, si vous voulez revenir à l'état exact de
la machine stocké dans le dépôt --, il se produit la chose suivante :
VirtualBox copie les paramètres de la machine virtuelle
mémorisés dans l'instantané vers la machine virtuelle. Du coup, si
vous avez fait des modifications dans la configuration après avoir
pris l'instantané, elles sont annulées.
Si vous avez pris l'instantané quand la machine était en
fonction, il contient un état sauvegardé de la machine et cet état
est restauré également ; après la restauration de l'instantané,
la machine sera en état "sauvegardé" et elle reprendra son exécution
là où elle avait été commencée la fois suivante. Sinon, la
machine sera dans l'état "éteint" et elle fera un démarrage complet.
Pour chaque image de disque attachée, à la machine, l'image de
différenciation contenant les opérations d'écriture depuis que
l'instantané actuel a été pris est supprimée et l'image du parent
originel est réactivée. (Si vous avec restauré l'instantané "racine",
ce sera l'image de disque racine de tous les attachements ;
sinon ce sera d'autres images de différenciation descendantes).
Cela restaure de fait l'ancien état de la machine.
Si vous effacez plus tard un
instantané afin de gagner de l'espace disque, chaque attachement de
disque des images de différenciation devient obsolète. Dans ce cas,
l'image de différenciation du disque ne peut pas être tout simplement
effacée. VirtualBox doit plutôt regarder chaque secteur de l'image de
différenciation et le copier dans le parent ; ceci s'appelle des
images de "synchronisation" et cela peut être une procédure longue
selon la taille de l'image de différenciation. Il se peut qu'il faille
temporairement une importante quantité d'espace disque supplémentaire
avant que l'image de différenciation rendue obsolète par l'opération
de synchronisation ne soit effacée.
Les images immuables. Quand une
image passe en mode "immuable", une image de différenciation est créée
également. Comme avec les instantanés, l'image parent devient alors en
lecture seule et l'image de différenciation reçoit toutes les
opérations d'écriture. Chaque fois qu'on démarre la machine virtuelle,
toutes les images immuables qui y sont attachées voient leur image de
différenciation spécifique nettoyée, ce qui réinitialise de fait le
disque virtuel de la machine virtuelle à chaque redémarrage.
Cloner des images de disque
Vous pouvez dupliquer des fichiers images de disque dur sur le même hôte
pour produire rapidement une deuxième machine virtuelle avec la même configuration
de système d'exploitation. Néanmoins, vous devriez ne faire des copies d'images
de disques durs virtuels que en utilisant l'outil fourni
par VirtualBox ; voir . Ceci car VirtualBox affecte un numéro
d'identifiant unique (UUID) à chaque image de disque, qui est stocké dans
l'image et VirtualBox refusera de fonctionner avec deux images ayant le même
numéro. Si vous essayez, par accident, de réimporter une image de disque
que vous avez copiée normalement, vous pouvez faire une seconde copie en utilisant
l'outil de VirtualBox et l'importer à la place.
Remarquez que les distributions Linux récentes identifient le disque
dur de démarrage à partir de l'ID du disque. L'ID utilisé par VirtualBox pour
un lecteur est déterminé à partir de l'UUID de l'image du disque dur virtuel.
Donc si vous clonez une image de disque et si vous essayez de démarrer l'image,
copiée il se peut que l'invité ne puisse pas déterminer son propre disque de
démarrage car l'UUID a changé. Dans ce cas, vous devez adapter l'ID du disque
dans le script de votre chargeur de démarrage (par exemple
/boot/grub/menu.lst). L'ID d'un disque
ressemble à ceci :scsi-SATA_VBOX_HARDDISK_VB5cfdb1e2-c251e503
L'ID de l'image copiée peut être déterminée avec hdparm -i /dev/sda
Mise en cache des E/S dans l'hôte
À partir de la version 3.2, VirtualBox peut éventuellement désactiver
la mise en cache de l'E/S qu'effectuerait le système d'exploitation hôte sur
les fichiers images du disque.
Traditionnellement, VirtualBox ouvrait des fichiers images de disque
comme des fichiers normaux, ce qui faisait qu'ils étaient mis en cache par le
système d'exploitation hôte comme n'importe quel autre fichier. Le principal
avantage en est la vitesse : quand l'OS invité écrit sur le disque
et quand le cache de l'hôte utilise l'écriture différée, l'opération d'écriture
peut être déclarée terminée pour l'OS invité rapidement alors que l'OS hôte
peut effectuer l'opération sans synchronisation. De même, quand vous démarrez
une VM une deuxième fois et si vous avez assez de mémoire disponible pour que
l'OS l'utilise pour la mise en cache, de grandes parties du disque dur virtuel
peuvent aller dans la mémoire du système et la VM peut accéder plus rapidement
aux données.
Remarquez que cela ne s'applique qu'aux fichiers images ; la
mise en tampon ne fonctionnait jamais pour les disques présents sur des
supports iSCSI distants, ce qui est le
scenario le plus classique dans les paramétrages du type enterprise (voir
).
Si la mise en tampon est un paramètre par défaut utile pour virtualiser
quelques machines sur un ordinateur de bureau, elle présente quelques
inconvénients :
L'écriture différée dans le cache de l'OS hôte est moins
sécurisée. Quand l'OS invité écrit des données, il considère que les
données sont écrites même si elles ne sont pas encore arrivées sur le
disque physique. Si, pour une raison quelconque, l'écriture n'a pas lieu
(problème électrique, plantage de l'hôte), les chances de perdre des
données augmentent.
Les fichiers images de disque ont tendance à être importantes.
Leur mise en cache utilise donc très vite tout le cache de l'OS hôte. Selon
l'efficacité de la gestion du cache par l'OS hôte, cela peut ralentir
énormément l'hôte, surtout si plusieurs VMs fonctionnent en même temps.
Par exemple, sur des hôtes Linux, la mise en cache de l'hôte peut aboutir
à un report, par Linux, de toutes les écritures jusqu'à ce que le
cache de l'hôte soit presque plein, avant d'écrire tous ces changements
en une fois, ce qui peut suspendre l'exécution d'une VM pendant quelques
minutes. Cel peut donner des erreurs d'E/S dans l'invité car les requêtes
E/S excèderaient le timeout.
La mémoire physique est souvent gaspillée, car les systèmes
d'exploitation hôtes ont en général leur propre système de mise en cache
des E/S, ce qui aboutit à la mise en cache double des données (à la fois dans
le cache de l'invité et de l'hôte), avec peu d'effet.
Si vous décidez de désactiver la mise en cache des E/S dans l'hôte,
pour les raisons ci-dessus, VirtualBox utilise son propre petit cache pour
mettre les écritures en tampon, mais en général, aucune lecture de ce cache
n'est fait par l'OS invité. De plus, VirtualBox supporte complètement
l'E/S asynchrone pour ses contrôleurs SATA, SCSI et SAS virtuels via plusieurs
files (thread) d'E/S.
Les E/S asynchrones n'étant pas supportées par les contrôleurs IDE,
pour des raisons de performance, vous pourriez vouloir laisser la mise en
cache de l'hôte pour les contrôleurs IDE virtuels de votre VM.
Pour cette raison, VirtualBox vous permet de configurer si la mise en cache
des E/S est utilisée pour chaque contrôleur E/S, indépendamment. Soit décochez
la case "Utiliser la mise en cache des E/S de l'hôte" des paramètres de stockage,
d'un contrôleur de stockage donné, soit utilisez la commande VBoxManage
suivante pour désactiver la mise en cache des E/S de l'hôte pour un contrôleur
de stockage virtuel :VBoxManage storagectl "nom VM" --name <nomcontrôleur> --hostiocache off
Voir pour les détails.
Également pour les raisons ci-dessus, VirtualBox utilise maintenant
par défaut des contrôleurs SATA pour les nouvelles machines virtuelles.
Limiter la bande passante des images de disque
À partir de la version 4.0, VirtualBox permet de limiter la bande
passante maximale utilisée pour les E/S asynchrones. De plus, il supporte
le partage des limites entre des groupes de bandes passantes pour plusieurs
images. Il est possible d'avoir plus d'une limite.
Les limites sont configurées via
VBoxManage. L'exemple ci-dessous crée un
groupe de bandes passantes nommé "Limit", et pose la limite à 20 Mo/s et
affecte le groupe aux disques attachés à la VM :VBoxManage bandwidthctl "nom VM" add Limit --type disk --limit 20M
VBoxManage storageattach "nom VM" --storagectl "SATA" --port 0 --device 0 --type hdd
--medium disk1.vdi --bandwidthgroup Limit
VBoxManage storageattach "nom VM" --storagectl "SATA" --port 1 --device 0 --type hdd
--medium disk2.vdi --bandwidthgroup Limit
Tous les disques d'un groupe partagent la limite de la bande passante,
c'est-à-dire que dans l'exemple ci-dessus,, la bande passante des deux images
combinées ne peut jamais dépasser 20Mo/s. Toutefois, si un disque n'a pas
besoin de bande passante, l'autre peut utiliser la bande passante restante
dans son groupe.
Les limites pour chaque groupe peuvent être modifiées pendant que la
VM est en fonction, ce qui applique immédiatement les modifications. L'exemple
ci-dessous modifie le groupe créé dans l'exemple ci-dessus en 10 Mo/s:VBoxManage bandwidthctl "nom VM" set Limit --limit 10M
Support des CD/DVD
Le/les lecteur(s) CD/DVD virtuels ne supportent par défaut que la
lecture. Vous pouvez modifier la configuration d'un média pendant l'exécution.
Vous pouvez choisir entre trois options pour présenter les données d'un
média :
Lecteur hôte définit que l'invité
peut lire sur un média du lecteur hôte.
Fichier image (en général un
fichier ISO) donne à l'invité un accès en lecture seule aux données de
l'image.
Vide signifie un lecteur sans
média dedans.
La modification entre les situations ci-dessus, le changement de
média dans le lecteur hôte ou de fichier image signalera un changement de média
au système d'exploitation invité, lequel peut réagir au changement (par exemple,
en démarrant un programme d'installation).
Les changements de médias peuvent être empêchés par l'invité et VirtualBox
répercute cela en verrouillant le lecteur hôte si besoin. Vous pouvez forcer
le retrait d'un média en pareilles situations via l'interface graphique de
VirtualBox ou l'outil en ligne de commandes VBoxManage. En fait, cela revient
à une éjection en urgence, ce que supportent de nombreux lecteurs CD/DVD
avec tous les effets colatéraux associés : l'OS invité peut renvoyer
des messages d'erreur comme sur du vrai matériel, les applications invitées peuvent
mal se comporter. Utilisez ceci avec précaution.
La chaîne d'identification du lecteur fournie à l'invité (qui serait
affichée, dans l'invité, par les outils de configuration tels que le
gestionnaire de périphériques de Windows) est toujours "VBOX CD-ROM",
indépendamment de la configuration actuelle du lecteur virtuel. Ceci pour
empêcher la détection d'être faite en retard dans le système d'exploitation
invité à chaque fois que la configuration change.
L'émulation standard des CD/DVD ne permet de lire que des formats de
CD et de DVD de données standards. Une possibilité supplémentaire, expérimentale,
est de donner un accès direct de l'invité au lecteur CD/DVD de l'hôte en
activant le "Mode direct" (passthrough). Selon le matériel hôte, cela peut potentiellement
faire marcher trois choses :
L'écriture sur CD/DVD depuis l'invité, si le lecteur DVD de l'hôte
est un graveur de CD/DVD ;
la lecture de CDs audio ;
la lecture de DVDs chiffrés.
Il existe une case à cocher "Mode direct" dans la boîte de dialogue
graphique de configuration du média attaché aux contrôleurs de stockage, ou
vous pouvez utiliser l'option
--passthrough de
VBoxManage storageattach ; voir pour les détails.
Même si passthrough est activé, les commandes non sûres telles que
la mise à jour du firmware du lecteur, seront bloquées. Les formats de CD
vidéo ne sont pas du tout supportés, même pas en mode passthrough, et on
ne peut pas les lire à partir d'une
machine virtuelle.
Sur les hôtes Solaris, passthrough exige de lancer VirtualBox avec de
vrais droits d'administrateur du fait de mesures de sécurité renforcées par
l'hôte.
Serveurs iSCSI
iSCSI signifie "Internet SCSI" et c'est un standard qui permet d'utiliser
le protocole SCSI à travers des des connexions Internet. (TCP/IP). En
particulier, avec l'arrivée du Gigabit Ethernet, on peut désormais se permettre
d'attacher des serveurs de stockage iSCSI simplement comme des disques durs
distants à un réseau d'ordinateurs. Dans la terminologie iSCSI, le serveur
fournissant les ressources de stockage s'appelle la "cible iSCSI", tandis
que le client qui se connecte au serveur et qui accède à ses ressources
s'appelle "l'initiateur iSCSIr".
VirtualBox peut présenter de manière transparente du stockage distant
iSCSI à une machine virtuelle en tant que disque dur. Le système d'exploitation
ne verra pas de différence entre une image de disque virtuel (fichier VDI)
et une cible iSCSI. Pour obtenir cela, VirtualBox comporte un initiateur iSCSI
intégré.
Le support iSCSI de VirtualBox a été développé selon le standard iSCSI
et il devrait fonctionner avec toutes les cibles iSCSI conformes au standard.
Pour utiliser une cible iSCSI avec VirtualBox, vous devez utiliser la ligne
de commande ; voir .