Différences entre les versions de « Lv resize »

De BlaxWiki
Aller à la navigationAller à la recherche
 
(11 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Extend LV sur KVM ==
== Extend LV sur Esx (05/2023) ==
<pre>
<pre>
On a ici une vm sous un hyperviseur  KVM dont nous devons étendre la partition (cela est valable pour la partition système ou n'importe quelle autre partition). Les disques de la vm sont des LV, mais c'est le même principe si les disques de la VM sont des fichiers
Ici on a une vm avec plusieurs disques, donc le sdd qui faisait 1 go, avec dedans :


Attention, le volume logique LV est une boite, le système de fichier FS est le contenu de la boite. Augmenter la taille du contenu sans augmenter la taille de la boîte peut poser des  problèmes.
# pvs
  PV        VG      Fmt  Attr PSize  PFree
  /dev/sdd1  applvg_4 lvm2 a--  <1.00g    0
 
 
sdd                  8:48  0    1G  0 disk
└─sdd1                8:49  0 1023M  0 part
  ├─applvg_4-opt0_4 253:8    0  32M  0 lvm  /opt
  └─applvg_4-neo1_4 253:9    0  988M  0 lvm  /opt/Neoload9.2
 
 
 
On a augmenté dans le vcenter le disque sdd à 3Go. Pour que la vm voit bien la taille du disque ssd sans rebooter il faut : echo 1>/sys/class/block/sdd/device/rescan (ou echo 1>/sys/class/scsi_device/X:X:X:X/device/block/device/rescan)
 
[root@menx-inj-01-tma ~]# parted /dev/sdd
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
 
Number  Start  End    Size    Type    File system  Flags
1      1049kB  1074MB  1073MB  primary              lvm
 
(parted) print free
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
 
Number  Start  End    Size    Type    File system  Flags
        32.3kB  1049kB  1016kB          Free Space
1      1049kB  1074MB  1073MB  primary              lvm
        1074MB  3221MB  2147MB          Free Space
 
(parted) resizepart 1 100%
 
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
 
Number  Start  End    Size    Type    File system  Flags
        32.3kB  1049kB  1016kB          Free Space
1      1049kB  3221MB  3220MB  primary              lvm
 
 
Il faut juste faire un resizepart 1 100% pour augmenter à 100% de l espace libre la taille de notre partition, pas de suppression de partition à faire.
 
 
Apres on pvresize /dev/sdd1 , pour que le pv fasse bien 3 Go au total
Puis on peut extend notre LV : lvextend -l+100%FREE /dev/applvg_4/neo1_4
 
Il ne reste plus qu à etendre le file system : xfs_growfs /opt/Neoload9.2/ (ou resize2fs si pas xfs)
</pre>
 
 
== Extend disque xfs / ext4 de la vm sur un  KVM ==
<pre>
Sur le kvm on a des LV qui sont montés dans la config xml des vm. On commence par étendre le LV sur le kvm : lvextend -L+20G /dev/vol2_kvm/vm1.test.com
 
Tout le reste se fait dans la VM :
Il faut faire un reboot de la VM pour prendre en compte l'extend du LV ou faire un rescan du vdx de la vm :
echo "- - -" > /sys/class/scsi_host/host7/scan
echo 1 > /sys/block/vda/device/rescan
 
Puis apres on fait le kparted pour supprimer et recréer la partition en question (en se mettant en unit sector, noter le 1er sector avant le delete et bien mettre 100% pour le last)
 
Puis xfs_growfs /dev/vda3 ou pour un ext4 resize2fs /dev/vda3
 
</pre>
 
== Extend disque LV de la vm sur un  ESX ==
<pre>
On agrandit le disque en question sur l'esx pour commencer.
 
Puis sur la vm :
 
Ici on veut agrandir la partition / :
[root@ ~]# lvs
  LV      VG  Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    rhel -wi-ao----  21.00g
 
[root@e ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root      21G  4.8G  17G  23% /
 
 
[root@gsbc-lrhs1.geslab2.interne ~]# pvs
  PV        VG  Fmt  Attr PSize    PFree
  /dev/sda3  rhel lvm2 a--  <118.51g    0
 
root@]# parted /dev/sda
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
 
Number  Start  End    Size    File system  Name                  Flags
1      1049kB  525MB  524MB  fat16        EFI System Partition  boot, esp
2      525MB  1599MB  1074MB  xfs
3      1599MB  113GB  111GB                                      lvm
 
(parted) unit s
(parted) rm 3
Error: Partition(s) 3 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? i
(parted) print
Disk /dev/sda: 251658240s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
 
Number  Start    End      Size      File system  Name                  Flags
1      2048s    1026047s  1024000s  fat16        EFI System Partition  boot, esp
2      1026048s  3123199s  2097152s  xfs
 
(parted) mkpart
Partition name?  []? extended
File system type?  [ext2]? lvm
parted: invalid token: lvm
File system type?  [ext2]?
Start? 3123200s
End? 100%
(parted) print
Disk /dev/sda: 251658240s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
 
Number  Start    End        Size        File system  Name                  Flags
1      2048s    1026047s    1024000s    fat16        EFI System Partition  boot, esp
2      1026048s  3123199s    2097152s    xfs
3      3123200s  251656191s  248532992s  ext2        extended
 
(parted) set 3 lvm on
(parted) quit
 
 
lvextend -l +100%FREE /dev/rhel/root
et apres on peut faire le xfs_growfs /dev/rhel/root
 
</pre>
 
== Extend disque LV de la vm sur un  KVM ==
<pre>
On a ici une vm sous un hyperviseur  KVM dont nous devons étendre la partition (cela est valable pour la partition système ou n'importe quelle autre partition). Les disques de la vm sont des LV. On a donc un gros PV, un gros VG où il reste de de la place pour crééer ou étendre des LV.
 
!!!  Attention, le volume logique LV est une boite, le système de fichier FS est le contenu de la boite. Augmenter la taille du contenu sans augmenter la taille de la boîte peut poser des  problèmes. !!!
</pre>
</pre>


Ligne 32 : Ligne 181 :
  * Création du LV de backup : On le créé de la même taille que le LV d'origine avec la commande : {{{lvcreate -L70G -n vitrine-www2.ecomobilier.fr_root_backup vol_kvm1}}}
  * Création du LV de backup : On le créé de la même taille que le LV d'origine avec la commande : {{{lvcreate -L70G -n vitrine-www2.ecomobilier.fr_root_backup vol_kvm1}}}
  * Copie du LV  (la commande bs à la fin de la ligne est très important sinon cela va prendre des heures) : {{{dd if=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root of=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root_backup bs=4M}}}
  * Copie du LV  (la commande bs à la fin de la ligne est très important sinon cela va prendre des heures) : {{{dd if=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root of=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root_backup bs=4M}}}
</pre>
=== Erreur extend "Insufficient suitable contiguous ===
<pre>
Il peut arriver que l'on ait l'erreur suivante lors d'un extend : "Insufficient suitable contiguous allocatable extents for logical volume srv-dev01.m2o_data: 2560 more required"
Cela est du au fait qu'il n'y ait pas de place à la suite du LV dans le PV.
Pour voir les segments / continus des LV : pvs -v --segments /dev/mapper/LunVM1
Pour faire l'extend malgrès tout, il faut ajouter l'option --alloc normal : lvextend -L+10G /dev/vol_kvm/srv-dev01.m2o_data --alloc normal
</pre>
</pre>


Ligne 91 : Ligne 249 :




=== Filesystem en Ext4 ===
==== Filesystem en Ext4 ====
<pre>
<pre>
Fsck & resize2fs
Fsck & resize2fs
Ligne 105 : Ligne 263 :


Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille
Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille
### Modification sur le / ###
Il est possible de faire un resize sur le /. Une fois le LV ou qcow agrandit, on boot sur la VM, on supprime la partition comme d habitude  avec fdisk (parted ne veut pas car le / est utilisé). Puis on reboot (reboot obligé, meme partprobe et rescan sda ne changent rien)
et on fait un resize2fs /dev/sda1
Si le 1er secteur est à 63, il faut fdisk -c=dos -u=sectors(sinon il commencera à 2048), ne pas faire attention au warning deprecated
###
</pre>
</pre>




=== Filesystem en Xfs ===
==== Filesystem en Xfs ====
<pre>
<pre>
Augmentation de la partition volume pour atteindre une taille cible de 100 Gb (taille d'origine 70 Gb)  :   
Augmentation de la partition volume pour atteindre une taille cible de 100 Gb (taille d'origine 70 Gb)  :   
Ligne 147 : Ligne 314 :


Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille
Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille
</pre>
== Extend LV sur Azure ==
Ici le contexte est un peu différent. On a un LV qui prend toute la taille du VG, qui lui même prend toute la taille du PV.
=== Extend sur une partition (sdb1) ===
Par défaut Azure créée une partition sda1 pour mettre l'OS. Une fois qu'on a étendu le disque dans Azure, on peut augmenter la partition et les PV / VG / LV sur la VM.
==== Création du LV à l'origine ====
<pre>
Disque de 10 Go créé dans Azure
[root@centos7 ~]# fdisk /dev/sdb (on lui met les 10 Go sur sdb1 avec type LVM linux)
[root@centos7 ~]# pvcreate /dev/sdb1
[root@centos7 ~]# vgcreate benvg /dev/sdb1
[root@centos7 ~]# lvcreate -l 100%FREE -n benlv benvg
[root@centos7 ~]# pvs
  PV        VG    Fmt  Attr PSize  PFree
  /dev/sdb1  benvg lvm2 a--  <10.00g    0
[root@centos7 ~]# vgs
  VG    #PV #LV #SN Attr  VSize  VFree
  benvg  1  1  0 wz--n- <10.00g    0
 
[root@centos7 ~]# lvs
  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <10.00g
 
[root@centos7 ~]# mkfs.xfs /dev/mapper/benvg-benlv
[root@centos7 ~]# mount /dev/benvg/benlv /ben
[root@centos7 ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/benvg-benlv  10G  33M  10G  1% /ben
</pre>
==== Extend ====
<pre>
Dans Azure je passe la taille du disque de 10 Go à 15 Go
[root@centos7 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391
  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1            2048    20971519    10484736  8e  Linux LVM
[root@centos7 ~]# partprobe
[root@centos7 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391
  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1            2048    20971519    10484736  8e  Linux LVM
On démonte /ben
On va augmenter la taille de la partition sdb1 : fdisk /dev/sdb, suppression de la partition 1 et on la recréé
[root@centos7 /]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391
  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1            2048    31457279    15727616  83  Linux
Lorsqu on fait un partprobe :
[root@centos7 /]# partprobe  /dev/sdb
^[[AError: Partition(s) 1 on /dev/sdb 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.
Il faut désactiver le LV :
[root@centos7 /]# lvchange -a n /dev/benvg/benlv
[root@centos7 /]# partprobe
!! on n a plus d erreur maintenant !!
[root@centos7 /]# pvresize -d -v /dev/sdb1
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "benvg" metadata (seqno 7).
    Resizing volume "/dev/sdb1" to 31455232 sectors.
    Resizing physical volume /dev/sdb1 from 2559 to 3839 extents.
    Updating physical volume "/dev/sdb1"
    Creating volume group backup "/etc/lvm/backup/benvg" (seqno 8).
  Physical volume "/dev/sdb1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
 
[root@centos7 /]# pvs
  PV        VG    Fmt  Attr PSize  PFree
  /dev/sdb1  benvg lvm2 a--  <15.00g 5.00g
[root@centos7 /]# lvchange -a y /dev/benvg/benlv
[root@centos7 /]# vgs
  VG    #PV #LV #SN Attr  VSize  VFree
  benvg  1  1  0 wz--n- <15.00g 5.00g
[root@centos7 /]# lvs
  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <10.00g
[root@centos7 /]# lvextend -l +100%FREE /dev/benvg/benlv
  Size of logical volume benvg/benlv changed from <10.00 GiB (2559 extents) to <15.00 GiB (3839 extents).
  Logical volume benvg/benlv successfully resized.
!! Si on ne met pas l'option -r (resize file system, on va rester à 10 lorsqu on fera le mount)
[root@centos7 /]# lvs
  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <15.00g
[root@centos7 /]#  mount /dev/benvg/benlv /ben
[root@centos7 /]# df -h
/dev/mapper/benvg-benlv  10G  33M  10G  1% /ben
[root@centos7 /]# umount /ben
[root@centos7 /]# lvextend -r -l +100%FREE /dev/benvg/benlv
Phase 1 - find and verify superblock...
......
data blocks changed from 2620416 to 3931136
[root@centos7 /]#  mount /dev/benvg/benlv /ben
[root@centos7 /]# df -h
/dev/mapper/benvg-benlv  15G  33M  15G  1% /ben
</pre>
== Extend sur tout le disque (sdb) ==
<pre>
Lorsque le PV est fait directement sur le disque entier il y a moins de manipulation. Ici notre disque fait 15 Go (comme le pv, vg et le lv) et on le passe à 20 Go dans Azure.
Si l'on fait un fdisk ou parted et que le premier secteur est 0 c'est qu il n y pas de partition
Puis sur la vm on fait :
[root@centos7 /]# partprobe /dev/sdb
[root@centos7 /]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
[root@centos7 /]# pvs
  PV        VG    Fmt  Attr PSize  PFree
  /dev/sdb  benvg lvm2 a--  <15.00g    0
[root@centos7 /]# pvresize -d -v /dev/sdb
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "benvg" metadata (seqno 2).
    Resizing volume "/dev/sdb" to 41943040 sectors.
    Resizing physical volume /dev/sdb from 3839 to 5119 extents.
    Updating physical volume "/dev/sdb"
    Creating volume group backup "/etc/lvm/backup/benvg" (seqno 3).
  Physical volume "/dev/sdb" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
[root@centos7 /]# pvs
  PV        VG    Fmt  Attr PSize  PFree
  /dev/sdb  benvg lvm2 a--  <20.00g 5.00g
[root@centos7 /]# vgs
  VG    #PV #LV #SN Attr  VSize  VFree
  benvg  1  1  0 wz--n- <20.00g 5.00g
[root@centos7 /]# lvs
  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <15.00g
[root@centos7 /]# lvextend -r -l +100%FREE /dev/benvg/benlv
[root@centos7 /]# lvs
  LV    VG    Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <20.00g
</pre>
== Extend d'un PV / VG et LV  ==
Ici le but est d'ajouter 40 Go dans un LV, pour se faire on ajoute un disque vde sur le PV
<pre>
Ajout d'un disque sur le PV :
# pvcreate /dev/vde
Faire un pvscan pour s'assurer qu'on voit bien le disque vde dans le pvs
Ajout du PV dans le VG systemvm :
# vgextend systemvm /dev/vde
Maintenant que le VG systemvm a 40 Go de libre on peut ajouter les 40 Go dans le LV var_lib_mysql
#  lvextend -L +40G /dev/systemvm/var_lib_mysql
Puis un fait un efsck et un resize2fs sur le LV (on peut le faire directement sur le LV car il n'y a pas de partition dedans, sinon il aurait fallu faire un fdisk pour supprimer et recreer le partition, et faire le resize2fs apres)
# e2fsck -f /dev/systemvm/var_lib_mysql
# resize2fs /dev/systemvm/var_lib_mysql
</pre>
</pre>

Version actuelle datée du 31 janvier 2025 à 16:44

Extend LV sur Esx (05/2023)[modifier]

Ici on a une vm avec plusieurs disques, donc le sdd qui faisait 1 go, avec dedans :

# pvs
  PV         VG       Fmt  Attr PSize   PFree
  /dev/sdd1  applvg_4 lvm2 a--   <1.00g    0


sdd                   8:48   0    1G  0 disk
└─sdd1                8:49   0 1023M  0 part
  ├─applvg_4-opt0_4 253:8    0   32M  0 lvm  /opt
  └─applvg_4-neo1_4 253:9    0  988M  0 lvm  /opt/Neoload9.2 



On a augmenté dans le vcenter le disque sdd à 3Go. Pour que la vm voit bien la taille du disque ssd sans rebooter il faut : echo 1>/sys/class/block/sdd/device/rescan (ou echo 1>/sys/class/scsi_device/X:X:X:X/device/block/device/rescan)

[root@menx-inj-01-tma ~]# parted /dev/sdd
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1074MB  1073MB  primary               lvm

(parted) print free
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
        32.3kB  1049kB  1016kB           Free Space
 1      1049kB  1074MB  1073MB  primary               lvm
        1074MB  3221MB  2147MB           Free Space

(parted) resizepart 1 100%

(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sdd: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
        32.3kB  1049kB  1016kB           Free Space
 1      1049kB  3221MB  3220MB  primary               lvm


Il faut juste faire un resizepart 1 100% pour augmenter à 100% de l espace libre la taille de notre partition, pas de suppression de partition à faire.


Apres on pvresize /dev/sdd1 , pour que le pv fasse bien 3 Go au total
Puis on peut extend notre LV : lvextend -l+100%FREE /dev/applvg_4/neo1_4

Il ne reste plus qu à etendre le file system : xfs_growfs /opt/Neoload9.2/ (ou resize2fs si pas xfs)


Extend disque xfs / ext4 de la vm sur un KVM[modifier]

Sur le kvm on a des LV qui sont montés dans la config xml des vm. On commence par étendre le LV sur le kvm : lvextend -L+20G /dev/vol2_kvm/vm1.test.com

Tout le reste se fait dans la VM :
Il faut faire un reboot de la VM pour prendre en compte l'extend du LV ou faire un rescan du vdx de la vm :
echo "- - -" > /sys/class/scsi_host/host7/scan
echo 1 > /sys/block/vda/device/rescan

Puis apres on fait le kparted pour supprimer et recréer la partition en question (en se mettant en unit sector, noter le 1er sector avant le delete et bien mettre 100% pour le last)

Puis xfs_growfs /dev/vda3 ou pour un ext4 resize2fs /dev/vda3

Extend disque LV de la vm sur un ESX[modifier]

On agrandit le disque en question sur l'esx pour commencer. 

Puis sur la vm :

Ici on veut agrandir la partition / :
[root@ ~]# lvs
  LV      VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    rhel -wi-ao----  21.00g

[root@e ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root      21G  4.8G   17G  23% /


[root@gsbc-lrhs1.geslab2.interne ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree
  /dev/sda3  rhel lvm2 a--  <118.51g    0

root@]# parted /dev/sda
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  525MB   524MB   fat16        EFI System Partition  boot, esp
 2      525MB   1599MB  1074MB  xfs
 3      1599MB  113GB   111GB                                      lvm

(parted) unit s
(parted) rm 3
Error: Partition(s) 3 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? i
(parted) print
Disk /dev/sda: 251658240s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End       Size      File system  Name                  Flags
 1      2048s     1026047s  1024000s  fat16        EFI System Partition  boot, esp
 2      1026048s  3123199s  2097152s  xfs

(parted) mkpart
Partition name?  []? extended
File system type?  [ext2]? lvm
parted: invalid token: lvm
File system type?  [ext2]?
Start? 3123200s
End? 100%
(parted) print
Disk /dev/sda: 251658240s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End         Size        File system  Name                  Flags
 1      2048s     1026047s    1024000s    fat16        EFI System Partition  boot, esp
 2      1026048s  3123199s    2097152s    xfs
 3      3123200s  251656191s  248532992s  ext2         extended

(parted) set 3 lvm on
(parted) quit


lvextend -l +100%FREE /dev/rhel/root
et apres on peut faire le xfs_growfs /dev/rhel/root

Extend disque LV de la vm sur un KVM[modifier]

On a ici une vm sous un hyperviseur  KVM dont nous devons étendre la partition (cela est valable pour la partition système ou n'importe quelle autre partition). Les disques de la vm sont des LV. On a donc un gros PV, un gros VG où il reste de de la place pour crééer ou étendre des LV.

!!!  Attention, le volume logique LV est une boite, le système de fichier FS est le contenu de la boite. Augmenter la taille du contenu sans augmenter la taille de la boîte peut poser des  problèmes. !!!

Sauvegarde du disque d'origine[modifier]

'''!! IMPORTANT : il faut éteindre la VM avant un faire un backup du LV !!'''

Si on a la place, il est préférable de faire une sauvegarde du disque qui sera à dupliquer.  Dans le cas d'un disque en LV, sur le KVM hébergeant la machine virtuelle, vérifier la taille du LV de la VM en lançant la commande :

# lvdisplay /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root
  --- Logical volume ---
  LV Path                /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root
  LV Name                vitrine-www2.ecomobilier.fr_root
  VG Name                vol_kvm1
  LV UUID                3mK4HX-yA4C-LWEy-tA3Y-VgyO-lLCu-Q16aVt
  LV Write Access        read/write
  LV Creation host, time kvm1.ecomobilier.fr, 2015-09-04 16:25:59 +0200
  LV Status              available
  # open                 1
  LV Size                70.00 GiB

  
Récupérer la taille du LV (LV Size), vérifier qu il reste assez de place sur le volume en question (commande {{{vgs}}}) et créer le LV de destination : lvcreate -L$TAILLE -n $NOMDULV $NOMDUVG

Il est impératif de créer le LV de destination avant de faire le dd pour la copie. Vérifier avec la commande {{{pvs}}} que l'on ait bien la place sur le VG ou se trouvera le LV de backup.

Si on n'a pas la place sur un PV pour copier la VM, on peut la copier dans un fichier sur une partition locale : {{{dd if=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root of=/root/vitrine-www2.ecomobilier.fr_root_backup bs=4M}}}.
 * Création du LV de backup : On le créé de la même taille que le LV d'origine avec la commande : {{{lvcreate -L70G -n vitrine-www2.ecomobilier.fr_root_backup vol_kvm1}}}
 * Copie du LV  (la commande bs à la fin de la ligne est très important sinon cela va prendre des heures) : {{{dd if=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root of=/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root_backup bs=4M}}}

Erreur extend "Insufficient suitable contiguous[modifier]

Il peut arriver que l'on ait l'erreur suivante lors d'un extend : "Insufficient suitable contiguous allocatable extents for logical volume srv-dev01.m2o_data: 2560 more required"
Cela est du au fait qu'il n'y ait pas de place à la suite du LV dans le PV.
Pour voir les segments / continus des LV : pvs -v --segments /dev/mapper/LunVM1

Pour faire l'extend malgrès tout, il faut ajouter l'option --alloc normal : lvextend -L+10G /dev/vol_kvm/srv-dev01.m2o_data --alloc normal

Augmentation de la taille du LV d'origine[modifier]


Augmentation de la partition volume pour atteindre une taille cible de 100 Gb (taille d'origine 70 Gb)  :  
lvextend -L +30G /dev/vol_kvm/rfs1-ppr.grdf.fr_data2-ppr.grdf.fr_data

/!\ Ici il y a une étape très importante pour voir qu'elle est le premier secteur du disque. Il faut faire un fdisk -u -l sur le LV : le -u sert à spécifier que l'on veut un affichage en mode secteur :

[root@] fdisk -u -l /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root
                                         Device Boot      Start         End      Blocks   Id  System
/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root1            2048   209715199   104856576   83  Linux


On voit bien que le secteur de "Start" est à 2048. Lorsque l'on va recréer la partition il faudra bien remettre le même nombre.

/!\ Il arrive parfois que des vieilles partitions apparaissent avec un secteur de départ à 63 et que fdisk force une re-création au 2048. Si vous validez ça sur un disque système, vous pétez la MBR.
Pour passer outre ce problème il faut lancer fdisk en forçant le secteur à 63. ex :  {{{ fdisk -c -u -S 63 /dev/xxxxxxx }}}

* Si ca ne passe pas avec Fdisk qui dit que le "First sector" à 63 est out of range, on utilise parted :

[root@hv2.ants.interieur.gouv.fr mnt]# parted  /dev/vol_hv2/xxxx
unit s (pour passer en sector)
print (pour afficher la table)

Model: Linux device-mapper (linear) (dm)
Disk /dev/dm-0: 754974720s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End         Size        Type     File system  Flags
 1      63s    587202559s  587202497s  primary  ext3


rm 1  (pour supprimer la 1ere partition)
mkpart (pour créer)

Partition type?  primary/extended? primary
File system type?  [ext2]? ext4
Start? 63
End? 100%
(ici on a mis 100% pour lui dire qu il prenne toute la place possible)
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
(parted) print

Number  Start  End         Size        Type     File system  Flags
 1      63s    754974719s  754974657s  primary  ext3



Suppression et recréation de la partition :
# fdisk -u /dev/vol_kvm/rfs2-ppr.grdf.fr_data }}}

/!\ On va supprimer la partition principale, puis recréer une partition primary, EN METTANT COMME PREMIER SECTEUR CELUI QU ON A RÉCUPÉRÉ CI DESSUS. Pour le dernier secteur, laisser celui par défaut.


Filesystem en Ext4[modifier]

Fsck & resize2fs
On "ouvre" les sous partitions du LV : kpartx -av /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root

On fait un fsck sur la partition du LV : fsck -f /dev/mapper/vol_kvm1-vitrine--www2.ecomobilier.fr_root1

On resize la partition (cela est valable uniquement pour les linux, pour les windows ce n'est pas nécessaire) : resize2fs /dev/mapper/vol_kvm1-vitrine--www2.ecomobilier.fr_root1

On refait un fsck sur la partition du LV : fsck -f /dev/mapper/vol_kvm1-vitrine--www2.ecomobilier.fr_root1

On "referme" les sous partitions du LV :  kpartx -d /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root

Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille


### Modification sur le / ###
Il est possible de faire un resize sur le /. Une fois le LV ou qcow agrandit, on boot sur la VM, on supprime la partition comme d habitude  avec fdisk (parted ne veut pas car le / est utilisé). Puis on reboot (reboot obligé, meme partprobe et rescan sda ne changent rien)
et on fait un resize2fs /dev/sda1
Si le 1er secteur est à 63, il faut fdisk -c=dos -u=sectors(sinon il commencera à 2048), ne pas faire attention au warning deprecated
###



Filesystem en Xfs[modifier]

Augmentation de la partition volume pour atteindre une taille cible de 100 Gb (taille d'origine 70 Gb)  :  
lvextend -L +30G /dev/vol_kvm/rfs1-ppr.grdf.fr_data2-ppr.grdf.fr_data }}}

/!\ Ici il y a une étape très importante pour voir qu'elle est le premier secteur du disque. Il faut faire un fdisk -u -l sur le LV : le -u sert à spécifier que l'on veut un affichage en mode secteur

[root@] fdisk -u -l /dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root
                                         Device Boot      Start         End      Blocks   Id  System
/dev/vol_kvm1/vitrine-www2.ecomobilier.fr_root1            2048   209715199   104856576   83  Linux


On voit bien que le secteur de "Start" est à 2048. Lorsque l'on va recréer la partition il faudra bien remettre le même nombre.

/!\ Il arrive parfois que des vieilles partitions apparaissent avec un secteur de départ à 63 et que fdisk force une re-création au 2048. Si vous validez ça sur un disque système, vous pétez la MBR.
Pour passer outre ce problème il faut lancer fdisk en forçant le secteur à 63. ex :  {{{ fdisk -c=dos -u -S 63 /dev/xxxxxxx }}}

Suppression et recréation de la partition 
# fdisk -u /dev/vol_kvm/rfs2-ppr.grdf.fr_data }}}

/!\ On va supprimer la partition principale, puis recréer une partition primary, EN METTANT COMME PREMIER SECTEUR CELUI QU ON A RÉCUPÉRÉ CI DESSUS. Pour le dernier secteur, laisser celui par défaut.

Surtout PAS de "Fsck & resize2fs"  pour  les Filesystem en XFS !!!! 

On "ouvre" les sous partitions du LV : 
kpartx -av /dev/vol_kvm/rfs2-ppr.grdf.fr_data


On fait un xfs_growfs sur le point de montage et non pas sur le driver directement !!
# mkdir -p /mnt/rfs2-ppr.grdf.fr_data
# mount /dev/mapper/vol_kvm-rfs2--ppr.grdf.fr_data1 /mnt/rfs2-ppr.grdf.fr_data
# xfs_growfs /mnt/rfs2-ppr.grdf.fr_data
# umount /opt/rfs2-ppr.grdf.fr_data


On "referme" les sous partitions du LV : 
kpartx -d /dev/vol_kvm/rfs2-ppr.grdf.fr_data

Il ne reste plus qu'à redémarrer la VM et vérifier que l'on ait bien la bonne taille


Extend LV sur Azure[modifier]

Ici le contexte est un peu différent. On a un LV qui prend toute la taille du VG, qui lui même prend toute la taille du PV.


Extend sur une partition (sdb1)[modifier]

Par défaut Azure créée une partition sda1 pour mettre l'OS. Une fois qu'on a étendu le disque dans Azure, on peut augmenter la partition et les PV / VG / LV sur la VM.

Création du LV à l'origine[modifier]

Disque de 10 Go créé dans Azure

[root@centos7 ~]# fdisk /dev/sdb (on lui met les 10 Go sur sdb1 avec type LVM linux)

[root@centos7 ~]# pvcreate /dev/sdb1

[root@centos7 ~]# vgcreate benvg /dev/sdb1

[root@centos7 ~]# lvcreate -l 100%FREE -n benlv benvg

[root@centos7 ~]# pvs
  PV         VG    Fmt  Attr PSize  PFree
  /dev/sdb1  benvg lvm2 a--  <10.00g    0

[root@centos7 ~]# vgs
  VG    #PV #LV #SN Attr   VSize  VFree
  benvg   1   1   0 wz--n- <10.00g    0

  
[root@centos7 ~]# lvs
  LV    VG    Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <10.00g
  

[root@centos7 ~]# mkfs.xfs /dev/mapper/benvg-benlv

[root@centos7 ~]# mount /dev/benvg/benlv /ben

[root@centos7 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/benvg-benlv   10G   33M   10G   1% /ben

Extend[modifier]

Dans Azure je passe la taille du disque de 10 Go à 15 Go

[root@centos7 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM


[root@centos7 ~]# partprobe


[root@centos7 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM


On démonte /ben

On va augmenter la taille de la partition sdb1 : fdisk /dev/sdb, suppression de la partition 1 et on la recréé


[root@centos7 /]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000af391

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    31457279    15727616   83  Linux


Lorsqu on fait un partprobe :

[root@centos7 /]# partprobe  /dev/sdb
^[[AError: Partition(s) 1 on /dev/sdb 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.


Il faut désactiver le LV :

[root@centos7 /]# lvchange -a n /dev/benvg/benlv

[root@centos7 /]# partprobe

!! on n a plus d erreur maintenant !!


[root@centos7 /]# pvresize -d -v /dev/sdb1
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "benvg" metadata (seqno 7).
    Resizing volume "/dev/sdb1" to 31455232 sectors.
    Resizing physical volume /dev/sdb1 from 2559 to 3839 extents.
    Updating physical volume "/dev/sdb1"
    Creating volume group backup "/etc/lvm/backup/benvg" (seqno 8).
  Physical volume "/dev/sdb1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

  
[root@centos7 /]# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/sdb1  benvg lvm2 a--  <15.00g 5.00g


[root@centos7 /]# lvchange -a y /dev/benvg/benlv


[root@centos7 /]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  benvg   1   1   0 wz--n- <15.00g 5.00g


[root@centos7 /]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <10.00g


[root@centos7 /]# lvextend -l +100%FREE /dev/benvg/benlv
  Size of logical volume benvg/benlv changed from <10.00 GiB (2559 extents) to <15.00 GiB (3839 extents).
  Logical volume benvg/benlv successfully resized.


!! Si on ne met pas l'option -r (resize file system, on va rester à 10 lorsqu on fera le mount)


[root@centos7 /]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <15.00g

[root@centos7 /]#  mount /dev/benvg/benlv /ben


[root@centos7 /]# df -h
/dev/mapper/benvg-benlv   10G   33M   10G   1% /ben

[root@centos7 /]# umount /ben

[root@centos7 /]# lvextend -r -l +100%FREE /dev/benvg/benlv
Phase 1 - find and verify superblock...
......
data blocks changed from 2620416 to 3931136


[root@centos7 /]#  mount /dev/benvg/benlv /ben


[root@centos7 /]# df -h
/dev/mapper/benvg-benlv   15G   33M   15G   1% /ben

Extend sur tout le disque (sdb)[modifier]

Lorsque le PV est fait directement sur le disque entier il y a moins de manipulation. Ici notre disque fait 15 Go (comme le pv, vg et le lv) et on le passe à 20 Go dans Azure.
Si l'on fait un fdisk ou parted et que le premier secteur est 0 c'est qu il n y pas de partition

Puis sur la vm on fait :

[root@centos7 /]# partprobe /dev/sdb

[root@centos7 /]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

[root@centos7 /]# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/sdb   benvg lvm2 a--  <15.00g    0


[root@centos7 /]# pvresize -d -v /dev/sdb
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "benvg" metadata (seqno 2).
    Resizing volume "/dev/sdb" to 41943040 sectors.
    Resizing physical volume /dev/sdb from 3839 to 5119 extents.
    Updating physical volume "/dev/sdb"
    Creating volume group backup "/etc/lvm/backup/benvg" (seqno 3).
  Physical volume "/dev/sdb" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized


[root@centos7 /]# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/sdb   benvg lvm2 a--  <20.00g 5.00g

[root@centos7 /]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  benvg   1   1   0 wz--n- <20.00g 5.00g


[root@centos7 /]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <15.00g

[root@centos7 /]# lvextend -r -l +100%FREE /dev/benvg/benlv

[root@centos7 /]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  benlv benvg -wi-a----- <20.00g

Extend d'un PV / VG et LV[modifier]

Ici le but est d'ajouter 40 Go dans un LV, pour se faire on ajoute un disque vde sur le PV

Ajout d'un disque sur le PV :
# pvcreate /dev/vde

Faire un pvscan pour s'assurer qu'on voit bien le disque vde dans le pvs

Ajout du PV dans le VG systemvm :
# vgextend systemvm /dev/vde

Maintenant que le VG systemvm a 40 Go de libre on peut ajouter les 40 Go dans le LV var_lib_mysql
#  lvextend -L +40G /dev/systemvm/var_lib_mysql

Puis un fait un efsck et un resize2fs sur le LV (on peut le faire directement sur le LV car il n'y a pas de partition dedans, sinon il aurait fallu faire un fdisk pour supprimer et recreer le partition, et faire le resize2fs apres)

# e2fsck -f /dev/systemvm/var_lib_mysql

# resize2fs /dev/systemvm/var_lib_mysql