Este artículo explica cómo utilizar la interfaz de gestión de línea de comandos de VirtualBox, VBoxManage, para agregar un disco SATA a una máquina virtual.

Hasta el momento no es posible en VirtualBox agregar un disco a una máquina virtual en caliente (en ejecución). Al igual que con QEMU/KVM es necesario apagar la máquina virtual antes de poder agregar un nuevo disco.

Como mencioné en otras oportunidades, la interfaz de gestión de línea de comandos VBoxManage provee mayor funcionalidad que la aplicación GUI (como sucede en general con toda herramienta de línea de comandos). Es posible agregar un disco a una máquina virtual desde la herramienta GUI, pero veamos cómo hacerlo completamente desde línea de comandos (útil para aquellos casos en los que necesitamos gestionar un servidor de máquinas virtuales headless).



En este caso voy a trabajar sobre un host *BSD, aunque los comandos son exactamente idénticos para sistemas GNU/Linux o incluso Windows. Es posible obtener ayuda acerca de todos los subcomandos disponibles ejecutando:

VBoxManage --help

El primer paso consiste en crear un disco, para ello recurrir al subcomando createmedium:

emi@hal9000:~ % VBoxManage createmedium
Usage:

VBoxManage createmedium     [disk|dvd|floppy] --filename <filename>
                            [--size <megabytes>|--sizebyte <bytes>]
                            [--diffparent <uuid>|<filename>
                            [--format VDI|VMDK|VHD] (default: VDI)
                            [--variant Standard,Fixed,Split2G,Stream,ESX]

Para crear un disco, especificar el tipo "disk", la ruta al nombre de archivo, el tamaño (en megabytes) y el formato. El formato puede ser DVI (VirtualBox), VMDK (compatible con VMware) o VHD (compatible con Microsoft Hyper-V).

emi@hal9000:~ % VBoxManage createmedium disk --filename /data/VM/Devuan_Jessie_amd64_2.vdi --size 1024 --format VDI 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: f8f26e7a-a649-4ece-a7f8-ecd193cf0f60

Luego es necesario conocer el nombre de la máquina virtual a la que deseamos agregar el disco. Es posible listar las máquinas virtuales disponibles utilizando el subcomando list vms:

emi@hal9000:~ % VBoxManage list vms
"alpine" {6c5c2365-e9e6-4ae9-b225-c44f93ca1ce9}
"Devuan_LXDE" {72b2535f-f6ae-49fa-a839-1bec32a7297b}
"Devuan_Jessie_amd64" {ba6726eb-4b7a-40b9-81a8-134d303d0f12}
"w7" {7be4fce6-7fe3-4405-a0cc-7565afa19bd5}

En este caso deseo agregar un disco a la máquina virtual "Devuan_Jessie_amd64".

Para conectar el nuevo disco a la máquina en cuestión se debe recurrir a storageattach:

emi@hal9000:~ % VBoxManage storageattach
Usage:

VBoxManage storageattach    <uuid|vmname>
                            --storagectl <name>
                            [--port <number>]
                            [--device <number>]
                            [--type dvddrive|hdd|fdd]
                            [--medium none|emptydrive|additions|
                                      <uuid|filename>|host:<drive>|iscsi]
                            [--mtype normal|writethrough|immutable|shareable|
                                     readonly|multiattach]
                            [--comment <text>]
                            [--setuuid <uuid>]
                            [--setparentuuid <uuid>]
                            [--passthrough on|off]
                            [--tempeject on|off]
                            [--nonrotational on|off]
                            [--discard on|off]
                            [--hotpluggable on|off]
                            [--bandwidthgroup <name>]
                            [--forceunmount]
                            [--server <name>|<ip>]
                            [--target <target>]
                            [--tport <port>]
                            [--lun <lun>]
                            [--encodedlun <lun>]
                            [--username <username>]
                            [--password <password>]
                            [--initiator <initiator>]
                            [--intnet]

Se observa que el disco se debe conectar a un controlador (al igual que en una máquina física). Veamos qué controladores tiene esta máquina virtual:

emi@hal9000:~ % VBoxManage showvminfo "Devuan_Jessie_amd64" | grep -i storage
Storage Controller Name (0):            IDE
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
Storage Controller Name (1):            SATA
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      1
Storage Controller Bootable (1):        on

Esta máquina posee dos controladores: uno IDE (0), que cuenta con 2 puertos; y otro SATA (1) que cuenta con 1 puerto.

Al mismo tiempo se observa que el único puerto del controlador SATA está ocupado:

emi@hal9000:~ % VBoxManage showvminfo "Devuan_Jessie_amd64" | grep SATA
Storage Controller Name (1):            SATA
SATA (0, 0): /data/VM/Devuan_Jessie_amd64.vdi (UUID: 4164756e-1f73-4d10-9c54-91c2597c450d)

Entonces, para poder conectar un nuevo disco, es necesario agregar un nuevo puerto al controlador SATA. Cabe destacar que la cantidad de dispositivos por puerto es siempre 1, por lo que le número de dispositivo es un parámetro opcional que siempre debe valer 0.

Cambiar la cantidad de puertos del controlador SATA de 1 a 2 ejecutando:

emi@hal9000:~ % VBoxManage storagectl "Devuan_Jessie_amd64" --name SATA --portcount 2

Los puertos se numeran a partir del 0. Por ente el segundo puerto será el número 1.

Para agregar el nuevo disco al puerto 1 del controlador SATA, simplemente ejecutar:

emi@hal9000:~ % VBoxManage storageattach "Devuan_Jessie_amd64" --storagectl SATA --port 1 --device 0 --type hdd --medium /data/VM/Devuan_Jessie_amd64_2.vdi --hotpluggable on

El disco se ha agregado con éxito:

emi@hal9000:~ % VBoxManage showvminfo "Devuan_Jessie_amd64" | grep SATA
Storage Controller Name (1):            SATA
SATA (0, 0): /data/VM/Devuan_Jessie_amd64.vdi (UUID: 4164756e-1f73-4d10-9c54-91c2597c450d)
SATA (1, 0): /data/VM/Devuan_Jessie_amd64_2.vdi (UUID: f8f26e7a-a649-4ece-a7f8-ecd193cf0f60)

Notar que los valores entre paréntesis luego del nombre de controlador (SATA) identifican el número de puerto y número de dispositivo respectivamente.

En este punto es posible iniciar la máquina virtual y continuar con el particionado del nuevo disco y formato de los sistemas de archivos necesarios.


Tal vez pueda interesarte


Compartí este artículo