Guías

Acceder y modificar imágenes de disco de máquinas virtuales con herramientas libguestfs

Acceder y modificar imágenes de disco de máquinas virtuales con herramientas libguestfs

En un artículo anterior, vimos cómo crear máquinas virtuales KVM desde la línea de comando; En este tutorial, en su lugar, aprendemos cómo acceder y modificar las imágenes de disco de máquinas virtuales, utilizando algunas utilidades que forman parte del paquete libguestfs en las distribuciones de Linux más utilizadas. Esas herramientas nos permiten realizar una variedad de tareas.

Nos centraremos en algunos de ellos, como virtilystems y montaje de invitados, que se puede usar para enumerar los sistemas de archivos existentes en las imágenes de disco de invitados y montarlos en el sistema de host, respectivamente.

En este tutorial aprenderás:

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software Guestfs Utities
Otro Privilegios de raíz para realizar tareas administrativas
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación

Podemos instalar las herramientas de las que hablaremos en este tutorial directamente desde los repositorios oficiales de la distribución de Linux más utilizada utilizando sus gerentes de paquetes nativos. En Fedora, por ejemplo, usamosDNF. En esta distribución, los servicios públicos se incluyen en el Libguest paquete:

$ sudo dnf install libguestfs



Sobre la familia de distribuciones de Debian, y Debian, en su lugar, para realizar la instalación, podemos usar el apto envoltura. El nombre del paquete es Libguestfs-Tools:
$ sudo apt install libguestfs-tools

En Archlinux, como en Fedora, se llama al paquete libguestfs. Podemos realizar la instalación utilizando Pacman:

$ sudo pacman -sy libguestfs

El paquete proporciona muchas utilidades que nos permiten interactuar con imágenes de disco de máquinas virtuales y realizar tareas muy útiles. Una nota antes de comenzar a ver algunos ejemplos: si usamos Libvirt e intentamos invocar una de las utilidades antes mencionadas, recibiremos el siguiente mensaje de error:

libguestfs: Error: no se pudo crear el dispositivo a través de Libvirt.

Una solución a este problema es ejecutar QEMU directamente, estableciendo y exportando el Libguestfs_backend variable a "dirigir" en el shell que estamos utilizando para invocar los comandos o hacerla parte de nuestro entorno:

Exportar libguestfs_backend = directo

Listado de particiones de invitados y sistemas de archivos

El virtilystems Utilidad Permitir que enumeremos el sistema de archivos, particiones y dispositivos de bloque existentes en imágenes de discos de máquina virtual. Veamos algún ejemplo de su uso. La herramienta, como prácticamente todos los que forman parte de la suite, se puede usar básicamente de dos maneras: la primera es pasar el dominio de la máquina virtual con la -d opción. Cuando se adopta esta estrategia, se analizan todos los discos utilizados por el invitado:

virt -FileSystems [Opciones] -d 

La otra estrategia que podemos usar es proporcionar a la utilidad la ruta de una imagen de disco directamente, como el argumento del -a opción:

virt -filstems [opciones] -a/ruta/a/disco

Probemos lo que el comando devuelve en un sistema virtualizado Fedora 35 que utiliza el fedora35.QCOW2 imagen de disco. Para enumerar todos los sistemas de archivos existentes en el disco, ejecutamos:

$ virt -filstems -a fedora35.QCOW2 /dev /SDA1 /dev /SDA2

El comando descubrió dos sistemas de archivos. Para obtener información adicional sobre ellos, podemos agregar el -l opción para ello (abreviatura de --largo)

$ virt -filstems -la fedora35.QCOW2 Tipo de nombre VFS Tamaño de etiqueta Parent /Dev /SDA1 Files System Ext4 - 1020702720 - /dev /SDA2 Files System Ext4 - 20038230016 - 

Como puede ver, se incluyeron detalles como el tipo de sistema de archivos y su tamaño. Para hacer el tamaño de los sistemas de archivos legibles por humanos (cuarta columna), podemos agregar el -H Opción para el comando. La salida se convierte en la siguiente:

$ virt -filstems -lha fedora35.QCOW2 Tipo de nombre VFS Tamaño de etiqueta Parent /Dev /SDA1 Filesystem Ext4 - 973m - /dev /SDA2 Filesystem Ext4 - 19G - 

Por defecto Solo sistemas de archivos que se pueden montar se informan en la lista; Para que aparezcan los sistemas de archivos no supervisables (intercambio, por ejemplo) en la lista, podemos usar el --extra opción.

Especificar tipos de dispositivos

Como vimos anteriormente, la acción predeterminada de la utilidad es mostrar los sistemas de archivos existentes en una imagen de disco. Sin embargo, podemos especificar el tipo de "entidad" que debe enumerarse explícitamente. Por ejemplo, para obtener una lista de la particiones existente en una imagen de disco, podemos usar el --particiones opción:

