Saltar al contenido

¿Cómo crear una imagen de disco VHD desde un sistema Linux en vivo?

Siéntete en la libertad de divulgar nuestra página y códigos en tus redes sociales, apóyanos para hacer crecer nuestra comunidad.

Solución:

Para referencia futura, así es como procedí finalmente, con algunos comentarios sobre los diversos problemas o dificultades encontradas:

1. Inicie la máquina con un sistema Linux en vivo

El primer paso fue arrancar la máquina que contenía el disco a la imagen, usando un sistema Linux en vivo.

NOTA: mi primera idea fue usar un disco USB de Ubuntu Live, pero la máquina no admitía el arranque desde USB, así que me resultó más fácil usar un disco viejo CD en vivo de Knoppix.

2. Imagen del disco usando dd y canalizar los datos a través ssh

Luego, copié todo el contenido del disco a una imagen de archivo en mi servidor local usando dd y canalizar los datos a través de ssh:

$ dd if=/dev/hdX bs=4k conv=sin error, sincronizar | ssh -c pez globo [email protected] ‘dd de=miarchivo.dd’

Algunos comentarios aquí: este método leerá todo el contenido del disco, por lo que puede llevar mucho tiempo (me tomó 5 horas para un disco de 80 Gb). El cuello de botella no es la red, sino la velocidad de lectura del disco. Antes de iniciar la copia, aconsejo verificar los parámetros del BIOS/disco/sistema para asegurarse de que el disco y la placa base funcionen a la velocidad más alta posible (esto se puede verificar usando el comando hdparm -i y ejecutando una prueba con hdparm -Tt /dev/hdX).

NOTA: dd no muestra el progreso de la operación, pero podemos obligarlo a hacerlo enviando el USR1 señal a la dd procesar PID desde otra terminal:

$ matar -USR1 PIDofdd

Nota: Las versiones más recientes de dd apoyen el status=LEVEL opción (man dd)

   status=LEVEL
          The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
          the final transfer statistics, 'progress' shows periodic transfer statistics

3. Recuperar el espacio no utilizado

En este punto, la máquina de origen ya no es necesaria y trabajaremos exclusivamente en el servidor de destino (también con Linux). VirtualBox se utilizará para convertir la imagen de disco sin procesar al formato VHD, pero antes de hacerlo, podemos poner a cero los bloques no utilizados, de modo que VirtualBox no les asigne espacio en el archivo final.

Para hacerlo, monté las imágenes como un dispositivo de bucle invertido:

$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file

NOTA: El desplazamiento que indica el comienzo de la partición dentro de la imagen del disco se puede obtener utilizando parted en el archivo de imagen:

$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type      File system  Flags
 1      32256B        21936821759B  21936789504B  primary   ntfs         boot
 2      21936821760B  80023749119B  58086927360B  extended               lba
 5      26608813056B  80023749119B  53414936064B  logical   ntfs

NOTA 2: El controlador NTFS predeterminado del kernel de Linux proporciona acceso de solo lectura, por lo que es necesario instalar y usar el espacio de usuario ntfs-3g controlador o escribir en el disco generará un error.

4. Cree la imagen VHD usando VBoxManage

En este punto, podemos usar las utilidades de VirtualBox para convertir la imagen sin procesar en un archivo VHD:

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD

Estaba tratando de hacer exactamente lo mismo que el OP (mientras rescataba una instalación de Windows) y terminé creando una nueva herramienta para él, ntfsclone2vhd.

Entonces simplemente harías algo como esto:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd

Un enfoque es usar un par de tecnologías útiles: VirtualBox y el ntfsprogs paquete.

Las versiones recientes de VirtualBox le permiten crear archivos de disco duro VHD, mientras que ntfsprogs proporciona el ntfsclone utilidad. Como su nombre indica, ntfsclone clona sistemas de archivos NTFS, y creo que lo hace a nivel del sistema de archivos, omitiendo bloques de disco no utilizados.

Entonces, para comenzar, cree una nueva VM en VirtualBox y aprovisione una nueva unidad de archivo VHD vacía para ella. La unidad VHD solo necesita ser tan grande como el tamaño de los datos en uso en la unidad física que desea clonar (bueno, en realidad, hágala un poco más grande, para permitir un poco de margen de maniobra).

A continuación, busque un CD en vivo de Linux que contenga el ntfsprogs paquete, así como openssh-server. Me gusta System Rescue CD para esto, pero casi cualquier Live CD basado en Debian o Ubuntu debería funcionar también.

Inicie la máquina virtual VirtualBox con el Live CD de Linux y comience sshd dentro de la VM para que pueda ejecutar comandos en ella de forma remota. Particione la unidad VHD vacía de manera adecuada, utilizando cualquier herramienta de partición que prefiera (me gusta la vieja y simple fdiskpero soy algo de la vieja escuela).

Con otra copia del Live CD de Linux, inicie la máquina que contiene el disco físico que desea clonar. Supongo que la máquina virtual VirtualBox y esta máquina son accesibles entre sí a través de la red. En esta máquina, ejecute el siguiente comando (todo en una línea):

ntfsclone --save-image -o - /dev/sdXX |
    ssh [email protected] 'ntfsclone --restore-image --overwrite /dev/sdYY -'

donde:

  • /dev/sdXX es el nombre del dispositivo (en la máquina local) de la unidad física que desea clonar, y
  • /dev/sdYY es el nombre del dispositivo (en la VM) de la unidad de destino VHD.

Explicación: la primera ntfsclone El comando en la canalización extrae una imagen del sistema de archivos NTFS de origen y la envía a través del túnel ssh, mientras que el segundo ntfsclone El comando recibe la imagen y la restaura en la unidad VHD.

Una vez que se completa la operación, el archivo VHD debe contener un clon exacto archivo por archivo del disco físico original (salvo que se produzcan errores de hardware, como sectores defectuosos, que podrían provocar la interrupción prematura del proceso).

Una última cosa que puede querer hacer es ejecutar un Windows chkdsk en la unidad VHD, solo para garantizar que la clonación no haya presentado ningún problema (no debería haberlo hecho, pero bueno, estoy un poco paranoico con estas cosas).

Puntuaciones y comentarios

Si posees alguna incertidumbre o disposición de perfeccionar nuestro sección eres capaz de escribir una crítica y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *