Tutorial: Administración de discos con Azure PowerShell
Las máquinas virtuales de Azure usan discos para almacenar sistemas operativos, aplicaciones y datos. Cuando se crea una máquina virtual es importante elegir un tamaño de disco y una configuración adecuados para la carga de trabajo esperada.
En este tutorial se trata la implementación y administración de discos de máquina virtual. En este tutorial, aprenderá a:
- Crear, asociar e inicializar un disco de datos
- Comprobar el estado de un disco
- Inicializar un disco
- Expandir y actualizar un disco
- Desasociar y eliminar un disco
Requisitos previos
Debe disponer de una cuenta de Azure con una suscripción activa. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Azure Cloud Shell
En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:
Opción | Ejemplo o vínculo |
---|---|
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Solo con seleccionar Pruébelo no se copia automáticamente el código o comando en Cloud Shell. | |
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. | |
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. |
Para usar Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.
Pegue el código o comando en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.
Seleccione Enter para ejecutar el código o comando.
Crear una VM
Los ejercicios de este tutorial requieren una máquina virtual. Siga los pasos descritos en esta sección para crear una.
Antes de comenzar, busque la variable $azRegion
ubicada en la primera línea del código de ejemplo y actualice el valor para que refleje la región que desee. Por ejemplo, para especificar la región Centro de EE. UU. , use $azRegion = "Central US"
. A continuación, use el código para implementar una máquina virtual dentro de un nuevo grupo de recursos. Se le pedirán los valores de nombre de usuario y contraseña de la cuenta de administrador local de la máquina virtual.
$azRegion = "[Your Region]"
$azResourceGroup = "myDemoResourceGroup"
$azVMName = "myDemoVM"
$azDataDiskName = "myDemoDataDisk"
New-AzVm `
-Location $azRegion `
-ResourceGroupName $azResourceGroup `
-Name $azVMName `
-Size "Standard_D2s_v3" `
-VirtualNetworkName "myDemoVnet" `
-SubnetName "myDemoSubnet" `
-SecurityGroupName "myDemoNetworkSecurityGroup" `
-PublicIpAddressName "myDemoPublicIpAddress"
La salida confirma la creación correcta de la máquina virtual.
ResourceGroupName : myDemoResourceGroup
Id : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoTestVM
VmId : [{GUID}]
Name : myDemoVM
Type : Microsoft.Compute/virtualMachines
Location : centralus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mydemovm-abc123.Central US.cloudapp.azure.com
La máquina virtual se aprovisiona, y se crean y asocian automáticamente dos discos.
- Un disco de sistema operativo, que hospeda el sistema operativo de la máquina virtual.
- Un disco temporal, que se usa principalmente para operaciones como el procesamiento de datos temporales.
Agregar un disco de datos
Se recomienda separar los datos de aplicación y usuario de los datos relacionados con el sistema operativo siempre que sea posible. Si necesita almacenar datos de usuario o aplicación en la máquina virtual, normalmente creará y asociará discos de datos adicionales.
Siga los pasos de esta sección para crear, asociar e inicializar un disco de datos en la máquina virtual.
Creación del disco de datos
Esta sección le guía a través de la creación de un disco de datos.
Para poder crear un disco de datos, primero debe crear un objeto de disco. En el ejemplo de código siguiente se usa el cmdlet New-AzDiskConfig para configurar un objeto de disco.
$diskConfig = New-AzDiskConfig ` -Location $azRegion ` -CreateOption Empty ` -DiskSizeGB 128 ` -SkuName "Standard_LRS"
Una vez creado el objeto de disco, use el cmdlet New-AzDisk para aprovisionar un disco de datos.
$dataDisk = New-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $azDataDiskName ` -Disk $diskConfig
Puede usar el cmdlet Get-AzDisk para comprobar que se ha creado el disco.
Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $azDataDiskName
En este ejemplo, la salida confirma que se creó el disco. Los valores de propiedad
DiskState
yManagedBy
confirman que el disco aún no está asociado.ResourceGroupName : myDemoResourceGroup ManagedBy : ManagedByExtended : {} OsType : DiskSizeGB : 128 DiskSizeBytes : 137438953472 ProvisioningState : Succeeded DiskIOPSReadWrite : 500 DiskMBpsReadWrite : 60 DiskState : Unattached Name : myDemoDataDisk
Conectar el disco de datos
Se debe asociar un disco de datos a una máquina virtual para que esta pueda acceder a él. Realice los pasos de esta sección para crear una referencia para la máquina virtual, conecte el disco y actualice la configuración de la máquina virtual.
Obtenga la máquina virtual a la que asociará el disco de datos. En el código de ejemplo siguiente se usa el cmdlet Get-AzVM para crear una referencia a la máquina virtual.
$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
A continuación, asocie el disco de datos a la configuración de máquina virtual con el cmdlet Add-AzVMDataDisk.
$vm = Add-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskName ` -CreateOption Attach ` -ManagedDiskId $dataDisk.Id ` -Lun 1
Por último, actualice la configuración de la máquina virtual con el cmdlet Update-AzVM.
Update-AzVM ` -ResourceGroupName $azResourceGroup ` -VM $vm
Después de una breve pausa, la salida confirma que la asociación se ha realizado correctamente.
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
Inicialización del disco de datos
Después de asociar un disco de datos a la máquina virtual, el sistema operativo debe configurarse para que use el disco. En la sección siguiente se proporcionan instrucciones sobre cómo conectarse a la máquina virtual remota y configurar el primer disco agregado.
Inicie sesión en Azure Portal.
Busque la máquina virtual a la que ha asociado el disco de datos. Cree una conexión del protocolo de escritorio remoto (RDP) e inicie sesión como administrador local.
Después de establecer una conexión RDP a la máquina virtual remota, seleccione el menú Inicio de Windows. Escriba PowerShell en el cuadro de búsqueda y seleccione Windows PowerShell para abrir una ventana de PowerShell.
En la ventana abierta de PowerShell, ejecute el siguiente script.
Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "myDemoDataDisk" -Confirm:$false
La salida confirma una inicialización correcta.
DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- --------------- ---------- --------- ------------ ----------------- ------------- ---- F myDemoDataDisk NTFS Fixed Healthy OK 127.89 GB 128 GB
Expansión de un disco
Puede expandir discos de Azure para proporcionar capacidad de almacenamiento adicional cuando la máquina virtual tenga poco espacio disponible en disco.
Algunos escenarios requieren que los datos se almacenen en el disco del sistema operativo. Por ejemplo, es posible que deba admitir aplicaciones heredadas que instalen componentes en la unidad del sistema operativo. También puede tener la necesidad de migrar un equipo físico local o una máquina virtual con una unidad de sistema operativo más grande. En tales casos, puede que sea necesario expandir el disco del sistema operativo de una máquina virtual.
No se admite la reducción de un disco existente, y puede provocar una pérdida de datos.
Actualización del tamaño del disco
Siga los pasos que se indican a continuación para cambiar el tamaño del disco del sistema operativo o de un disco de datos.
Importante
Si el disco cumple los requisitos de Expandir sin tiempo de inactividad, puede omitir los pasos 2 y 6.
No se admite la reducción de un disco existente, y puede provocar una pérdida de datos.
Después de expandir los discos, debe expandir el volumen en el sistema operativo para aprovechar el disco más grande.
Seleccione la máquina virtual que contiene el disco que va a cambiar de tamaño con el cmdlet
Get-AzVM
.$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Para poder cambiar el tamaño del disco de una máquina virtual, primero debe detenerla. Use el cmdlet
Stop-AzVM
para detener la máquina virtual. Se le pedirá confirmación.Importante
Antes de iniciar el apagado de una máquina virtual, confirme siempre que no hay recursos o datos importantes que se puedan perder.
Stop-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Después de una breve pausa, la salida confirma que la máquina se ha detenido correctamente.
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:10:23 PM EndTime : 9/13/2021 7:11:12 PM Error :
Una vez detenida la máquina virtual, obtenga una referencia al disco de sistema operativo o de datos asociado a la máquina virtual con el cmdlet
Get-AzDisk
.En el ejemplo siguiente se selecciona el disco del sistema operativo de la máquina virtual.
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.OsDisk.Name
En el ejemplo siguiente se selecciona el disco de datos de la máquina virtual.
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.DataDisks[0].Name
Ahora que tiene una referencia al disco, establezca el tamaño del disco en 250 GiB.
Importante
El nuevo tamaño debe ser mayor que el tamaño de disco existente. El máximo permitido es 4095 GiB para los discos del sistema operativo.
$disk.DiskSizeGB = 250
A continuación, actualice la imagen del disco con el cmdlet
Update-AzDisk
.Update-AzDisk ` -ResourceGroupName $azResourceGroup ` -Disk $disk -DiskName $disk.Name
La imagen del disco se actualiza y la salida confirma el nuevo tamaño del disco.
ResourceGroupName : myDemoResourceGroup ManagedBy : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoVM Sku : Microsoft.Azure.Management.Compute.Models.DiskSku TimeCreated : 9/135/2021 6:41:10 PM CreationData : Microsoft.Azure.Management.Compute.Models.CreationData DiskSizeGB : 250 DiskSizeBytes : 268435456000 UniqueId : {GUID} ProvisioningState : Succeeded DiskIOPSReadWrite : 500 DiskMBpsReadWrite : 60 DiskState : Reserved Encryption : Microsoft.Azure.Management.Compute.Models.Encryption Id : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/disks/myDemoDataDisk Name : myDemoDataDisk Type : Microsoft.Compute/disks Location : centralus
Por último, reinicie la máquina virtual con el cmdlet
Start-AzVM
.Start-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Después de una breve pausa, la salida confirma que la máquina se ha iniciado correctamente.
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:44:54 PM EndTime : 9/13/2021 7:45:15 PM Error :
Expansión del volumen del disco en el sistema operativo
Para poder aprovechar el nuevo tamaño de disco, debe expandir el volumen dentro del sistema operativo. Siga los pasos que se indican a continuación para expandir el volumen de disco y aprovechar las ventajas del nuevo tamaño de disco.
Inicie sesión en Azure Portal.
Busque la máquina virtual a la que ha asociado el disco de datos. Cree una conexión del protocolo de escritorio remoto (RDP) e inicie sesión. Si ya no tiene acceso a una cuenta administrativa, cree un objeto de credencial para un nombre de usuario y una contraseña especificados con el cmdlet Get-Credential.
Después de que se haya establecido una conexión RDP a la máquina virtual remota, seleccione el menú Inicio de Windows. Escriba PowerShell en el cuadro de búsqueda y seleccione Windows PowerShell para abrir una ventana de PowerShell.
Abra PowerShell y ejecute el siguiente script. Cambie el valor de la variable
-DriveLetter
según corresponda. Por ejemplo, para cambiar el tamaño de la partición en la unidad F: , use$driveLetter = "F"
.$driveLetter = "[Drive Letter]" $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) Resize-Partition ` -DriveLetter $driveLetter ` -Size $size.SizeMax
Minimice la ventana RDP y vuelva a Azure Cloud Shell. Use el cmdlet
Get-AzDisk
para comprobar que el tamaño del disco se ha cambiado correctamente.Get-AzDisk ` -ResourceGroupName $azResourceGroup | Out-Host -Paging
Actualización de un disco
Hay varias maneras de dar respuesta a los cambios en las cargas de trabajo de la organización. Por ejemplo, puede optar por actualizar un disco HDD estándar a un SSD prémium para controlar el aumento de la demanda.
Siga los pasos de esta sección para actualizar un disco administrado de estándar a prémium.
Seleccione la máquina virtual que contiene el disco que va a actualizar con el cmdlet
Get-AzVM
.$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Para poder actualizar un disco de una máquina virtual, primero debe detenerla. Use el cmdlet
Stop-AzVM
para detener la máquina virtual. Se le pedirá confirmación.Importante
Antes de iniciar el apagado de una máquina virtual, confirme siempre que no hay recursos o datos importantes que se puedan perder.
Stop-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Después de una breve pausa, la salida confirma que la máquina se ha detenido correctamente.
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:10:23 PM EndTime : 9/13/2021 7:11:12 PM Error :
Una vez detenida la máquina virtual, obtenga una referencia al disco de sistema operativo o de datos asociado a la máquina virtual con el cmdlet
Get-AzDisk
.En el ejemplo siguiente se selecciona el disco del sistema operativo de la máquina virtual.
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.OsDisk.Name
En el ejemplo siguiente se selecciona el disco de datos de la máquina virtual.
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.DataDisks[0].Name
Ahora que tiene una referencia al disco, establezca el tamaño de SKU del disco en Premium_LRS.
$disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')
A continuación, actualice la imagen del disco con el cmdlet
Update-AzDisk
.Update-AzDisk ` -ResourceGroupName $azResourceGroup ` -Disk $disk -DiskName $disk.Name
La imagen del disco se actualiza. Use el código de ejemplo siguiente para comprobar que se ha actualizado la SKU del disco.
$disk.Sku.Name
La salida confirma la nueva SKU del disco.
Premium_LRS
Por último, reinicie la máquina virtual con el cmdlet
Start-AzVM
.Start-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
Después de una breve pausa, la salida confirma que la máquina se ha iniciado correctamente.
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:44:54 PM EndTime : 9/13/2021 7:45:15 PM Error :
Desacoplar un disco de datos
Puede desasociar un disco de datos de una máquina virtual si quiere asociarlo a otra máquina virtual o si ya no es necesario. De forma predeterminada, los discos desasociados no se eliminan para evitar la pérdida involuntaria de datos. Un disco desasociado seguirá incurriendo en cargos por almacenamiento hasta que se elimine.
En primer lugar, seleccione la máquina virtual a la que está asociado el disco con el cmdlet
Get-AzVM
.$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
A continuación, desasocie el disco de la máquina virtual con el cmdlet
Remove-AzVMDataDisk
.Remove-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskName
Actualice el estado de la máquina virtual con el cmdlet
Update-AzVM
para eliminar el disco de datos.Update-AzVM ` -ResourceGroupName $azResourceGroup ` -VM $vm
Después de una breve pausa, la salida confirma que la máquina virtual se ha actualizado correctamente.
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
Eliminar un disco de datos
Al eliminar una máquina virtual, los discos de datos asociados a esta permanecen aprovisionados y siguen incurriendo en cargos hasta que se eliminan. Este comportamiento predeterminado ayuda a evitar la pérdida de datos causada por una eliminación involuntaria.
Puede usar el siguiente script de PowerShell de ejemplo para eliminar discos no asociados. La recuperación de discos se limita a myDemoResourceGroup porque el modificador -ResourceGroupName
se usa con el cmdlet Get-AzDisk
.
# Get all disks in resource group $azResourceGroup
$allDisks = Get-AzDisk -ResourceGroupName $azResourceGroup
# Determine the number of disks in the collection
if($allDisks.Count -ne 0) {
Write-Host "Found $($allDisks.Count) disks."
# Iterate through the collection
foreach ($disk in $allDisks) {
# Use the disk's "ManagedBy" property to determine if it is unattached
if($disk.ManagedBy -eq $null) {
# Confirm that the disk can be deleted
Write-Host "Deleting unattached disk $($disk.Name)."
$confirm = Read-Host "Continue? (Y/N)"
if ($confirm.ToUpper() -ne 'Y') { break }
else {
# Delete the disk
$disk | Remove-AzDisk -Force
Write-Host "Unattached disk $($disk.Name) deleted."
}
}
}
}
El disco de datos no asociado se elimina como se muestra en la salida.
Name : abcd1234-ab12-cd34-ef56-abcdef123456
StartTime : 9/13/2021 10:14:05 AM
EndTime : 9/13/2021 10:14:35 AM
Status : Succeeded
Error :
Limpieza de recursos
Cuando ya no los necesite, elimine el grupo de recursos, la máquina virtual y todos los recursos relacionados. Puede usar el siguiente script de PowerShell de ejemplo para eliminar el grupo de recursos creado anteriormente en este tutorial.
Precaución
Tenga cuidado al eliminar un grupo de recursos. Para evitar la pérdida de datos importantes, confirme siempre que no hay recursos o datos importantes en el grupo de recursos antes de eliminarlo.
Remove-AzResourceGroup -Name $azResourceGroup
Se le pedirá confirmación. Después de una breve pausa, la respuesta True
confirma que myDemoResourceGroup se ha eliminado correctamente.
Confirm
Are you sure you want to remove resource group 'myDemoResourceGroup'
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
True
Pasos siguientes
En este tutorial, ha aprendido a:
- Crear, asociar e inicializar un disco de datos
- Comprobar el estado de un disco
- Inicializar un disco
- Expandir y actualizar un disco
- Desasociar y eliminar un disco
Siga con el siguiente tutorial para aprender sobre la automatización de la configuración de la máquina virtual.