$ Virt -Filesystems --Partitions -la Fedora35.QCOW2 Tipo de nombre MBR Tamaño MBR Padre /Dev /SDA1 Partition 83 1073741824 /dev /sda /dev /sda2 Partition 83 20400046080 /dev /SDA 



De la misma manera, podemos visualizar volúmenes lógicos (--volúmenes lógicos), grupos de volumen (--grupos de volumen) o volúmenes físicos (--volúmenes físicos). Para hacer que la utilidad incluya todos, simplemente podemos usar el --todo opción:
$ virt -filstems -todo -la fedora35.QCOW2

Cuando lo hagamos, algunas entradas aparecerán en la lista de salida más de una vez: /dev/sda1, Por ejemplo, es una partición, pero contiene un sistema de archivos EXT4:

Tipo de nombre Etiqueta VFS Tamaño MBR Parent /Dev /SDA1 FileSystem Ext4 - - 1020702720 - /dev /SDA2 Filesystem EXT4 - - 20038230016 - /dev /sda1 partition - - 83 1073741824 /dev /sda /dev /SDA2 Partition - - 83 20400046080 / / / / Dev/SDA/dev/SDA Device - - - 21474836480 - 

Formatear la salida como CSV

Como vimos en los ejemplos anteriores, la salida producida porvirtilystems está formateado como una lista por defecto; mediante el uso del --CSV Opción, sin embargo, podemos hacer para que se use el formato CSV (valores separados por comas):

$ Virt -Filesystems -ALL - -CSV -LA Fedora35.Nombre QCow2, Tipo, VFS, Label, MBR, Size, Parent /Dev /SDA1, FileSystem, Ext4 ,,, 1020702720, /dev /SDA2, System, Ext4 ,,, 20038230016, /dev /SDA1, Partition ,,, 83 , 1073741824,/dev/sda/dev/sda2, partición ,,, 83,20400046080,/dev/sda/dev/sda, dispositivo ,,,, 21474836480,

Montaje y desmontaje de sistemas de archivos de invitados en el host

Mediante el uso del montaje de invitados y Invitedunmount Las utilidades es posible montar y desmontar los sistemas de archivos de invitados en el host en el host. Si el sistema de invitados se está ejecutando, los sistemas de archivos siempre deben montarse en modo de solo lectura, de lo contrario
puede estar dañado: entonces, si necesitamos realizar operaciones de escritura, debemos cerrar la máquina virtual, primero.

Los sistemas de archivos de invitados se pueden montar en el host como un usuario no raíz utilizando FUSIBLE (Sistema de archivos en el espacio de usuario). En tal caso, el usuario que debe ser el propietario del directorio para ser utilizado como punto de montaje.

Veamos un ejemplo práctico usando el fedora35.QCOW2 Imagen de disco que vimos antes. Desde la salida de virt-filsystems sabemos que existe un sistema de archivos ext4 en /dev/sda1; Aquí creamos un directorio llamado punto de montaje
y monte el sistema de archivos de invitados en modo de solo lectura:

$ Mkdir MountPoint $ Guestmount -A Fedora35.QCOW2 -M /DEV /SDA1 --RO MONTOPTOUNT

Examinemos el comando anterior. Como lo hicimos en los ejemplos anteriores, proporcionamos la ruta de la imagen del disco a través del -a opción. Con el -metroOpción, en cambio, especificamos el sistema de archivos de invitado que debe montarse y con --RO que debe montarse en modo de solo lectura. Finalmente, especificamos dónde, En el sistema de archivos de host, debe montarse.

$ LS -L Total de punto total 110224 -RW-R-R--. 1 raíz raíz 240738 23 de febrero 18:25 config-5.dieciséis.11-200.FC35.x86_64 DRWXR-XR-X. 3 raíz raíz 17 feb 27 15:51 EFI DRWX------. 5 raíz raíz 97 27 de febrero 15:56 Grub2 -RW-------. 1 raíz de raíz 62396530 27 de febrero 15:55 initramfs-0-rescue-c4f17c4c03ad474cb43ee9e586b29d0c.img -rw-------. 1 raíz raíz 21517654 27 de febrero 15:57 initramfs-5.dieciséis.11-200.FC35.x86_64.IMG DRWXR-XR-X. 3 raíz raíz 21 de febrero 27 15:52 cargador lrwxrwxrwx. 1 raíz raíz 47 27 de febrero 15:52 Symvers-5.dieciséis.11-200.FC35.x86_64.GZ ->/lib/módulos/5.dieciséis.11-200.FC35.x86_64/Symvers.GZ -RW-------. 1 raíz raíz 5958331 23 de febrero 18:25 Sistema.mapa-5.dieciséis.11-200.FC35.x86_64 -rwxr-xr-x. 1 raíz raíz 11371408 27 de febrero 15:54 vmlinuz-0-rescue-c4f17c4c03ad474cb43ee9e586b29d0c -rwxr-xr-x. 1 raíz de raíz 11371408 23 de febrero 18:25 vmlinuz-5.dieciséis.11-200.FC35.x86_64 

