Buenas tardes querida!
Le diré uno rápido que podría conducir a la pérdida completa de datos en la máquina virtual, pero la salida aún se encontró con: parted
Datos de origen:SO: Debiab 9 64bit
FS: ext4 sin LVM
Propósito: expandir el FS en una máquina virtual de 14 GB a 60 GB
En principio, para el administrador esta tarea es trivial, pero a veces las estrellas pueden converger para que no todo salga como nos gustaría. Debajo del corte, intentaré restaurar el curso de los eventos, lo que llevó al hecho de que el primer administrador casi no recibió VM.
Día 1:El administrador recibió una tarea completamente simple: debe expandir el tamaño del FS en la VM. Anteriormente, ya se había trabajado para expandir la imagen de disco para esta VM, por lo que el asunto seguía siendo pequeño: expandir el tamaño del FS en la VM.
Estructura FS en VM:/ boot - 56Mb
/ - todo el espacio restante - ext4
Dado que la máquina virtual se crea a partir de una plantilla, no hay LVM, lo que, por supuesto, simplificaría todo el procedimiento.
Y así, el administrador el jueves por la noche comienza a realizar la tarea. Su primer paso fue iniciar la VM utilizando una imagen iso: SystemRescue. Después de cargar con éxito la máquina virtual con la ayuda de la imagen iso, el administrador comienza a trabajar y con la ayuda de fdisk elimina la
sección / (/ dev / vda2) , que es correcta ya que debe ampliarse. Después de eliminar la partición (/ dev / vda2), el administrador crea una nueva partición - / dev / vda2 y ocurre el primer error: el administrador crea primero una partición que se extiende y solo luego crea el primario y después de comparar el nuevo marcado, sale de fdisk e intenta montar la partición:

Como el diseño del disco ha cambiado y el comienzo y el final de la partición / dev / vda5 han cambiado, ha aparecido un error esperado que indica que no se encontró un superbloque o un error. El error es bastante grave, y si aborda la solución de manera incorrecta, puede perder archivos o hacer que los eliminen. Por supuesto, puede retroceder, pero el problema también radica en el hecho de que el administrador no tomó una captura de pantalla del diseño del disco anterior antes de su trabajo.
Como la partición no se puede montar ... el administrador intenta rectificar la situación eliminando las particiones que creó y creando un nuevo primario, pero como no significa el final del lote con datos, todos sus intentos conducen al mismo resultado:
Superbloque inválido .
Después de varios intentos de restaurar la partición por su cuenta, el primer administrador solicita ayuda al segundo administrador.
Primero, el segundo administrador deja la VM y copia la imagen de disco actual llamada vm_bad_disk. A continuación, la VM se eleva desde la misma versión del sistema operativo: Debian 9 de 64 bits y se conecta con el segundo disco: vm_bad_disk.
Habiendo entrado en una nueva VM a través de ssh, miramos la lista de discos en VM:
root@recovery:~# fdisk -l
Disk /dev/vda: 4.9 GiB, 5242880000 bytes, 10240000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09dea38e
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 499711 497664 243M 83 Linux
/dev/vda2 501758 10237951 9736194 4.7G 5 Extended
/dev/vda5 501760 10237951 9736192 4.7G 83 Linux
Disk /dev/vdb: 58.6 GiB, 62914560000 bytes, 122880000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe8c76303
Device Boot Start End Sectors Size Id Type
/dev/vdb1 * 2048 194559 192512 94M 83 Linux
/dev/vdb2 196606 30717951 30521346 14.6G 5 Extended
/dev/vdb5 198656 30717951 30519296 14.6G 83 Linux
Aquí está / dev / vdb - este es nuestro vm_bad_disk. Primero, el segundo administrador elimina / dev / vdb2 y / dev / vdb5 e intenta crear / dev / vdb2 con el comienzo de 194560 y un final aproximado, pero también obtiene:
Superbloque inválido .
Para trabajar con la partición / dev / vdb, se instala una utilidad separada para trabajar más convenientemente con la partición.
Repetimos la acción eliminando / dev / vdb2 que ya está separado y haciendo ayuda.
La atención del administrador se dirige al comando de rescate, que le permite establecer el inicio y el final de la partición para encontrar el FS en él. No hay nada complicado en la sintaxis del comando:
Solo escribe parted:
> rescate
El sistema preguntará:
Inicio - indicaba 194560
Ahora el administrador necesita calcular End (final de la partición). Dado que el administrador inicialmente sabía que el tamaño de todo el disco era de 14 GB y que 1 sector es de 512 bytes ... luego se realizan los siguientes cálculos:
14 GB son aproximadamente 15032385536 bytes, calculamos el número de sectores:
15032385536/512 = 29360128
Este valor debe especificarse en parted:
Fin 29360128
Presione Intro audazmente y espere el resultado ... En este caso, no tuve que esperar mucho y me separé de que se encontró el FS y si valía la pena hacer los cambios, respondemos SÍ
Parted hará los cambios necesarios y el administrador saldrá de parted.
El administrador regresa a la línea de comando del sistema y hace:
mount / dev / vdb2 / mntLa partición se monta sin problemas y muestra que su tamaño es de aproximadamente 14 GB, lo cual es correcto, ya que el FS aún no se ha expandido. El administrador verifica rápidamente los archivos y todo dice que no hay artefactos y archivos rotos a primera vista.
Como la partición se ve en vivo, el administrador hace:
umount / dev / vdb2 y comienza:
e2fsck / dev / vdb2 después de completar la verificación: ejecuta el comando para expandir la sección:
resize2fs / dev / vdb2
La operación pasa sin ningún problema y el administrador monta la partición nuevamente para asegurarse de que todo esté bien:
mount / dev / vdb2 / mntLa partición se monta sin errores y, utilizando el comando
df -p , ve una partición ya expandida.
El administrador una vez más verifica los archivos y directorios en este lote y decide que todo está bien con el FS y los archivos.
El administrador ejecuta el comando: shutdown -p now y elimina la unidad asignada de la VM con la que se realizaron las acciones.
Guarda la imagen de disco de la VM original, desde la cual todo comenzó en un almacenamiento separado y la reemplaza con la imagen de disco correcta y envía la VM a arrancar.
La VM arranca sin problemas y todos los datos están en su lugar.
Moral:1) Tome una instantánea antes de sus acciones
2) Tome una captura de pantalla de la configuración deseada (en este caso, marcado de partición)
3) Antes del trabajo, haga una copia de seguridad de los archivos importantes