19 06 2014
Shared VHDX ne peut pas être mis online
Lorsque vous créez un cluster avec des disques shared-VHDX, vous obtenez le message suivant: The request could not be performed because of an I/O device error.
Hier j’ai fais une tentative de migrer un cluster SQL Server virtuel, sur lequel il y avait des lun attachées en iSCSI, vers des disques en Shared-VHDX (dans le cadre d’une migration de stockage). Cluster ayant été créé initialement sous Hyper-V 2012.
Symptômes
Après conversion des lun en vhdx grâce aux outils NetApp, je migre les VMs vers un nouveau cluster Hyper-V 2012 R2, partage les VHDX et démarre les machines virtuelles.
Là, surprise !
- Les volumes sont tous offline;
- Lorsque j’essaye de mettre online le disque j’obtiens le message suivant:
Tentative de créer un nouveau VHDX depuis VMM et de le partager: même résultat.
Une histoire de secteurs
Le nouveau cluster Hyper-V est relié à une baie Violin-Memory, sur laquelle j’ai créé une LUN avec des blocs de 4096 bytes (4Kb, supporté depuis Windows Server 2012) au lieu des historiques 512 bytes pour de meilleurs performances.
Lorsque vous créez un VHDX, comme pour certains disques physiques récents, il existe 2 tailles de blocs:
- PhysicalSectorSizeBytes: 4096 bytes par défaut (tous les 4096 bytes le bloc est écrit sur le disque physique);
- LogicalSectorSize: 512 bytes par défaut (tous les 512 bytes, le bloc est écrit sur le disque virtuel);
Après vérification, les VHDX créés par l’outil de conversion de NetApp me donne un VHDX avec les tailles par défaut (4096-512).
Tentative de création d’un VHDX avec les 2 valeurs alignées sur la LUN (4096-4096-4096)….BINGO !
Dans la configuration Lun-Physical-Logical 4096-4096-512, le shared VHDX ne fonctionne pas.
Trios Lun-Physical-Logical
Après quelques tests, voici les trio qui fonctionnent:
LUN Sector Size | VHDX PhysicalSectorSize | VHDX LogicalSectorSize | Result |
512 | 512 | 512 | OK |
512 | 4096 | 512 | OK |
512 | 512 | 4096 | OK |
512 | 4096 | 4096 | OK |
4096 | 512 | 512 | FAIL |
4096 | 4096 | 512 | FAIL |
4096 | 512 | 4096 | OK |
4096 | 4096 | 4096 | Ok |
Je ne sais pas si c’est un fonctionnement by-design ou si c’est un bug, toujours est-il qu’il faut bien faire attention à la taille des secteurs logiques lorsque vous travaillez avec du Shared-VHDX. L’idéal étant d’aligner la taille des blocs Lun-physique-logique à la même taille afin d’obtenir les meilleurs performances (surtout vrai en 4Kb).
Créer un VHDX avec une taille de bloc
Pour créer un VHDX avec une taille de bloc particulière, il faut taper la commande suivante sur Hyper-V (non disponible dans SCVMM):
1 |
New-VHD -ComputerName Hyperv01 -Path C:\ClusterStorage\Volume1\MonVHDX-4K.vhdx -SizeBytes 10GB -PhysicalSectorSizeBytes 4096 -LogicalSectorSizeBytes 4096 |
Partie 8: Introduction aux Virtual Adapter Port Profiles Azure Site Recovery en Preview et Azure Status
[…] Le VHDX doit être stocké sur un CSV ou un File-Out Scale Server sous Windows Server 2012 R2 (pas de disque local, pas de Lun qui n’est pas en CSV, pas de SMB 3 sur NetApp…). Attention à la géométrie du CSV ! […]
Do you think its the same
https://support.microsoft.com/en-us/kb/3025091
Hi YSDimov,
I missed this one, but yeah, the symptoms looks pretty much the same
However, the example does not give the same result than my tests, but that confirms that there is something wrong in the way the Shared-VHDX are implemented (probably the reason why host based VM backup is not supported with Shared VHDX so far).
I should perform some tests with the new VHDS format introduced with the preview release of Hyper-V 2016 (and Windows 10)…
[…] Shared VHDX ne peut pas être mis online http://www.vinfra.ch/2014/06/shared-vhdx-ne-peut-pas-etre-mis-online/ […]