Cómo usar el comando DD para copiar archivos VHD al disco duro físico



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

Los archivos de disco duro virtual (VHD) son archivos gigantes que emulan el uso de medios físicos en VirtualBox y algunos otros emuladores virtuales x86 / x86_64. Esto le permite ejecutar Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS / 2 o incluso otras versiones de Linux dentro de su distribución de Linux. Estos archivos no le permiten escribir su contenido directamente en un disco físico mediante el comando dd que le permite hacer lo mismo con un ISO, pero hay una manera de hacerlo. Si bien algunas guías requieren que convierta el archivo VHD a un ISO, no tendrá que hacer esto si está ejecutando VirtualBox en cualquier versión moderna de Linux. Los usuarios de QEMU también tienen una salida, aunque implica jugar más.



Deberá asegurarse de que ninguna de las unidades o particiones con las que va a trabajar sea desde la que arrancó. Solo usamos una pieza de memoria NAND particionada para este ejemplo, pero es posible que desee usar un DVD en vivo o un arranque USB si de lo contrario no podría hacerlo. Independientemente de la forma en que haya iniciado la máquina en cuestión, inicie su programa de terminal manteniendo presionadas las teclas Ctrl, Alt y T, buscándolo en Ubuntu Dash o abriéndolo desde los submenús de Herramientas del sistema en Xfce4 o LXDE.



Método 1: usar VBoxManage desde el símbolo del sistema

De lejos, la forma más sencilla de hacerlo es mediante una instalación tradicional de VirtualBox. Primero, asegúrese de haber realizado una copia de seguridad de todos los datos que le preocupa perder porque va a destruir cualquier dato en el hardware físico del destino, mientras que también podría terminar haciendo algo en el archivo VHD o VHDX en el proceso. Esto también se aplica al otro método, así como a cualquier cosa que involucre comandos que sean tan destructivos.



Una vez que esté seguro de que todo está seguro y que la unidad de destino está desmontada pero aún conectada a la máquina, digamos un disco duro externo que aún haya conectado pero que no esté montado o que incluso esté sin procesar, ya que perderá todo lo que contiene. en el proceso, ejecutar VBoxManage clonehd freeBSD.VHDX –format RAW freeBSD.RAW mientras reemplaza freeBSD.VHDX con su disco duro virtual. Teníamos un archivo de disco duro virtual con una instalación algo moderada de FreeBSD para propósitos de prueba, de ahí el nombre.

Tan pronto como termine este comando, ejecute sudo dd if = freeBSD.RAW of = / dev / sde , reemplazando el nombre del archivo RAW con el RAW que acaba de crear y el dispositivo de bloqueo sde con el dispositivo que realmente le interesa. Si no está seguro, siempre puede ejecutar sudo fdisk -l para asegurarse de que conoce el nombre correcto de la partición. Al igual que con el uso de dd para cualquier otra cosa, no desea escribir en el dispositivo incorrecto.

Es posible que obtenga un error acerca de que no queda espacio en el dispositivo, como si intentara escribir un archivo grande en un dispositivo más pequeño, pero esto no causó problemas en las pruebas. Parece que este proceso agrega ceros adicionales. De lo contrario, ha podido copiar el disco virtual a un disco físico en solo dos pasos con un mínimo de tonterías.



Método 2: con el comando del servidor de dispositivos de bloque de red de disco QEMU

Los usuarios que solo tienen acceso al sistema de virtualización Quick Emulator (QEMU) tendrán que lidiar con un procedimiento un poco más complicado que aquellos que tienen acceso al comando VBoxManage. En el símbolo del sistema, ejecute sudo modprobe nbd seguido por qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhd , con el nombre de archivo cambiado para reflejar el nombre de archivo real con el que está trabajando. Es posible que necesite sudo para ejecutar qemu-nbd, dependiendo de cómo haya configurado su instalación. Si está copiando los comandos desde aquí y pegándolos, asegúrese de cambiarlos antes de ejecutarlos. En la mayoría de los casos, solo tendrá que preocuparse del dispositivo ndb0 aquí, por lo que no debería tener ningún problema allí.

Una vez hecho esto, puede escribir la partición con qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd seguido por sudo ddrescure -v -f / dev / nbd2 / dev / sde2 , pero recuerde reemplazar los archivos del dispositivo por los que realmente le interese usar. Si los está copiando y pegando en su propio terminal, asegúrese de reemplazar esos nombres de archivo y números de partición con aquellos en los que está intentando escribir. Nuestro dispositivo / dev / sde era simplemente una tarjeta SDHC usada que estábamos usando para probar esto de manera segura sin dañar nada. Puede que necesite sudo para ejecutar qemu-nbd, pero no debería necesitarlo. Del mismo modo, es posible que deba eliminar los números de partición según su configuración. El proceso QEMU no es tan intuitivo por estas razones.

Los usuarios de Hyper-V pueden tener una imagen VHDX en lugar de un archivo VHD. Si este es el caso, entonces deberá ejecutar qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd mientras reemplaza el nombre del archivo una vez más. Si bien este formato fue una adición a Windows Server 2012 para agregar una mayor capacidad de almacenamiento a las máquinas virtualizadas, cada vez más usuarios de Linux están recurriendo a él para escapar del límite de 2 TB que tiene VHD. De lo contrario, estas instrucciones deberían funcionar independientemente del tamaño real del archivo en cuestión. La herramienta GNU ddrescue debería funcionar como dd, aunque se asegura de copiar primero los mejores bloques.

Una vez que se ejecuta, los usuarios que trabajen con imágenes VHDX deberán ejecutar sudo ddrescue -v -f / dev / nbd2 / dev / sde2 , reemplazando nuevamente los archivos arriba. De lo contrario, todos los que tengan todo tipo de imágenes de VirtualBox pueden usar qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd para montar la partición en cuestión como si fuera un disco antiguo. Necesitarás usar sudo mount / dev / nbd2 / cdrom o sudo mount / dev / nbd2 / mnt para montarlo. Asegúrese de no tener nada más montado en los directorios / cdrom o / mnt antes de intentarlo.

Método 3: Desmontar y luego desconectar el archivo

Para desmontar la imagen, simplemente necesita usar sudo umount / mnt o sudo umount / cdrom para despegarlo. Después de todo, el núcleo de Linux estaba ocupado tratándolo como si fuera cualquier otro volumen.

Sin embargo, aún deberá desconectarlo del sistema QEMU, así que escriba qemu-ndb -d / dev / nbd2 para desconectarlo.

4 minutos de lectura