>>Páxina principal do Cloud

Estender root de máquina virtual con espazo libre del disco

Dende a actualización de agosto de 2017 é posible elixir un tamaño persoalizado para o disco root ou redimensionar un disco existente, pero para que ese espazo poida empregarse hai que asignalo manualmente no sistema operativo.

As plantillas de Ubuntu 14.04 e 16.04 teñen o root montado sobre LVM, empregando unha partición lóxica do sistema de particionado tradicional DOS. Esta guía está escrita para estas plantillas, aínda que recomendamos non saltarse en ningún caso o apartado de Comprobar a configuración por se acaso.

Antes de continuar debes confirmar que o sistema sobre o que apliques estas instrucións ten esta mesma configuración, xa que podes destruír o sistema se as aplicas mal.

Primeiro, comproba que se está utilizando LVM:

# df -h /
S.ficheros                    Tamaño Usados  Disp Uso% Montado en
/dev/mapper/Ubuntu14--vg-root   8,5G   6,3G  1,8G  79% /

O comando df -h amosa a montaxe de / en /dev/mapper/Ubuntu–vg-root, o que confirma que o sistema está montado sobre LVM.

Agora comproba o nome do volume lóxico empregado para para o root.

# lvs
  LV    VG        Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  root  Ubuntu-vg -wi-ao---   6.03g                                           
  swap1 Ubuntu-vg -wi-ao--- 748.00m

Tamén comproba o nome do grupo de volumes asociado e o seu volume físico.

# pvs
  PV         VG          Fmt  Attr PSize PFree
  /dev/sda5  Ubuntu14-vg lvm2 a--  9,76g    0 

Con eses comandos vemos que o root está nun volume lóxico chamado root dentro dun grupo de volumes chamado Ubuntu-vg que utiliza como volume físico /dev/sda5.

Ten en conta ademais que no sistema de particionado empregado, sda5 é unha partición lóxica que forma parte da partición estendida /dev/sda2.

O redimensionado pódese resumir nos seguintes 5 pasos:

  1. Estender a partición estendida /dev/sda2 para que ocupe o espazo libre no disco.
  2. Estender a partición lóxica /dev/sda5 para que ocupe o espazo libre na partición estendida.
  3. Estender o volume físico do grupo de volumes Ubuntu-vg.
  4. Estender o volume lóxico root para que ocupe o espazo libre do grupo de volumes.
  5. Estender o sistema de arquivos para que ocupe o espazo libre do volume lóxico.

Arrincamos parted. Co comando print free vemos que o disco ten un total de 21.5GB e un espazo libre ao final do disco de 14GB.

# parted /dev/vda
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
        32.3kB  1049kB  1016kB            Free Space
 1      1049kB  256MB   255MB   primary   ext2         boot
        256MB   257MB   1048kB            Free Space
 2      257MB   7515MB  7258MB  extended
 5      257MB   7515MB  7258MB  logical                lvm
        7515MB  21.5GB  14.0GB            Free Space

Primeiro hai que estender as particións estendidas e lóxica (por esa orde) para que acaben no final do disco, que neste caso é 21.5GB (pasos 1 e 2).

(parted) resizepart 2 21.5GB                                              
(parted) resizepart 5 21.5GB
(parted) quit

Unha vez feito, xa fóra de parted, estendemos o volume físico do grupo de volumes (paso 3).

# pvresize /dev/vda5
  Physical volume "/dev/vda5" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Agora estendemos o volume lóxico (paso 4).

# lvextend -l+100%FREE /dev/mapper/Ubuntu--vg-root 
  Extending logical volume root to 19.03 GiB
  Logical volume root successfully resized

Por último, estendemos o sistema de arquivos (paso 5).

# resize2fs /dev/mapper/Ubuntu--vg-root 
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/Ubuntu--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/Ubuntu--vg-root is now 4987904 blocks long.

Unha vez feito isto, todo o espazo libre debería estar xa asignado ao root do sistema.