20 03 2013
Powershell: New-VHD retourne une erreur 0x80070057
Un petit bug s’est glissé dans la commande New-VHD de powershell 3.0, empêchant la création du disque virtuel en retournant l’erreur « One or more arguments are invalid (0x80070057) ».
Lorsque vous créez un nouveau VHD(X), la commande retourne l’erreur suivante:
1 |
New-VHD -Path 'D:\Hyper-V\Virtual Hard Disks\MYSERVER_Data.vhdx' -SizeBytes 3.6TB -Dynamic |
1 2 |
New-VHD : Failed to create the virtual hard disk. The system failed to create 'D:\Hyper-V\Virtual Hard Disks\MYSERVER_Data.vhdx': One or more arguments are invalid(0x80070057). A parameter that is not valid was passed to the operation. |
Explications:
La taille du disque ici donnée en paramètre correspont à 3.6TB. Pour avoir la taille en bytes, vous pouvez utiliser la commande powershell suivante:
1 2 |
PS C:\>3.6TB 3958241859993.6 |
En passant en paramètre la taille arrondie (3958241859993) le problème est le même.
Par défaut, le LogicalSectorSize d’un VHD est de 512 bytes. Or: 3.6TB/512 = 7730941132.8, et comme un byte est indivisible, powershell a tendance à râler.
Workaround:
Afin de contourner l’erreur, vous pouvez utiliser la commande suivante:
1 2 |
$Size = ([uint64](<votre taille>/512))*512 New-VHD -Path 'D:\Hyper-V\Virtual Hard Disks\MYSERVER_Data.vhdx' -SizeBytes $Size -Dynamic |
Article initialement publié sur blog.sogeti.ch
System Center 2012 – Rollup Update 1 pour System Center 2012 SP1 Windows Server 2012: Cluster Manager plante
Je vous remercie de avoir partagé cette solucion ! Mais il y a en autre problème avec cette cmdlet. J’ai note que la cmdlet renvoie une erreur chaque fois que tentez de l’utiliser pour des disques ou des partitions avec le tailler du cluster supérieure à 64K bytes.
Si vous avez une solution à ce problème, j’attends vos propositions.
Merci !
Il s’agit ici d’un exemple de cette erreur:
PS C:\Windows\system32> New-VHD -Path ‘E:\win10bak.vhdx’ -SizeBytes $Size -Dynamic
New-VHD : Failed to create the virtual hard disk.
The system failed to create ‘E:\win10bak.vhdx’.
At line:1 char:1
+ New-VHD -Path ‘E:\win10bak.vhdx’ -SizeBytes $Size -Dynamic
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [New-VHD], VirtualizationException
+ FullyQualifiedErrorId : OperationFailed,Microsoft.Vhd.PowerShell.Cmdlets.NewVhd
C:\Windows\system32>fsutil fsinfo ntfsinfo E:
NTFS Volume Serial Number : 0xe40ax6
NTFS Version : 3.1
LFS Version : 2.0
Number Sectors : 0x00000000747057ff
Total Clusters : 0x0000000000e8e0af
Free Clusters : 0x000000000097f8cb
Total Reserved : 0x0000000000000040
Bytes Per Sector : 512
Bytes Per Physical Sector : 4096
Bytes Per Cluster : 65536
Bytes Per FileRecord Segment : 1024
Clusters Per FileRecord Segment : 0
Voici un exemple de utiliser la cmdlet pour disque C:
PS C:\Windows\system32> New-VHD -Path ‘C:\win10bak.vhdx’ -SizeBytes $Size -Dynamic
ComputerName : EH
Path : C:\win10bak.vhdx
VhdFormat : VHDX
VhdType : Dynamic
FileSize : 4194304
Size : 104857600
MinimumSize :
LogicalSectorSize : 512
PhysicalSectorSize : 4096
BlockSize : 33554432
ParentPath :
C:\Windows\system32>fsutil fsinfo ntfsinfo C:
NTFS Volume Serial Number : 0x38xc
NTFS Version : 3.1
LFS Version : 2.0
Number Sectors : 0x000000000c7f6fff
Total Clusters : 0x00000000018fedff
Free Clusters : 0x0000000000b302c3
Total Reserved : 0x00000000000015b1
Bytes Per Sector : 512
Bytes Per Physical Sector : 4096
Bytes Per Cluster : 4096
Bytes Per FileRecord Segment : 1024
Clusters Per FileRecord Segment : 0
Toutefois, il se pourrait que le tailler ce n’est pas l’origine du problème. Il peut être que le fond du problème ne tient pas à le tailler mais plutôt à une lettre de lecteur ?
Hope you can forgive me my terrible French. 😉
Bonjour,
LA commande fsutil renvoie les informations du disque du host sur lequel vous lancez la commande de création du VHDX et la vérification du VHDX. Il faut monter le disque vhdx avant tout.
Bien cordialement,
Guillaume LACAILLE