Stockage virtuel
Vu que la machine virtuelle s'attendra très probablement à voir un
disque dur virtuel construit dans son ordinateur virtuel, VirtualBox doit
pouvoir présenter un support de stockage « réel » à l'invité comme un disque
dur virtuel. Il y a actuellement trois méthodes pour effectuer cela :
Le plus souvent, VirtualBox utilisera les grands fichiers images sur
un vrai disque dur et les présenter à un invité comme un disque dur virtuel.
Ceci est décrit au .
Alternativement, si vous avez des serveurs de stockage iSCSI, vous
pouvez aussi attacher de tels serveurs à VirtualBox ; ceci est décrit
au .
Enfin, en fonctionnalité expérimentale, vous pouvez autoriser une
machine virtuelle à accéder directement à un de vos disques hôtes ;
cette fonctionnalité avancée est décrite au .
Chacun de ces périphériques de stockage virtuels (fichier image, cible
iSCSI ou disque dur physique) devra être connecté au contrôleur de disque dur
virtuel que présente VirtualBox à une machine virtuelle. Ceci est expliqué
dans la prochaine section.
Contrôleurs de disques durs : 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é contrôleur de disque dur, qui dirige les
opérations du disque dur et les transferts de données. VirtualBox peut
émuler les trois types les plus courants de contrôleurs de disque dur qu'on
trouve généralement sur les PCs d'aujourd'hui : IDE, SATA (AHCI) et SCSI.
Le support SATA a été ajouté avec VirtualBox 1.6 ; le support
expérimental de SCSI a été ajouté avec la version 2.1 puis complètement
ajouté avec la 2.2. De façon générale, l'attachements de supports de
stockage a été rendu beaucoup plus flexible avec VirtualBox 3.1 ;
voir ci-dessous.
Les contrôleurs IDE (ATA) sont utilisés
depuis les années 80. Au départ, ce type d'interface ne fonctionnait
qu'avec les disques durs, mais il a été étendu ensuite aussi pour
supporter les lecteurs de CD-ROM et d'autres types de médias amovibles.
Dans un PC physique, ce standard utilise des nappes de 40 ou 80 broches.
Chacune de ces nappes connecte deux périphériques à un contrôleur, ce
que l'on a appelé traditionnellement « master » (maître) et « slave »
(esclave). Les contrôleurs de disque dur ont en général deux
connecteurs pour de telles nappes ; il s'en suit que la plupart des PCs
supportent jusqu'à quatre périphériques.
Dans VirtualBox, chaque machine virtuelle a un contrôleur IDE
activé par défaut, ce qui vous permet d'attacher jusqu'à quatre
périphériques de stockage virtuels à la machine. (Par défaut, un des
quatre - le second maître - est pré-configuré pour être le lecteur
virtuel de CD/DVD de la machine, mais vous pouvez modifier cela.)
L'affectation du lecteur CD/DVD de la machine au maître
secondaire a été corrigée avant VirtualBox 3.1 ; on peut
maintenant la modifier ; et le lecteur peut être branché sur
d'autres slots du contrôleur IDE, et il peut y avoir plus d'un
lecteurs comme ça.
)
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 le
contrôleur IDE par défaut activé.
Vous pouvez aussi sélectionner précisément le type de matériel
de contrôleur IDE que VirtualBox devrait présenter à la machine virtu
elle (PIIX3, PIIX4 ou ICH6). Cela ne constitue aucune différence en
termes de performances mais si vous importez une machine virtuelle à
partir d'un autre produit de virtualisation, il se peut que le système
d'exploitation de cette machine s'attende à un contrôleur particulier
et plante s'il ne le trouve pas.
Après que vous ayez créé une nouvelle machine virtuelle avec
l'assistant « Nouvelle machine » de l'interface graphique, vous verrez
en général un contrôleur IDE dans les paramètres de « Stockage » de la
machine, où le lecteur de CD/DVD virtuel sera attaché à l'un des quatre
ports de ce contrôleur.
Serial ATA (SATA) est un standard plus
récent apparu en 2003. Par rapport à l'IDE, il supporte à la fois des
vitesses beaucoup plus élevées et davantage de périphériques par
contrôleur de disque dur. En outre, avec du matériel physique, vous
pouvez ajouter des périphériques et les supprimer alors que le système
est en fonction. L'interface standard pour les contrôleurs SATA
s'appelle Advanced Host Controller Interface (AHCI).
Pour des questions de compatibilité, les contrôleurs AHCI par
défaut voient les disques qui y sont attachés dans un « mode IDE de
compatibilité », sauf si le support SATA est explicitement demandé. Le
« mode IDE de compatibilité » signifie seulement que les lecteurs
peuvent être vus et utilisés par le BIOS de l'ordinateur. Mais, les
disques attachés à ces emplacement travailleront en mode AHCI pleine
vitesse une fois que le système invité aura chargé son pilote de
périphérique AHCI.
Comme un vrai contrôleur SATA, le contrôleur virtuel SATA de
VirtualBox agit plus vite et consomme aussi moins de ressources
processeur que le contrôleur IDE virtuel. En outre, ceci vous permet
de connecter jusqu'à 30 disques durs virtuels à une machine contre à
peine trois pour l'IDE (avec le lecteur DVD déjà attaché). Parmi eux,
les quatre premiers (numérotés de 0 à 3 dans l'interface graphique
sont gérés par défaut en mode IDE de compatibilité.
C'est pour cette raison qu'à partir de la version 3.2 et en
fonction du système d'exploitation invité sélectionné, VirtualBox
utilise SATA par défaut pour les machines virtuelles nouvellement créées.
Un contrôleur SATA est créé par défaut et le disque par défaut qui a
été créé avec une nouvelle machine virtuelle est attaché à ce
contrôleur.
Le contrôleur SATA et les disques virtuels qui y sont
attachés (y compris ceux en mode compatibilité IDE) ne seront pas
vus par un système d'exploitation qui n'a pas de support
périphérique pour AHCI. En particulier, il
n'y a pas de support pour AHCI sur les Windows antérieurs à Windows
Vista, donc Windows XP (même SP2) ne verra pas de tels
disques sauf si vous installez les pilotes supplémentaires. Il est
possible de basculer entre IDE et SATA après l'installation en
installant les pilotes SATA et en modifiant le type de contrôleur
dans la boîte de dialogue des paramètres de la VM.
VirtualBox recommande les pilotes
Intel Matrix qu'on peut télécharger 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 de VirtualBox soit parce que le SATA n'est pas
supporté par le système d'exploitation par défaut sélectionné), allez
sur 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 supplémentaire apparaîtra comme
périphérique PCI séparé dans la machine virtuelle et vous pouvez y
ajouter des disques virtuels.
Pour modifier les paramètres du mode de compatibilité IDE du
contrôleur SATA, merci de voir le .
SCSI est un autre standard
industriel, signifiant « Small Computer System Interface ». Il a été
établi dès 1986 comme une interface générique pour le transfert de
données entre tous types de périphérique, y compris les périphériques
de stockage. Aujourd'hui, le SCSI est toujours utilisé pour connecter
des disques durs et des périphériques de bande magnétique, mais la
plupart du temps, il a été relégué en matériel de secours. Il est
encore couramment utilisé sur des stations de travail et des serveurs
haute performance.
Pour des raisons principalement liées à la compatibilité avec
d'autres logiciels de virtualisation, VirtualBox supporte éventuellement
les contrôleurs LsiLogic et BusLogic, sur lesquels vous pouvez attacher
jusqu'à 16 disques durs virtuels.
Pour activer un contrôleur SCSI, sur l'onglet « Stockage » d'une
boîte de dialogue de paramètres d'une machine virtuelle, cliquez sur
le bouton « Ajouter un contrôleur » sous la case à cocher « arborescence
de stockage », puis sélectionnez « Ajouter un contrôleur SCSI ». Après
quoi le contrôleur supplémentaire apparaîtra comme un périphérique PCI
distinct dans la machine virtuelle.
Comme avec les autres types de contrôleur, un contrôleur
SCSI ne sera vu par les systèmes d'exploitation qu'avec le support
pour un tel périphérique. Windows 2003 et supérieur incluent les
pilotes pour le contrôleur LSI Logic, tandis que Windows NT 4.0 et
Windows 2000 incluent les pilotes pour le contrôleur BusLogic.
Windows XP n'inclut les pilotes pour aucun contrôleur.
SCSI attaché en série (Serial Attached
SCSI, SAS) est un autre standard de bus qui utilise le jeux de
commandes de SCSI. Mais contrairement à SCSI, avec des périphériques
physiques, ce sont des câbles série qui sont utilisés au lieu de câbles
parallèle, ce qui simplifie les connexions de périphériques physiques.
En quelque sorte, le SAS est au SCSI ce que le SCSI est à l'IDE : il
permet davantage de connexions, plus fiables et plus rapides.
Pour supporter les invités de haut niveau qui exigent des
contrôleurs SAS, VirtualBox émule un contrôleur SAS LsiLogic que vous
pouvez activer de la même façon qu'un contrôleur SCSI. Pour l'instant,
vous pouvez connecter jusqu'à huit périphériques au contrôleur SAS.
Le support du contrôleur LSI Logic SAS a été ajouté avec
VirtualBox 3.2.
Comme avec SATA, le contrôleur SAS ne sera vu que par les
systèmes d'exploitation qui le supportent. En particulier,
il n'y a pas de support pour SAS dans Windows
avant Windows Vista, donc Windows XP (même SP2) ne verra
pas de tels disques sauf si vous installez des pilotes supplémentaires.
En résumé, VirtualBox vous donne les catégories suivantes d'emplacement de stockage virtuels :
Quatre emplacements attachés au contrôleur IDE traditionnel, qui
sont toujours toujours présents (en général l'un d'eux est en général
un lecteur de CD/DVD virtuel) ;
30 emplacements attachés au contrôleur SATA, s'il est activé et
si votre système d'exploitation peut le voir ; ces emplacements peuvent
être soit
En mode compatibilité IDE (par défaut les emplacements 0
à 3) ou
En mode SATA ;
15 emplacements attachés au contrôleur SCSI, s'il est activé et
supporté par le système d'exploitation invité ;
Huit emplacements attachés au contrôleur SAS, s'il est activé et
supporté par le système d'exploitation invité.
É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, sauf si c'est le seul contrôleur supporté par votre invité. Que
vous utilisez SATA, SCSI, ou SAS, il n'y a pas de différence réelle.
Fichiers images de disque (VDI, VMDK, VHD, HDD)
Les fichiers images de disque résident sur le système hôte et sont vus
par les systèmes invités comme des disques durs d'une certaine géométrie.
Lorsqu'un système d'exploitation lit depuis ou écrit sur un disque dur,
VirtualBox redirige la demande sur le fichier image.
Remarquez que quand vous créez un fichier image, vous devez spécifier
sa taille, qui représente une géométrie fixe du disque virtuelle. Il n'est
donc pas possible de modifier la taille du disque dur virtuel ultérieurement.
VirtualBox supporte quatre variantes de fichiers images de disque :
Normalement, VirtualBox utilise son propre format de contenu
pour les disques durs invités - fichiers Virtual Disk Image (VDI) -.
En particulier, ce format sera utilisée quand vous créerez une nouvelle
machine virtuelle avec un nouveau disque.
VirtualBox supporte aussi complètement le format de contenu
populaire et libre VMDK utilisé par beaucoup d'autres produits de
virtualisation, en particulier par Vmware.
Le support initial pour 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 instantanés et utiliser
toutes les autres fonctionnalités avancées décrites ci-dessus pour
les images VDI également avec VMDK.
VirtualBox supporte aussi pleinement le format VHD utilisé par
Microsoft.
Les fichiers images de Parallels version 2 (format HDD) sont
aussi supportés.
Le support a été ajouté à VirtualBox 3.1.
Faute de documentation sur le format, les formats
récents (3 et 4) ne sont pas supportés. Vous pouvez cependant
convertir de tels fichiers images vers le format de la version 2 en
utilisant les outils fournis par Parallels.
Indépendamment du format de disque, comme il a été brièvement mentionné
au , il y a deux options pour créer une image
de disque : taille statique ou extension dynamique.
Si vous créez une image à la taille fixe
de, par exemple, 10 Gio, un fichier image d'à peu près la même taille
sera créé sur votre système hôte. Remarquez que la création d'une image
à taille statique peut prendre beaucoup de 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 à extension dynamique. Celle ci sera au
départ très petite et n'occupera pas d'espace pour des secteurs du disque
virtuel non utilisés, mais le fichier image grossira chaque fois qu'on
écrira sur un secteur du disque pour la première fois. Si ce format
prend moins d'espace disque au début, le fait que VirtualBox doive
étendre en permanence le fichier image consomme des ressources machines
supplémentaires, donc jusqu'à ce que le disque ne soit entièrement
rempli, les opérations d'écriture sont plus lentes qu'avec des disques à
taille statique. Cependant, après qu'un disque dynamique a été étendu
entièrement, la différence de performances pour les opérations de lecture
et d'écriture est négligeable.
Le gestionnaire de médias virtuels
VirtualBox conserve un registre interne de toutes les images disponibles
de disque, CD/DVD-ROM et de disquette. Vous pouvez voir et modifier ce
registre dans le gestionnaire de médias virtuels, auquel vous pouvez
accéder depuis le menu « Fichier » dans la fenêtre principale de VirtualBox :
La fenêtre vous montre toutes les images actuellement
enregistrées avec VirtualBox, regroupées de façon pratique en trois onglets
pour les trois formats possibles. Ces formats sont :
Les images de disque dur, soit au format Virtual Disk Image (VDI)
de VirtualBox lui-même, soit dans les formats tiers listés ci-dessus ;
Les images de CD/DVD au format standard ISO ;
Des images de disquette au format standard RAW.
Comme vous pouvez le voir dans la capture 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 l'image est actuellement attachée, s'il y en a une.
Le gestionnaire de médias virtuels vous permet de
créer de nouvelles images de disque dur en utilisant le bouton
"Nouveau" ; cela ouvrira l'assistant
« Créer une image de disque » déjà décrit au ;
importer des fichiers images existantes depuis votre disque dur
sur VirtualBox en utilisant le bouton "Ajouter" ;
supprimer une image du
registre(et éventuellement effacer le fichier image en même temps) ;
"libérer" une image, c'est-à-dire,
la détacher d'une machine virtuelle si elle y est actuellement attachée
comme un disque dur.
Nous vous recommandons de maintenir deux dossiers spéciaux sur votre
système pour conserver les images : un pour les fichiers images de disques
durs (qui peut, en cas d'images à extension dynamique, atteindre des tailles
considérables), et un pour les fichiers ISO (qui ont probablement été
téléchargées sur Internet).
Vous pouvez copier des fichiers images de disque dur sur d'autres
systèmes hôtes et les importer depuis des machines virtuelles, bien que
certains systèmes invités (surtout Windows 2000 et XP) exigeront que la
nouvelle machine virtuelle soit paramétrée de la même manière que l'ancienne.
.
Ne faites pas simplement des copies d'images de disques virtuels.
Si vous importer ainsi une seconde copie dans une machine virtuelle,
VirtualBox se plaindra avec une erreur, puisque VirtualBox attribue un
identifiant unique (UUID) à chaque image de disque pour être sûr qu'il
n'est utilisé qu'une seule fois. Voir le
pour des instructions à ce sujet. De même, si vous voulez copier une
machine virtuelle sur un autre système, VirtualBox a une fonction
d'importation/exportation qui pourrait mieux convenir à vos besoins ;
voir le .
Modes spéciaux d'écriture d'images
Pour chaque image de disque virtuel supportée par VirtualBox, vous
pouvez utiliser des commandes spéciales pour définir comment des opérations
d'écriture depuis la machine virtuelle devraient modifier l'image et comment
les instantanés devraient la modifier. Cela vaut pour tous les formats
d'images précités (VDI, VMDK, VHD ou HDD) et indépendamment du fait que
l'image soit de taille statique ou étendue de façon dynamique.
Avec des images normales (le
réglage par défaut), il n'y a pas de restrictions sur la façon dont les
invités peuvent lire et écrire sur le disque.
Quand vous faites un instantané de votre machine virtuelle comme
décrit au , l'état d'une telle image de
« disque dur normal » sera enregistrée avec le instantané, et quand vous
restaurerez le instantané, son état sera entièrement réinitialisé.
(pour être précis sur un plan technique, le fichier image n'est
pas « réinitialisé » en tant que tel. Par contre, quand on fait un
instantané, VirtualBox « gèle » le fichier image et n'écrit plus dessus.
Pour les opérations d'écriture depuis la VM, un second fichier image
« de différenciation » est créé qui ne reçoit que les modifications de
l'image d'origine ; voir la prochaine section pour des détails).
Si vous pouvez attacher la même image « normale » à plusieurs
machines virtuelles, une seule de ces machine virtuelle attachée au même
fichier image peut être lancée simultanément, sans quoi il y aurait un
conflit si plusieurs machines écrivaient sur le même fichier image.
Cette restriction est plus allégée maintenant qu'avec
VirtualBox 2.2. Auparavant, toute image de disque « normal » ne
pouvait être attachée qu'à une seule machine.
Maintenant, on peut à plus d'une machine, tant que seule une d'entre
elles est en fonction.
À l'inverse, les disques durs « write-through » ne sont pas du
tout concernés par les instantanés : leur état n'est pas
sauvegardé quand on crée un instantané, et il n'est pas restauré quand
on le restaure.
Pour créer une image de disque VDI en
« write-through », utilisez la commande VBoxManage
createhd ; voir le . Pour marquer une image
existante
comme dynamique, utilisez la commande VBoxManage modifyhd ;
voir .
Les disques durs partageables
sont une variante des disques durs « write-through ». En principe, ils se
comportent exactement de la même façon, c'est-à-dire que leur état
n'est pas sauvegardé quand on prend un instantané,
et il n'est pas restauré lors de la restauration d'un instantané. La
différence n'apparaît que si on attache de tels disques à plusieurs
VMs. Les VMs partageables peuvent être attachés à plusieurs VMs,
qui peuvent se lancer concommitamment. Elles sont ainsi convenables pour
être utilisées par des systèmes de fichiers cluster entre des VMs et
des applications identiques qui sont préparées explicitement pour accéder
concommitamment à un disque. Seules les images à taille fixe peuvent
être utilisées de cette manière, les images à taille dynamique sont
rejetées.
C'est une fonctionnalité avancée, une mauvaise utilisation peut
conduire à une perte de données -- les systèmes de fichiers réguliers
ne sont pas préparés pour gérer des modifications simultanes par plusieurs
éléments.
Pour créer une image de disque au format VDI
en tant que « partageable », utilisez la commande VBoxManage
createhd ; voir le . Pour marquer une image
existante comme partageable, utilisez
VBoxManage modifyhd ; voir .
Enfin, les images immuables ne se souviennent des accès en écriture
que de façon temporaire pendant que la machine virtuelle est en fonction
; toutes les modifications sont perdues quand la machine virtuelle est
rallumée la fois suivante. Il en résulte que, contrairement aux images
« normal », la même image immuable peut être utilisée avec plusieurs
machines virtuelles sans restrictions.
Créer une image immuable n'a pas beaucoup de
sens puisqu'elle serait vide au départ et perdrait son contenu à chaque
redémarrage de la machine (sauf si vous voulez vraiment avoir un disque
non formaté quand la machine démarre). Il en résulte que normalement,
vous créeriez d'abord une image « normal », puis lorsque vous considérez
que son contenu est utile, vous la marqueriez plus tard comme immuable
en utilisant VBoxManage modifyhd ;
merci de voir de nouveau le .
Sinon, ouvrez une image existante en mode « immuable » en utilisant
VBoxManage openmedium.
Si vous faites un instantané d'une machine avec des images immuables,
à chaque arrêt de la machine, ces images seront réinitialisées à l'état
du dernier (l'actuel) instantané (et pas à l'état de l'image immuable
d'origine).
En guise d'exception spéciale, les images immuables ne
sont pas réinitialisées si elles sont attachées à une
machine dont on a fait le dernier instantané alors que la machine
était en fonction (ce que l'on appelle un instantané « en ligne »). Il
en résulte que si le instantané actuel de la machine est comme un
instantané « 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 le instantané
actuel de la machine.
À nouveau, techniquement, VirtualBox n'écrit jamais directement
sur une image immuable. Toutes les opérations d'écriture depuis la
machine seront redirigées vers une image de différenciation ; la
prochaine fois que la VM sera allumée, l'image de différenciation est
réinitialisée de sorte que chaque fois que la VM démarre, ses images
immuables ont exactement le même contenu.
Ce comportement a aussi changé avec VirtualBox 2.2. Auparavant,
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 depuis l'intérieur de VirtualBox, pas quand
vous redémarrez en demandant un redémarrage depuis la machine. C'est
aussi pourquoi les images immuables se comportent comme décrit
ci-dessus quand les instantanés sont également présents, ce qui utilise
des images de différenciation.
Si la non prise en compte automatique des images de différenciation
au démarrage de la VM ne correspond pas à vos besoins, vous pouvez la
désactiver en utilisant le paramètre autoreset
de VBoxManage modifyhd ; voir le pour des détails.
Pour illustrer les variations entre les divers types du point de vue
des instantanés : Supposons que vous ayez installé votre système
d'exploitation invité dans votre VM et que vous ayez fait un instantané.
Imaginons que vous ayez infecté par accident votre VM avec un virus et que
vous aimeriez revenir au instantané. Avec une image de disque dur normale,
vous restaurez simplement le instantané et l'état précédent de l'image de
votre disque dur sera restaurée (et votre infection par un virus sera annulée).
Avec un disque dur immuable, tout ce qu'il y a à faire est d'éteindre et
d'allumer votre VM, et l'infection par le virus sera désactivée. Néanmoins,
avec une image de disque write-through, vous ne pouvez pas facilement annuler
l'infection par le virus via la virtualisation, mais vous devrez désinfecter
votre machine virtuelle comme un vrai ordinateur.
Vous pourriez encore toujours trouver les images write-though utiles
si vous voulez préserver des données critiques indépendamment des instantanés,
et comme vous pouvez attacher plus d'une image à une VM, il se peut que vous
vouliez avoir une immuable pour le système d'exploitation et une
write-through pour vos fichiers de données.
Images de différenciation
La section précédente traitait des images de différenciation et de la
façon dont elles sont utilisées avec les instantanés, les images immuables
et les attachements de plusieurs disques. Pour l'utilisateur de VirtualBox
curieux, cette section décrit avec davantage de détails comment elles
fonctionnent.
Une image de différenciation est une image de disque spéciale qui ne
conserve que les différences avec une autre image. Elle est en soi inutile,
elle doit toujours se référer à une autre image. L'image de différenciation
est alors vue en général comme une « fille » qui conserve les différences
par rapport à son « parent ».
Quand une image de différenciation est active, elle reçoit toutes les
opérations d'écriture depuis la machine virtuelle à la place de son parent.
L'image de différenciation ne contient que les secteurs du disque virtuel
qui a changé depuis que l'image de différenciation a été créée. Quand la
machine lit un secteur depuis un tel disque dur virtuel, il regarde d'abord
dans l'image de différenciation. Si le secteur est présent, il est retourné
depuis celui-ci ; sinon VirtualBox regarde dans le parent. En d'autres
termes, le parent devient en « lecture seule » ; on n'y écrit plus, mais on
lit à partir de celui ci si un secteur n'a pas changé.
Les images de différenciation peuvent être chaînées. Si vous créez une
autre image de différenciation pour un disque virtuel qui a déjà une image
de différenciation, elle devient un « petit-fils » du parent d'origine. La
première image de différenciation devient alors en lecture seule, et les
opérations d'écriture ne vont que sur l'image de différenciation de second
niveau. Lors de la lecture à partir du disque virtuel, VirtualBox doit
d'abord 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 en résulte que les images de
différenciation peuvent constituer une arborescence complexe avec des parents,
des « frères » et des enfants selon la complexité de la configuration de
votre machine. Les opérations d'écriture vont toujours sur l'image de
différenciation « active » attachée à la machine, et pour des opérations de
lecture, il se peut que VirtualBox ait besoin de de regarder dans presque
tous les parents de la chaîne jusqu'à ce qu'il trouve le secteur en question.
Vous pouvez regarder une telle 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 une légere surcharge d'E/S
en cours d'exécution car il se peut que VirtualBox doive regarder des
secteurs plusieurs fois. Cela n'est cependant pas observable puisque les
tables avec des informations de secteurs sont toujours conservées en mémoire
et peuvent être inspectées rapidement.
Les images de différenciation sont utilisées 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 chacune d'elles (pour être
précis, une pour chaque image non 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 sur les images
de différenciation. Chaque fois que vous créez un autre instantané,
pour chaque attachement de disque dur, une autre image de différenciation
est créée et attachée, constituant une chaîne ou une arborescence.
Dans la capture d'écran ci-dessus, vous voyez que l'image de
disque d'origine est maintenant attachée à un instantané,
représentant l'état du disque quand le instantané a été fait.
Si vous restaurez maintenant un
instantané - c'est-à-dire si vous voulez revenir à l'état exact de la
machine qui a été stocké dans le instantané -, ce qui suit se produit :
VirtualBox copie les paramètres de la
machine virtuelle qui ont été copiés dans le instantané vers la
machine virtuelle. Il en résulte que si vous avez fait des
changements sur la configuration de la machine depuis que vous
avez fait le instantané, elles sont annulées.
Si l'instantané a été pris alors que la machine était en
fonction, son contenu a un état de machine sauvegardé et cet
état est restauré ; après la restauration du instantané, la
machine sera alors en état « sauvegardée » et reprendra
l'exécution là où se trouve le démarrage suivant. Sinon la
machine sera dans l'état « Coupée » et fera un démarrage complet.
Pour chaque image de disque attachée à la machine, l'image
de différenciation qui conserve toutes les opérations d'écriture
depuis que le instantané actuel a été pris est projetée et
l'image parente d'origine est à nouveau activée. (Si vous avez
restauré le instantané « racine », elle sera l'image de disque
racine de chaque élément attaché ; sinon une autre image de
différenciation proviennent d'elle.) Ceci restaure en fait
l'ancien état de la machine.
Si vous effacez ultérieurement
un instantané pour libérer de l'espace disque, pour chaque attachement
de disque, une des images de différenciation devient obsolète. Dans ce
cas, l'image de différenciation de l'attachement du disque ne peut pas
être simplement effacée. VirtualBox doit au contraire regarder chaque
secteur de l'image de différenciation et doit le copier vers son parent
; cela s'appelle du « merging » d'image et peut être un processus
potentiellement long selon la taille
de l'image de différenciation. Il peut aussi nécessiter temporairement
une quantité de d'espace disque supplémentaire substantielle, avant
que l'image de différenciation devenue obsolète avec l'opération de
merging ne seit effacée.
Images immuables. Quand on
bascule une image en mode « immuable », une image de différenciation
est créée. 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 ont leur propre image de
différenciation qui apparaît, réinitialisant effectivement 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 rapidement créer une seconde machine virtuelle avec le même
paramétrage de système d'exploitation. Cependant, vous ne devriez
faire de copies d'images de disques durs virtuels qu'en utilisant
l'outil fourni avec VirtualBox ; voir le .
Car VirtualBox donne un un numéro d'identité unique (UUID) à chaque image de
disque, qui est également stocké dans l'image, et VirtualBox refusera de
fonctionner avec deux images qui utilisent le même numéro Si vous essayez
accidentellement de réimporter une image de disque que vous avez copiée
normalement, vous pouvez faire une deuxième copie en utilisant l'outil de
VirtualBox et l'importer à la place.
Remarquez que les distributions Linux récentes identifient le disque
d'amorçage à partir de l'ID du disque. Les signalements de l'ID VirtualBox
sont déterminés à partir de l'UUID de l'image du disque virtuel. Donc si
vous clonez une image de disque et si vous essayez de démarrer sur l'image
copiée, il se pourrait que l'invité ne puisse pas déterminer son propre
disque d'amorçage vu que l'UUID a changé. Dans ce cas, vous devez adapter
l'ID du disque dans votre script de chargeur de démarrage (par exemple
/boot/grub/menu.lst). L'ID du disque
ressemble à ceci : scsi-SATA_VBOX_HARDDISK_VB5cfdb1e2-c251e503
Vous pouvez déterminer l'ID de l'image copiée avec hdparm -i /dev/sda
Images de disque et mise en cache E/S
VirtualBox peut éventuellement désactiver la mise en cache E/S
qu'effectuerait sinon le système d'exploitation hôte sur les fichiers images
de disque.
Traditionnellement, VirtualBox ouvre les fichiers images de disque
comme des normaux, ce qui fait qu'ils sont mis en cache par le système
d'exploitation hôte, comme n'importe quel autre fichier. Le principal
avantage de ceci est la vitesse : quand l'OS invité écrit sur le disque et
lorsque le cache de l'OS hôte utilise l'écriture différée, l'opération
d'écriture peut être reportée tout en étant effectuée rapidement sur l'OS
invité, tandis que l'hôte peut effectuer l'opération de façon non
synchronisée. En outre, 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, il se peut que de grandes parties du disque virtuel restent dans
la mémoire du système, la VM peut accéder aux données beaucoup plus rapidement.
Remarquez que cela ne s'applique que sur des fichiers images ; la mise
en tampon n'affecte jamais les disques virtuels résidant sur des supports de
stockage iSCSI distants, ce qui est le scénario le plus courant sur des
configurations d'entreprise. (voir ).
Si la mise en tampon est un paramètre par défaut utile pour virtualiser
quelques machines sur un ordinateur de bureau, cette approche comporte
certains inconvénients :
L'écriture différée à travers le cache de l'OS hôte est moins
sécurisée. Quand l'OS invité écrit des données, il considère qu'elles
sont écrites même si elles ne sont pas encore arrivé sur un disque
physique. Si pour une raison quelconque l'écriture ne se produit pas
(panne de courant, plantage de l'hôte), les chances de perdre des
données sont accrues.
Les fichiers images de disque ont tendance à être très gros. Les
mettre en cache peut donc rapidement utiliser jusqu'à l'ensemble du
cache de l'OS hôte. Selon l'efficacité de la mise en cache de 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, il peut
résulter de la mise en cache de l'hôte que Linux diffère toutes les
écritures jusqu'à ce que le cache de l'hôte soit presque plein, alors
l'écriture de tous ces changements en une seule fois peut éventuellement
figer l'exécution de la VM pendant quelques minutes. Il peut s'en
suivre des erreurs E/S dans l'invité du fait du timeout de requête des
E/S sur ceux-ci.
La mémoire physique est souvent gaspillée vu que les systèmes
d'exploitation invités ont leurs propres caches E/S, ce qui peut
aboutir à ce que les données soient mises en cache deux fois (à la
fois dans les caches de l'invité et de l'hôte) pour un résultat limité.
Il s'en suit que, à partir de la version 3.2, VirtualBox vous permet
éventuellement de désactiver la mise en cache E/S de l'hôte des fichiers
images de disque. Dans ce cas, VirtualBox utilise son propre petit cache
pour mettre les écritures en tampon, mais il n'y a pas de mise en cache de
lecture puisque ceci est déjà fait par l'OS invité. En outre, VirtualBox
supporte complètement l'E/S asynchrone pour ses contrôleurs virtuels SATA,
SCSI et SAS à travers divers fils d'E/S.
Comme l'E/S asynchrone n'est pas supportée par les contrôleurs IDE,
pour des raisons de performance, il se peut que vous souhaitiez laisser la
mise en cache activée pour les contrôleurs IDE virtuels de votre VM.
C'est pourquoi VirtualBox vous permet de configurer si le cache E/S de
l'hôte est utilisé pour chaque contrôleur E/S séparément. Soit décochez la
case « Utiliser le cache E/S de l'hôte » des paramètres « Stockage » pour un
contrôleur de stockage virtuel donné, soit utilisez la commande VBoxManage
suivante pour désactiver le cache E/S de l'hôte pour un contrôleur de
stockage virtuel :VBoxManage storagectl <vm> --name <nomcontrôleur> --hostiocache off
Voir pour des détails.
De même, pour les raisons évoquées ci-dessus, VirtualBox utilise
maintenant par défaut des contrôleurs SATA pour les nouvelles machines
virtuelles.
La désactivation des caches E/S de l'hôte donnera de faibles performances actuellement avec les fichiers VHD et sparse VMDK. Voir le pour les détails.
Limiting bandwidth for disk images
Starting with version 4.0, VirtualBox allows for limiting the
maximum bandwidth used for asynchronous I/O. Additionally it supports
sharing limits through bandwidth groups for several images. It is possible
to have more than one such limit.
Limits are configured through
VBoxManage. The example below creates a
bandwidth group named "Limit", sets the limit to 20 MB/s and assigns the
group to the attached disks of the VM:VBoxManage bandwidthctl "VM name" --name Limit --add disk --limit 20
VBoxManage storageattach "VM name" --controller "SATA" --port 0 --device 0 --type hdd
--medium disk1.vdi --bandwidthgroup Limit
VBoxManage storageattach "VM name" --controller "SATA" --port 1 --device 0 --type hdd
--medium disk2.vdi --bandwidthgroup Limit
All disks in a group share the bandwidth limit, meaning that in the
example above the bandwidth of both images combined can never exceed 20
MB/s. However if one disk doesn't require bandwidth the other can use the
remaining bandwidth of its group.
The limits for each group can be changed while the VM is running,
with changes being picked up immediately. The example below changes the
limit for the group created in the example above to 10 MB/s:VBoxManage bandwidthctl "VM name" --name Limit --limit 10
Opération sur le lecteur de CD/DVD
Le(s) lecteur(s) de CD/DVD par défaut ne supporte(nt) que la lecture.
La configuration du média peut être modifiée au moment de l'exécution. Vous
pouvez choisir entre trois options pour fournir les données au média :
Lecteur hôte définit que
l'invité peut lire depuis le média dans le lecteur hôte. Les changements
de média des lecteurs hôtes sont signalés à l'invité.
Le fichier image donne à
l'invité l'accès en lecture seule aux données de l'image (souvent
mentionnée comme image ISO). Un changement de média est signalé lors
du basculement vers une image différente ou de la sélection d'une autre
option.
EVide est pour un lecteur sans
média inséré. Le lecteur répond comme d'habitude à la situation, mais
aucune donnée ne peut être lue.
Comme déjà mentionné, les signalements de changements de média dépendent
des options sélectionnées pour le média. Les changements de média peuvent
être empêchés par l'invité et VirtualBox le répercute en verrouillant le
lecteur hôte si nécessaire. Vous pouvez forcer la suppression d'un média
dans une telle situation par l'interface graphique de VirtualBox ou l'outil
en ligne de commande VBoxManage. En fait, cela revient à une éjection
d'urgence fournie par beaucoup de lecteurs CD/DVD avec tous les effets
colatéraux associés. L'OS invité peut renvoyer des messages d'erreur dans
ce cas, comme sur du vrai matériel. Utilisez ceci avec prudence.
Dans tous les cas, seuls des médias de données sont supportées pour les
lecteurs de CD/DVD. Cela signifie que tous les formats de CD de données et
tous les formats DVD peuvent en principe être utilisés. Comme les lecteurs
DVD hôte refusent de lire des médias vidéos DVD chiffrés, vous ne pouvez
pas jouer de telles vidéos avec l'émulation de CD/DVD régulière. Il se peut
que vous réussissiez à le faire fonctionner avec le support expérimental
passthrough décrit au .
Les formats de CD audio et de CD vidéo ne sont pas supportés, ce qui
signifie que vous ne pouvez pas jouer de tels médias depuis une machine
virtuelle.
Écrire des CDs et des DVDs en utilisant le lecteur hôte
Quand vous attachez le lecteur CD/DVD de votre hôte à une machine
virtuelle (voir le ), cela donne en
principe à la machine un accès en lecture seule au lecteur hôte. Cela empêche
l'invité d'écrire sur le lecteur hôte. En particulier, vous ne pouvez pas
graver de CDs et de DVDs depuis l'invité de cette façon.
En fonctionnalité expérimentale (qui ne fonctionne actuellement que
pour les médias de données, les formats de CD audio, vidéo ne sont pas
supportés), il est possible de donner à l'invité l'accès aux fonctionnalités
d'écriture de CD/DVD du lecteur hôte (si disponibles). Il y a une case à
cocher « Passthrough » dans la boîte de dialogue de l'interface graphique
pour configurer le média attaché à un contrôleur de stockage, ou vous pouvez
utiliser la ligne de commande :
VBoxManage storageattach <uuid|nomvm>
--storagectl <nom>
--port <numéro>
--device <numéro>
[--type <dvddrive|hdd|fdd>
--medium <none|emptydrive|uuid|filename|host:<drive>>]
[--passthrough <on|off>]
[--forceunmount]
Voir aussi .
Même si pass-through est activé, des commandes risquées telles que la
mise à jour du firmware du lecteur seront bloquées. Sur certains lecteurs
hôtes, la fonctionnalité pass-through permet de jouer des médias vidéos DVD
chiffrés.
Sur les hôtes Solaris, le path-through exige de lancer VirtualBox avec
les droits du vrai 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 connexions Internet ((TCP/IP).
Surtout avec l'arrivée de l'Internet haut débit (Gigabit Ethernet), il devient
envisageable d'attacher des serveurs de stockage iSCSI simplement en tant
que disques durs distants à un réseau d'ordinateurs. Dans la terminologie
iSCSI, le serveur qui fournit les ressources de stockage est appelé une
« cible iSCSI », tandis que le client qui se connecte au serveur et accède
à ses ressources est appelé « l'initiateur iSCSI ».
VirtualBox peut présenter de façon intégréte à une machine virtuelle
du stockage distant iSCSI comme un disque dur virtuel. Le système
d'exploitation invité ne verra aucune différence entre une image de disque
virtuelle (fichier VDI) et une cible iSCSI. Pour faire cela, VirtualBox a un
initiateur iSCSI intégré.
Le support iSCSI de VirtualBox a été développé en fonction du standard
iSCSI et il devrait fonctionner avec toutes les cibles iSCSI standards
conformes au modèle. Pour utiliser une cible iSCSI avec VirtualBox, vous
devez d'abord l'enregistrer en tant que disque dur virtuel avec
VBoxManage ; voir
. La cible apparaîtra dans la liste
d'images de disques, comme décrit au , et peut ainsi
être attachée à l'un des trois emplacements de disque dur de la VM de façon
ordinaire.