Cómo cambiar el tamaño de la partición LVM raíz en Fedora sin LiveCD o reinicio

24

Tengo una máquina virtual que recientemente aumentó su imagen de disco de 20 GB a 50 GB, y fdisk -lverifica que la VM puede ver este nuevo tamaño. Ahora necesito cambiar el tamaño de mi partición LVM raíz para llenar los 30GB adicionales.

He encontrado varios artículos sobre cómo cambiar el tamaño de LVM, pero los pocos que cubren el cambio de tamaño de la partición raíz afirman que necesita iniciar desde un LiveCD. ¿Hay alguna manera de hacer esto sin quitar el servidor? El servidor es crítico, por lo que me gustaría minimizar el tiempo de inactividad.

Editar: Salida de fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Editar: ¿Cómo cambio el tamaño de la partición física? fdisk puede ver el espacio libre, pero no sé cómo cambiar el tamaño de la partición LVM primaria para usarla. Intenté arrancar en un LiveCD y usar el resizecomando parted'd , pero todo lo que me da es el error "No se puede detectar el sistema de archivos". Encontré esta guía , que dice que necesito eliminar la partición y crear una nueva con el tamaño correcto, pero eso suena muy peligroso.

Edición final: el resizecomando Parted es extrañamente incapaz de cambiar el tamaño de las particiones LVM. Imagínate. En cambio, simplemente eliminé la partición anterior y creé una nueva con el nuevo rango, como se describe en el enlace anterior, y eso redimensionó correctamente la partición LVM. Luego seguí los consejos a continuación para cambiar el tamaño de los volúmenes y sistemas de archivos dentro de la partición LVM.

Cerin
fuente
Muéstranos la salida de fdisk - l. ¿Cambiaste el tamaño de la partición y no solo el volumen, verdad?
Zoredache
@ Zoredache, agregué ese resultado a la pregunta.
Cerin

Respuestas:

33

Puede hacer crecer un volumen lógico en línea. Tendría que desmontarlo para reducirlo (lo que requiere un LiveCD / Modo de rescate).

  1. pvresize /dev/sda2(suponiendo que su partición LVM sea sda2. Reemplace según sea necesario).
  2. lvextend /dev/mapper/root -l+100%FREE (o, como se llame su volumen lógico raíz).
  3. resize2fs /dev/mapper/root (suponiendo ext2 / 3/4)
Aaron Copley
fuente
1
Personalmente prefiero lvextend -L [size][unit] /dev/group/volume, aunque solo sea porque puedo extender un volumen en 10 gigabytes especificando-L +10G
Hubert Kario, el
Sí, pero el OP preguntó; Now I need to resize my root LVM partition to fill the extra 30GB.(Que es aumentar el volumen lógico por el espacio libre disponible.)
Aaron Copley
"El nuevo tamaño (1076 extensiones) coincide con el tamaño existente (1076 extensiones)"
Cerin
77
Pensé que este truco era bueno: si agrega la -ropción lvextend, se enganchará fsadmpara cambiar el tamaño del FS. Esto haría que el tercer paso sea redundante.
Jodie C
3
Tenga en cuenta que esta respuesta asume que la partición ya se ha extendido para llenar el espacio libre y solo los volúmenes lógicos deben actualizarse. El pvresize /dev/sda2comando no hace nada hasta que la partición / dev / sda2 se haya redimensionado con parted o fdisk. Tuve que cambiar el tamaño del mío con fdisk, ya que parte de mi sistema no se mostraba o no tenía un comando de cambio de tamaño. El cambio de tamaño de Fdisk implica eliminar y volver a crear la partición.
Jason
2

¿Su sistema realmente cambió de 20 a 50 GB? Eso parece realmente extraño ya que su dispositivo sda2 es de ~ 40 GB, lv_root muestra 36 GB y el intercambio muestra 6 GB.

Su salida de fdisk -lmuestra los sectores totales de /dev/sdais 104857600. El último sector utilizado por /dev/sda2es 83886079. Esto me dice que no ha ajustado el tamaño de la partición para usar todo el espacio disponible en la unidad. El comando pvresize no cambia la tabla de particiones. Primero debe cambiar la tabla de particiones.

Zoredache
fuente
1

Instalar gparted. Ejecutar como root (use ssh -X o x2go si es remoto). Selecciona la partición. Debería mostrar espacio libre más allá del final (a la derecha). Si no es así, debe reiniciar su máquina virtual para ver el nuevo tamaño del dispositivo virtual. Eso debería ser un tiempo de inactividad mínimo con systemd.

Haga clic derecho y seleccione cambiar el tamaño. Arrastre el final al final del disco. Asegúrate de no tocar el principio. gparted es capaz de mover una partición durante el cambio de tamaño, pero eso, por supuesto, destruirá un sistema en ejecución. Pero mover el final está bien. Revise la operación pendiente que gparted realizará para asegurarse de que está extendiendo y no moviendo la partición. Haga clic en aplicar. gparted cambiará la partición en el disco, luego emitirá el núcleo ioctl para volver a leer la tabla de particiones, cambiando también el tamaño del dispositivo de bloque en vivo. Luego, ya que ve que es un PV LVM, ejecuta pvresize para usted. Salga de gparted, y vgs ahora muestra su nuevo espacio.

