Grundlagen: Datenträger per PowerShell auflisten und hinzufügen
Bevor virtuelle Maschinen VHDs verwenden können, müssen VHDs als Datenträger (engl. Disks) in Azure registriert werden. Über das Verwaltungsportal geht das im Bereich Virtuelle Computer, Datenträger und dort über den Befehl "Erstellen".
Registrieren von Datenträgern
In PowerShell verwenden wir den Befehl Add-AzureDisk, um eine VHD als Datenträger zu registrieren. Ein Datenträger kann entweder als einfacher Datenträger oder als Betriebssystemdatenträger registriert werden.
Ein neuer Datenträger kann mit dem PowerShell-Befehl Add-AzureDisk registriert werden. Hierbei sind zumindest die Parameter DiskName und MediaLocation anzugeben.
Wichtig: die VHD wird als einfacher Datenträger und nicht als Betriebssystemdatenträger registriert!
Auch wenn die VHD ein Betriebssystem enthält, wird die VHD nicht automatisch als Betriebssystemdatenträger registriert. Dafür ist der optionale Parameter OS notwendig, der als Eingabe nur einen von zwei möglichen Werten akzeptiert: Windows oder Linux.
Wollten wir das Beispiel von gerade eben wiederholen, aber dieses Mal die VHD als Betriebssystemdatenträger registrieren, müssen wir den Befehl mit dem Parameter OS erweitern.
Add-AzureDisk -DiskName host3 -MediaLocation https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd -OS Windows
Hinzufügen und Entfernen von Datenträgern
Mit dem Hinzufügen eines einfachen Datenträgers haben wir zunächst den ersten Schritt absolviert, denn noch ist der Datenträger nicht in Funktion. Dazu brauchen wir den PowerShell-Befehl Add-AzureDataDisk. Der Datenträger kann zur Zeit der VM-Erstellung oder auch zur Laufzeit hinzugefügt werden.
Im folgenden Beispiel fügen wir der virtuellen Maschine "host2" den Datenträger "host3" hinzu, den wir weiter oben erstellt haben. Wenn der Datenträger schon existiert und registriert ist, dann ist der Parameter Import zu verwenden. Da wir im Beispiel weiter oben den Datenträger bereits registriert ist, geben wir demnach auch den Parameter Import mit an.
Existiert der Datenträger noch nicht, kann mit dem Befehl Add-AzureDataDisk auch ein neuer Datenträger erstellt werden. Hierfür ist der Parameter CreateNew zu verwenden. Wenn man keinen Speicherort mit dem Parameter MediaLocation angibt, verwendet der Befehl das aktuelle Speicherkonto und erstellt die neue VHD im Container "vhds". Sollte der Container noch nicht vorhanden sein, wird dieser erstellt.
Daher ist es wichtig, wenn man MediaLocation nicht angibt, sicherzustellen, dass das aktuelle Speicherkonto angegeben ist. Im folgenden Beispiel passieren folgende Schritte:
- Zunächst lasse ich mir mit dem Befehl Get-AzureSubscription Informationen zum aktuellen Abonnement anzeigen. Hier sieht man, dass das aktuelle Speicherkonto nicht gesetzt ist. (Eigenschaft CurrentStorageAccount)
- Danach versuche wider besseren Wissens einen neuen Datenträger mit Add-AzureDataDisk zu erstellen und gebe den Speicherort nicht an. Erwartungsgemäß wird dies mit einem Fehler quittiert, dass entweder der Parameter MediaLocation angegeben werden muss oder das aktuelle Speicherkonto gesetzt werden muss.
- Mit dem Befehl Get-AzureStorageAccount schaue ich nach, welche Speicherkonten im aktuellen Abonnement existieren.
- Mit dem Befehl Set-AzureSubscription und dem Parameter CurrentStorageAccountName setze ich das aktuelle Speicherkonto.
- Ich wiederhole den Befehl aus Schritt 2. Dadurch wird eine neue VHD erstellt, die automatisch als neuer Datenträger registriert und der VM hinzugefügt wird.
Weitere Informationen
PowerShell: Azure-Automatisierung für Einsteiger (Microsoft Virtual Academy)
Grundlagen: Azure & PowerShell: VMs erstellen (MSDN Blogs)
Skripte
Für den Fall, dass die Skripte auf GitHub Gist nicht aufrufbar sind, sind diese hier noch einmal unformatiert aufgeführt.
Get-AzureDisk (vollständige Ausgabe)
Get-AzureDisk
<# Output
AffinityGroup :
AttachedTo : RoleName: host2
DeploymentName: host2
HostedServiceName: leasetest2
IsCorrupted : False
Label :
Location : West Europe
DiskSizeInGB : 128
MediaLink : https://pktest1.blob.core.windows.net/vhds/leasetest2-host2-2014-12-08.vhd
DiskName : host2-host2-0-201412081048370142
SourceImageName : a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201411.01-en.us-127GB.vhd
OS : Windows
IOType : Standard
OperationDescription : Get-AzureDisk
OperationId : 9d03c61b-f609-5e7e-ad91-5eefd89492b6
OperationStatus : Succeeded
#>
Get-AzureDisk (formatierte Ausgabe)
Get-AzureDisk | Format-Table -Property DiskName, AttachedTo -AutoSize
<# Output
DiskName AttachedTo
-------- ----------
host2-host2-0-201412081048370142 RoleName: host2 ...
host4-host4-0-201412081236310110 RoleName: host4 ...
host5-host5-0-201412081327460337 RoleName: host5 ...
#>
Add-AzureDisk (VHD als Datenträger registrieren)
Add-AzureDisk -DiskName host3 -MediaLocation https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd
<# Output
AffinityGroup :
AttachedTo :
IsCorrupted : False
Label : host3
Location : West Europe
DiskSizeInGB : 128
MediaLink : https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd
DiskName : host3
SourceImageName :
OS :
IOType : Standard
OperationDescription : Add-AzureDisk
OperationId : 92cf9ded-9ace-59ef-81e9-f10ca7006d84
OperationStatus : Succeeded
#>
Add-AzureDataDisk & Remove-AzureDataDisk (Datenträger einer VM hinzufügen & entfernen)
Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -DiskName host3 -Import -LUN 1 -HostCaching ReadWrite | Update-AzureVM
<# Output
OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM dd2a228c-9a60-5449-9568-0a9ef10e9250 Succeeded
#>
Get-AzureVM -ServiceName leasetest2 -Name host2 | Remove-AzureDataDisk -LUN 1 | Update-AzureVM
<# Output
OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 269f6e1f-f7c6-5158-bd2b-f1081067f000 Succeeded
#>
Add-AzureDataDisk (neue VHD erzeugen)
Get-AzureSubscription -SubscriptionName "Azure MSDN - pkirchner"
<# Output
SubscriptionId : c6264819-a8d6-4279-b493-4a47f4300c54
SubscriptionName : Azure MSDN - pkirchner
Environment : AzureCloud
SupportedModes : AzureServiceManagement
DefaultAccount : BE130E17300A9E2F90B1A0575557266671623B04
Accounts : {BE130E17300A9E2F90B1A0575557266671623B04}
IsDefault : True
IsCurrent : True
CurrentStorageAccountName :
#>
Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew -DiskLabel "DataDisk2" -DiskSizeInGB 1023 -LUN 0 -HostCaching ReadWrite | Update-AzureVM
<# Output
Add-AzureDataDisk : Must specify MediaLocation or set a default storage account using Set-AzureSubscription.
In Zeile:1 Zeichen:51
+ Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Add-AzureDataDisk], ArgumentException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.AddAzureDataDiskCommand
#>
Get-AzureStorageAccount
<# Output
StorageAccountDescription :
AffinityGroup :
Location : West Europe
GeoReplicationEnabled :
GeoPrimaryLocation : West Europe
GeoSecondaryLocation :
Label : pktest1
StorageAccountStatus : Created
StatusOfPrimary : Available
StatusOfSecondary :
Endpoints : {https://pktest1.blob.core.windows.net/, https://pktest1.queue.core.windows.net/,
https://pktest1.table.core.windows.net/, https://pktest1.file.core.windows.net/}
AccountType : Standard_LRS
StorageAccountName : pktest1
OperationDescription : Get-AzureStorageAccount
OperationId : db4c00ce-ed1c-5351-8de7-1b595419a5dc
OperationStatus : Succeeded
WARNUNG: GeoReplicationEnabled property will be deprecated in a future release of Azure PowerShell. The value will be merged into the AccountType pr
operty.
#>
Set-AzureSubscription -SubscriptionName "Azure MSDN - pkirchner" -CurrentStorageAccountName pktest1
Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew -DiskLabel "DataDisk2" -DiskSizeInGB 1023 -LUN 0 -HostCaching ReadWrite | Update-AzureVM
<# Output
OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM c2187124-547c-55c3-a0ef-0129474e02b9 Succeeded
#>
English Summary
This article describes how to register VHDs as simple data disks and as operating system disks in Azure via PowerShell. You register a VHD as disk with the PowerShell command Add-AzureDisk. You add a disk to a VM with the command Add-AzureDataDisk.
Comments
- Anonymous
March 15, 2015
Thanks