¿Cómo extiendo una partición con un LVM y el volumen físico contenido y el volumen lógico?

33

En mi SSD de 240 GB tenía al principio dos particiones, una que contenía el Volumen lógico con Linux Mint y la otra contenía una partición NTFS para compartir con Windows. Ahora eliminé la partición NTFS y quiero extender mi grupo de volúmenes lógicos para usar el espacio en disco liberado.

¿Cómo extiendo el grupo de volúmenes , mi volumen lógico que contiene / home y el sistema de archivos (ext4) en / home? ¿Es esto posible hacer en línea?

PD: Sí, sé que tengo que hacer una copia de seguridad de mis datos :)

/dev/sdb/  (240GB)
    linuxvg  (160GB) should use 100% of the disk space
        swap
        root
        home (ext4, 128GB) should be extended to use the remaining space

salida de sudo vgdisplay:

  --- Volume group ---
  VG Name               linuxvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               160,00 GiB
  PE Size               4,00 MiB
  Total PE              40959
  Alloc PE / Size       40959 / 160,00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ...

  --- Logical volume ---
  LV Path                /dev/linuxvg/swap
  LV Name                swap
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:32 +0200
  LV Status              available
  # open                 2
  LV Size                8,00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/linuxvg/root
  LV Name                root
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:43 +0200
  LV Status              available
  # open                 1
  LV Size                24,00 GiB
  Current LE             6144
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Path                /dev/linuxvg/home
  LV Name                home
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:57 +0200
  LV Status              available
  # open                 1
  LV Size                128,00 GiB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               ...
  PV Status             allocatable
  Total PE / Free PE    40959 / 0

salida de sudo fdisk -l:

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   468862127   234431063+  ee  GPT

Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 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/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 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
klingt.net
fuente
2
Bueno, la manera más fácil hubiera sido crear una partición NTFS y usarla vgextend, en lugar de eliminarla por completo. Si aumenta la partición PV existente, es probable que deba reiniciar, ya que Linux se niega a volver a leer la tabla de particiones mientras el disco está en uso. Trabajar alrededor de esto en línea es incómodo. - Muestra tu tabla de particiones actual.
frostschutz
Puedo reiniciar si es necesario.
klingt.net

Respuestas:

44

Puedes hacer esto de manera bastante simple. Un poco sorprendido de que no haya una respuesta para esto aquí ya.

Puede hacer todo este proceso mientras se ejecuta en el sistema de archivos que desea cambiar de tamaño (sí, es seguro y totalmente compatible). No hay necesidad de CD de rescate o sistemas operativos alternativos.

  1. Cambie el tamaño de la partición (nuevamente, puede hacer esto con el sistema en ejecución). GParted es fácil de usar y admite el cambio de tamaño.
    También puede usar una herramienta de nivel inferior como fdisk. Pero tendrá que eliminar la partición y volver a crearla. Solo asegúrese de que la nueva partición comience exactamente en la misma ubicación.
  2. Reiniciar. Como la tabla de particiones se modificó en el sistema en ejecución, no tendrá efecto hasta que se reinicie.
  3. Corre pvresize /dev/sdXYpara que LVM recoja el nuevo espacio.
  4. Cambiar el tamaño del volumen lógico con lvextend. Si desea utilizar todo el asunto, lvextend -r -l +100%FREE /dev/VGNAME/LVNAME. El -rredimensionará el sistema de archivos también.
    Aunque siempre recomiendo no usar todo el grupo de volúmenes. Nunca se sabe lo que necesitará en el futuro. Siempre puede expandirse más tarde, no puede reducirse.
Patricio
fuente
3
Me gustaría aceptar su respuesta, pero no funcionó como sugirió, porque GParted no puede cambiar el tamaño de la partición raíz en un sistema en ejecución (al menos en mi caso).
klingt.net
@HalosGhost Revertí tu edición. partprobe -sno hace lo que crees que hace. El kernel no recogerá el tamaño de una partición que esté en uso. partprobe -ssolo funciona si la partición estaba en uso durante el cambio de tamaño (por lo tanto, cuando fdisk notificó al kernel que falló), pero ya no lo está.
Patrick
@Patrick, no le agregué la idea; "Mejoré" la edición poniendo el comando en backticks (¡la guerra por el código escapa a los salarios!).
HalosGhost
Oh, lo siento, lee el nombre del evento de historia equivocado. @Qetesh que se aplica a usted entonces :-)
Patrick
1
Es posible no reiniciar usando "partx -u" para el paso 2, para decirle al kernel que actualice el tamaño de la partición: funciona incluso en particiones activas y puede verificarse marcando /sys/.../sdXY/size antes y después.
AB
11

Ninguna de las respuestas hace justicia al poder de LVM.

(Esto se basa en el comentario de @frostchutz a la pregunta anterior).

Veamos los hechos:

  • OP tiene dos particiones, sdb1 y sdb2 es un volumen físico para LVM.
  • sdb1 es ntfs en este momento, necesitamos dar ese espacio al homevolumen lógico dentro del linuxvggrupo de volúmenes.

Pasos de LVM utilizando la "forma pragmática":

  • crear volumen físico en sdb1: pvcreate /dev/sdb1
  • agregue sdb1 a linuxvg:vgextend linuxvg /dev/sdb1
  • amplíe el volumen lógico homecon todo el espacio libre:lvextend -l +100%FREE /dev/linuxvg/home
  • extender ext4 fs: resize2f /dev/linuxvg/home

LVM permite un gran nivel de indirección. Un volumen lógico está dentro de un grupo de volúmenes, que podría estar usando varios discos.

inicio -> linuxvg -> (sdb1, sdb2, sdc1)

http://tldp.org/HOWTO/LVM-HOWTO/createvgs.html

MGP
fuente
10

La pregunta se resolvió después de leer esta publicación de blog. Escribiré la solución en forma breve:

  • arrancar desde un CD en vivo con
  • use gdisk(si usa GPT) de lo contrario podría ir con un buen viejofdisk
  • tenga en cuenta la configuración de su partición, en mi caso gdisk -l /dev/sdb
  • eliminar su partición con
  • crear una nueva partición con exactamente la misma alineación que la anterior (en mi ejemplo, comenzando en el bloque 2048)
  • escribe tu nueva tabla de particiones
  • ejecutar partprobe -spara actualizar la tabla de particiones sin reiniciar
  • cambie el tamaño de su volumen físico con pvresize /dev/sdb1o donde esté su pv (use pvspara determinar si no sabe)
  • ahora redimensione su volumen lógico con lvextend -l +100%FREE /dev/file/of/your/lv, en mi casosudo lvextend -l +100%FREE /dev/linuxvg/home
  • cambiar el tamaño del sistema de archivos sudo resize2fs /dev/linuxvg/home
  • primero verifique la consistencia sudo e2fsck -f /dev/linuxvg/home
  • disfruta :)
klingt.net
fuente
En realidad, puede cortar aproximadamente la mitad de esos pasos y hacerlo con solo 1 reinicio.
Patrick
GParted se negó a cambiar el tamaño de la partición, porque estaba bloqueada (este símbolo clave).
klingt.net
4

Algunas buenas respuestas ya.

Si usa xfs, entonces usa el comando

xfs_growfs /mountpoint

en lugar de resize2fs. Puede hacerlo mientras ese punto de montaje esté activo, como si ha aumentado la partición raíz y no necesita reiniciar después.

Paul M
fuente