¿Qué pasa si queremos montar el sistema de archivos de invitado de manera recursiva?? Por ejemplo, supongamos que dentro del invitado /dev/sda1representa la partición de arranque, montada en /bota; La partición raíz, en cambio, es /dev/sda2, Por lo tanto, debe montarse ante él, si queremos reproducir este esquema de montaje en el host. Podemos hacerlo fácilmente, con el siguiente comando:

$ Guestmount -A Fedora35.QCOW2 -M/DEV/SDA2 -M/DEV/SDA1:/BOOT --RO MONTAPTOUNT

Arriba, usamos el -metro Opción dos veces, una para cada sistema de archivos que queremos montar. Con el /dev/sda1:/boot notación, declaramos que el /dev/sda1 El sistema de archivos debe montarse en /bota, donde "/boot" está el Mountpoint en el invitado.

Desmontaje de los sistemas de archivos de invitados

Para desmontar los sistemas de archivos de invitados podemos usarInvitedunmount. Su uso es muy simple: simplemente invocamos la utilidad y pasamos el punto de montaje como argumento. En este caso correríamos:

$ Invittunmount MountPoint

Edición de archivos dentro de un sistema de invitados

El virtual Utilidad Permítanos modificar archivos que existen en un disco de máquina virtual directamente desde el sistema de host. Como ya dijimos, modificar archivos cuando una máquina virtual se está ejecutando puede ser peligroso, por lo tanto, el sistema de invitados debe detenerse antes de realizar tales operaciones.



Editar archivos con virtDedit es bastante simple. Como en los ejemplos anteriores, proporcionamos la ruta de la imagen del disco o el dominio del sistema de invitados y la ruta del archivo en sí. Solo como ejemplo, para editar el /etc/fstab Archivo En el invitado identificado por el dominio "Fedora", ejecutaríamos:
$ virt -edit -d fedora /etc /fstab

El archivo se copia en el sistema de archivos de host /TMP directorio y abierto con el editor predeterminado. Se pueden especificar varios archivos con un comando, uno tras otro. En tal caso, se abrirán secuencialmente (el segundo se abrirá después de que el primero esté cerrado, etc.):

$ virt -edit -d fedora /etc /fstab /etc /crypttab

Copiar archivos dentro y fuera de un sistema de invitados

Para copiar archivos hacia y desde una imagen de disco de máquina virtual, podemos usar el virt-in-in y virtud utilidades, respectivamente. Una vez más podemos hacer referencia al dominio con el -D Opción, luego el archivo o archivos que se copiarán, y finalmente el directorio de destino.

Nada mejor que un ejemplo para demostrar cómo funcionan los comandos. Supongamos que queremos copiar el /etc/fstab Archivo del sistema invitado asociado con el dominio "Fedora", a nuestro directorio de trabajo actual en el sistema de archivos de host. Así es como invocaríamos Virt-Copy-Out:

$ virt-copy-out -d fedora /etc /fstab .

Para copiar uno o más archivos de nuestro host a un sistema de archivos de máquina virtual invitada, en su lugar, usamos Virt-Copy-In. Esto es lo que haríamos para copiar el archivo "fstab" en nuestro directorio actual, de nuevo a la /etc/ Directorio en el sistema de archivos de invitados:

$ Virt-Copy-In -D Fedora Fstab /etc /

Pensamientos de cierre

En este tutorial aprendimos a instalar las herramientas libguestfs en algunas de las distribuciones de Linux más utilizadas y cómo usar algunas de ellas. Vimos cómo enumerar los sistemas de archivos y las particiones existentes en una imagen de disco, cómo montar y desmontar los sistemas de archivos de invitados en un sistema de host, cómo editar archivos de invitados directamente desde el host y finalmente cómo copiar archivos de un sistema de archivos de invitado.

El NTOP 10TOP 10 ingresando una interfaz de comando Redboot Boot Loader
Si posee un almacenamiento NAS THECUS 2100 y debe recuperarse de algún accidente de software, tiene dos opciones. Uno es usar un conector serie USB o....
VFAT Uppercase No se puede crear el nombre del directorio
En este artículo, se ocupa de un tema del nombre del directorio de la creación en el sistema de archivos VFAT en el sistema Linux....
Página de directorio
Cabeza de nombre salga La primera parte del cabezal de sinopsis de archivos [opción] ... [archivo] ... Descripción Imprima las primeras 10 líneas de c...