Introduction
Windows 7 et Windows Server 2008 R2 embarquent en natif une nouvelle fonctionnalité très attendue qui est la gestion des disques VHD (Virtual Hard Drive).
J’ai eu bien sûr l’occasion de tester, et comme tout produit de “virtualisation”, même si ce n’est même pas au niveau OS ou applicatif, cela apporte son lot de flexibilité, qui n’est d’ailleurs pour l’instant pas assez mis en avant. Personnellement, je trouve le support de ce format formidable.
Je vais vous expliquer dans ce billet pourquoi, à travers différents cas pratiques, la technologie a sa place dans tous nos PC que ce soit pour du test ou de la production.
Fonctionnement
Avant tout éloge de la technologie, il faut voir théoriquement et concrètement comment ça marche.
Les disques VHD, pour l’instant supporté seulement par les OS Windows Server 2008 R2 et Windows 7, sont présentés sur le disque physique sous forme d’un fichier portant l’extension .vhd.
Il ne faut cependant pas confondre le disque VHD dont je parle ici, et l’usage que l’on en virtualisation serveur (Hyper-V / Virtual PC).
On crée facilement le disque depuis la console “Disk Management” sous Windows 7 ou Windows 2008 R2.
Pour pouvoir accéder aux données à l’intérieur du disque, on l’attache dans notre gestionnaire de disque.
On peut comme n’importe quel disque partitionner le disque VHD et assigner une lettre aux partitions. On peut dès lors intuitivement écrire des données à l’intérieur.
Le fichier VHD en lui-même peut être de différents types et de différentes tailles :
On spécifie la taille maximale que le fichier VHD peut prendre. Cela prédétermine l’espace disque que le VHD peut potentiellement prendre. Suivant le type du fichier VHD spécifié (“Fixed” ou “Expandable”), l’espace disque est ou non réservé. Si le disque est de type “Expandable” par exemple, le fichier VHD se redimensionne au fur et à mesure des données écrites dans le disque.
On peut assigner des permissions sur les disques :
On assigne des descripteurs de sécurité sur le disque qui permettent de déterminer les droits effectifs sur le disque. On peut par exemple refuser l’accès à un utilisateur ou autoriser seulement la lecture à un autre et autoriser la lecture et l’écriture à d’autres.
Un disque peut hériter d’un autre disque :
Le principe est d’avoir un disque parent puis d’y attacher un disque enfant qui contiendra le différentiel par rapport au disque parent à l’instant de la liaison. On peut aussi cloner le disque bloc par bloc vers un autre VHD. Concrètement, cela sert si on a créé un disque enfant et qu’on veut copier le contenu du VHD vers un seul VHD, et non rester avec le parent et l’enfant.
Applications
Démarrage depuis VHD
Bien sûr, le bien connu “Boot sur VHD” vient en tête de liste. Concrètement, on modifie le fichier de données de configuration de démarage (= Boot Configuration Datastore, BCD, qui remplace depuis Windows Vista le fameux fichier boot.ini) grâce à l’utilitaire BCDEdit pour que le gestionnaire de démarrage pointe vers un fichier VHD au lieu de pointer vers une partition pour démarrer le système.
Avantages : on a plus besoin de dédier une partition par OS ! donc l'installation ou le test d’un nouveau système à un minimum d’impact sur le pc. Et étant donné que seul le système de fichier est virtualisé dans le VHD, on ne passe pas par une couche supplémentaire qui va émuler une plateforme matérielle différente et de ce fait consommer des ressources.
Par contre, pour démarrer depuis un VHD, il faut soit Windows Server 2008 R2 ou Windows 7. Mais si vous voulez seulement mettre des données à l’intérieur du VHD, Enjoy… :-)
Pratiquement, en terme d’I/O disques, on perd même pas 3 à 4% des performances, ce n’est pas perceptible et le bénéfice couvre largement les pertes.
Déploiements simplifiés
Un certain nombre d’autres logiciels Microsoft vont supporter le format de disque VHD. C’est le cas de Windows Deployment Services, qui permet d’utiliser les images VHD au lieu de l’ancien format d’image qui est WIM.
Windows Deployment Services permet de démarrer l’image d’install en PXE mais aussi de directement copier le VHD sur le disque dur de l’utilisateur. On peut, avec la technique décrite dans le précédent paragraphe, tout de suite démarrer sur le poste. Mais on peut aussi y attacher un disque enfant.
Résultat : On peut avoir un master présent sur chaque poste, l’utilisateur démarrant depuis le disque enfant attaché. Si on change d’utilisateur, on peut tout simplement supprimer le disque enfait. Si on veut sauvegarder l’état du disque, il suffit de copier seulement le disque enfant, le disque parent utilisé en tant que master étant commun à tous les postes.
Perspectives : dynamisation du datacenter
Et on peut extrapoler le raisonnement plus loin. Pourquoi se limiter au boot sur VHD ? Non, pourquoi se limiter au déploiement par VHD ? On est déjà aller bien loin. Mais oui, on peut aller encore plus loin. Comment ?
Comme je disais plus haut, les tendances des logiciels Microsoft est bien heureusement à l’utilisation du format VHD. Un logiciel intéressant qui supporte le VHD est le Target iSCSI Microsoft. Imaginez ne plus avoir à gérer le thin provisionning au niveau des baies de stockage. Imaginez copier des volumes iSCSI aussi simplement que copier des fichiers. Booter sur du iSCSI c’est tellement plus rapide que booter en PXE…
Commandes
Je suis sûr qu’un certain nombre de personnes vont s’atteler à la tâche d’exploiter cette fonctionnalité, que je qualifierais même de majeure.
Pour les aider, voici une liste de commandes que vous allez sans doute revoir :
Créer, attacher, formater et assigner une lettre à un VHD grâce à diskpart (à lancer dans une invite de commande Windows) :
diskpart
create vdisk file=C:\fichier.vhd type=expandable maximum=32000
select vdisk file=C:\fichier.vhd
attach vdisk
create partition primary
assign
format quick label=nom_de_partition
exit
Edition du fichier de données de configuration de démarrage (BCD) :
bcdedit /create /d “Boot sur VHD” /application osloader
(cette commande retourne un GUID de l’entrée, remplacer {GUID} par le vrai GUID plus bas)
bcdedit /set {GUID} device vhd=C:\fichier.vhd
bcdedit /set {GUID} osdevice vhd=C:\fichier.vhd
bcdedit /set {GUID} path \windows\system32\winload.exe
bcdedit /set {GUID} systemroot \windows
bcdedit /set {GUID} detecthal yes
bcdedit /displayorder {GUID} /addlast
Utilisation des VHD dans WDS :
Ajouter un VHD à WDS :
WDSUtil.exe /Verbose /Progress /Add-Image /ImageFile:”cheminversl’image” /ImageType:Install /ImageGroup:NomduGroupe
Lignes à ajouter dans le fichier unattend.xml utilisé par WDS pour copier le VHD :
<ImageSelection>
<WillShowUI>OnError</WillShowUI>
<InstallImage>
<ImageName>Nomdelimage</ImageName>
<ImageGroup>VHD</ImageGroup>
<Filename>fichier.vhd</Filename>
</InstallImage>
Conclusion
L’utilisation du format VHD donne de nouvelles perspectives de gestion de l’infrastructure. Comme on l’a décrit plus haut, il nous permet de faciliter le test, grâce à la création de VHD en lieu et place des partitions. Surtout vu l’évolution de l’espace libre sur les stations de travail, on peut avoir facilement grâce au VHD, 5 ou 6 instances d’un système d’exploitations. Il nous permet aussi de faciliter le déploiement, où d’imaginer des scénarios nous permettant d’économiser de l’espace disque ou de gérer des points de contrôles / snapshots, de machines physiques.