He escuchado rumores de que separarse puede hacer todo eso sin la sobrecarga de una GUI, pero nunca he sido capaz de descubrir el vudú. Parted tiene que ser una de las peores interfaces CLI que he intentado usar.

No use fdisk, debe eliminar y reasignar la partición para cambiar el tamaño y, de forma predeterminada, borrará la firma LVM2 al escribir. Creo que vi una opción "avanzada" para desactivar ese comportamiento destructivo, pero nunca lo he probado.

También puedes probar cfdisk (curses fdisk). Puede tener un tamaño de partición utilizable. Es bastante fácil ejecutar pvresize manualmente, y hay un comando para indicarle al núcleo que vuelva a leer la tabla de particiones. Pero tendría que hacer una prueba para asegurarme de que no borre la firma LVM como fdisk.

Stuart Gathman
fuente
0

Si el volumen físico LVM está en una partición, no, no puede cambiar su tamaño sin reiniciar.

Puede editar la tabla de particiones en la unidad, pero Linux se negará a usarla hasta que reinicie.

Si está utilizando XFS, cambie resize2fsa xfs_growfs.

Puede mostrar los PV que usa y los LV en el grupo de volúmenes usando pvsy lvs.

PV en disco sin procesar

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV en una partición

En primer lugar hay que cambiar el tamaño de la partición, el uso parted, fdisko una herramienta similar para eso. Recuerde que esas herramientas solo editan la descripción donde están las particiones, no mueven los datos. En otras palabras, fácilmente puede extender solo la última partición del disco. Luego reinicie su máquina y después de eso debería poder informar a LVM que tiene espacio adicional disponible:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
Hubert Kario
fuente
Usando un Live CD de Gparted, sudo pvresize /dev/sda2informa "1 volumen (s) físico (s) redimensionado", pero sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gfalla con el error "espacio libre insuficiente: se necesitan 320 extensiones, pero solo 0 disponibles". sudo fdisk -linforma que tengo 54G disponibles, mientras que los sudo pvdisplayinformes solo 40G están en uso. ¿Por qué falla lvextend?
Cerin
1
@Cerin, te perdiste la primera declaración de Hubert para un PV en una partición. Primero debe cambiar el tamaño de la partición, usar parted, fdisk o una herramienta similar para eso .
Zoredache
@ Zoredache, Ok, bueno, esa es básicamente toda mi pregunta. No sé cómo hacer eso. Acabo de arrancar en un LiveCD de Gparted e intenté usar el resizecomando de parted para aumentar el tamaño de la partición primaria, pero me dio el error "No se pudo detectar el sistema de archivos". ¿Cómo cambiar el tamaño de la partición con parted o fdisk?
Cerin
@Cerin: buscar SF o hacer otra pregunta
Hubert Kario
0

Consideraría revisar ssm (system-storage-manager) si está disponible en su distribución.

Echa un vistazo a esto para obtener un poco más de información: /unix//a/293173

ssm parece facilitar el cambio de tamaño de los volúmenes lógicos sin tener que hacer todo usted mismo.

Pude usar para extender mi partición de inicio con él después de reiniciar mi sistema operativo e iniciar sesión primero como root. (Tuve que reiniciar dos veces en total, pero funcionó al final y ahora tengo un 50G extra disponible en mi parición / hogar).

Bryan Cole
fuente
0

Después de combinar 25 howto's, finalmente tengo esta solución. No requiere cd en vivo, está completamente sobre la marcha.

Paso 1. formatee la partición con parted (sin gui). En este ejemplo, el tamaño máximo del disco aumentó de 8BG a 32 GB en la caja virtual.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Paso 2. Crear un volumen físico basado en la nueva partición

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Paso 3. Agregue el volumen físico al grupo de volúmenes. En un servidor fedora 28 simple, la instalación del grupo de volúmenes se llama fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Paso 4. Agregue el espacio disponible en el grupo de volúmenes al volumen lógico. En una instalación simple de fedora 28, el volumen lógico se denomina raíz.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Paso 5. Indique al sistema de archivos en el volumen lógico que use el espacio extra. En fedora el sistema de archivos es xfs.

¡Atención! ¡xfs_growfs usa el punto de montaje para identificar el sistema de archivos, no el nombre del sistema de archivos que encuentra en la salida de df!

El comando 'xfs_growfs / dev / mapper / fedora-root' le dirá que / dev / mapper / fedora-root no es un sistema de archivos XFS montado. Si está utilizando un sistema de archivos diferente, consulte https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Paso 6. Disfruta

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....
Lieven Vanlerberghe
fuente
-1

Prueba testdisk

sudo dnf install testdisk

sudo testdisk

Simplemente configure crear un archivo de registro Luego, se enumerarán las particiones, - seleccione el medio / partición - luego escriba - y analice - búsqueda rápida - seleccione y escriba

Salil Kothadia
fuente