Agrandir un disque, un PV, un VG et un LV dans une VM

Plusieurs etapes sont necessaires pour augmenter la taille d'un VG qu'on aurait calcule trop juste sur un Linux.

  • agrandir la taille du disque dans VMware :

 

 

Ensuite, il y a plusieurs choses a faire sous Linux pour que ce soit utilisable.

D'abord, il faut "rescaner" le bus SCSI (merci ESXi :)) afin que le systeme constate le changement de taille de disque. Pour cela, il faut d'abord identifier l'ID du device. Dans mon cas, il s'agit de /dev/sda donc il faut utiliser la commande suivante :

# dmesg | grep "sda"
[831895.603319] sd 2:0:0:0: [sda] 12582912 512-byte logical blocks: (6.44 GB/6.00 GiB)

On constate qu'il s'agit de l'ID 2:0:0:0:. Il faut maintenant envoyer un rescan sur le bus SCSI de cette cible. Pour cela :

# echo "1" > /sys/bus/scsi/devices/target2:0:0/2:0:0:0/rescan
# dmesg | grep sda | tail -1
[949724.450707] sda: detected capacity change from 6442450944 to 8589934592

 La taille du disque est bien vue par l'OS, on va pouvoir passer a l'agrandissement de la partition. Dans mon cas, je dois retailler un LVM dans une partition logique situee dans une partition etendue (ca m'apprendra a faire des installations d'Ubuntu en mode FULL-AUTO !!! :)).

Heureusement, avec "parted" c'est un jeu d'enfant si on s'y prend correctement.

 

# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   6442MB  6186MB  extended
 5      257MB   6442MB  6186MB  logical                lvm

On doit relever la taille exacte des partitions actuelles (surtout le "start"). Le probleme ici, c'est que l'unite est le MB. Pour ne pas faire d'approximation qui serait catastrophique, on passe en mode secteur.

(parted) u s                                                              
(parted) print                                                            
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16777216s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start    End        Size       Type      File system  Flags
 1      2048s    499711s    497664s    primary   ext2         boot
 2      501758s  12582911s  12081154s  extended
 5      501760s  12582911s  12081152s  logical                lvm

On note les nombres 

  1. 16777216 (taille du disque)
  2. 501758 (secteur de depart de la partition etendue)
  3. 501760 (secteur de depart de la partition logique)

Ensuite on procede a l'effacement des partitions puis a leur recreation a la volee a la bonne taille

(parted) rm 2
Error: Partition(s) 5 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? Ignore
(parted) mkpart
Partition type?  primary/extended? extended                               
Start? 501758                                                             
End? 100%                                                                 
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
Error: Partition(s) 5 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? Ignore
(parted) mkpart
Partition type?  primary/logical? logical                                 
File system type?  [ext2]?                                                
Start? 501760                                                             
End? 100%
(parted) toggle 2 lba
(parted) toggle 5 lvm
(parted) print                                                            
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 16777216s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start    End        Size       Type      File system  Flags
 1      2048s    499711s    497664s    primary   ext2         boot
 2      501758s  16777215s  16275458s  extended
 5      501760s  16777215s  16275456s  logical                lvm

 Une fois qu'on est sur que tout est bon, on peut quitter parted.

 

Comme pour le disque, il faut "rescanner" aussi le PV (Physical Volume) pour que le LVM comprenne le changement. Sinon, on peut constater que rien n'a change pour l'instant

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               scheduler-vg
  PV Size               5.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1474
  Free PE               0
  Allocated PE          1474
  PV UUID               WehYYw-UWfC-tE9s-nnis-FXmc-VzWd-M71iap
   

 Donc on passe au "rescan" avec partprobe (pour relire la table de partition a chaud) puis un pvresize

# partprobe
# pvresize /dev/sda5
  Physical volume "/dev/sda5" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               scheduler-vg
  PV Size               7.76 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1986
  Free PE               512
  Allocated PE          1474
  PV UUID               WehYYw-UWfC-tE9s-nnis-FXmc-VzWd-M71iap
   

 Tout a l'air OK, on constate que le PV est correctement vu par LVM. On passe donc a la suite avec lv VG (Volume Group)

# vgchange -a y scheduler-vg
  1 logical volume(s) in volume group "scheduler-vg" now active
# vgdisplay
  --- Volume group ---
  VG Name               scheduler-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.76 GiB
  PE Size               4.00 MiB
  Total PE              1986
  Alloc PE / Size       1474 / 5.76 GiB
  Free  PE / Size       512 / 2.00 GiB
  VG UUID               bKmSYx-WtQH-WfCu-su5U-l1Vs-faR4-2A7RbB
   

 environ 2 GB sont maintenant libre, c'est bien ce qu'on souhaitait. Il faut maintenant retailler le LV (Logical Volume).

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/scheduler-vg/root
  LV Name                root
  VG Name                scheduler-vg
  LV UUID                aP2K3c-KVdR-Jm2d-YwxQ-uPKO-0MCb-0HnsvI
  LV Write Access        read/write
  LV Creation host, time scheduler, 2014-09-04 17:33:55 +0200
  LV Status              available
  # open                 1
  LV Size                5.76 GiB
  Current LE             1474
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
# lvextend -l +100%FREE scheduler-vg/root
  Extending logical volume root to 7.76 GiB
  Logical volume root successfully resized

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/scheduler-vg/root
  LV Name                root
  VG Name                scheduler-vg
  LV UUID                aP2K3c-KVdR-Jm2d-YwxQ-uPKO-0MCb-0HnsvI
  LV Write Access        read/write
  LV Creation host, time scheduler, 2014-09-04 17:33:55 +0200
  LV Status              available
  # open                 1
  LV Size                7.76 GiB
  Current LE             1986
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

 Voila, le plus dur est fait. On n'a plus qu'a resizer le FS et tout est bon.

# df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/scheduler--vg-root  5.7G  5.5G  173M  97% /
# resize2fs /dev/mapper/scheduler--vg-root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/scheduler--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/scheduler--vg-root is now 2033664 blocks long.
# df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/scheduler--vg-root  7.6G  5.5G  2.2G  72% /

Et voila, c'est fini. Felicitations.

Tags: VmWare, Linux, LVM

Print Email