Les deux révisions précédentes Révision précédente | |
informatique:systeme:matos:lvm [2021/10/29 16:18] – [Réduire un LV] bn8 | informatique:systeme:matos:lvm [2022/10/28 14:51] (Version actuelle) – [Réduire un PV] bn8 |
---|
* **[size] :** la nouvelle taille du //PV// (exemple : //30G//) | * **[size] :** la nouvelle taille du //PV// (exemple : //30G//) |
* **[device]] :** le //block-device// correspondant au //PV// | * **[device]] :** le //block-device// correspondant au //PV// |
* Si votre //PV// est une partition et que vous souhaitez le //block-device// sous cette partition, il faudra également réduire cette partition. Il est conseillé de réduire cette partition également plus que nécessaire et de l'étendre au maximum une fois la réduction effectuez. Prévoyez cependant un peu plus que la taille à laquelle vous avez réduit votre //PV//. Une fois cette taille déterminer, il vous faut supprimer la partition et la récréer à l'identique exceptée sa taille. Pour cela vous pouvez utiliser la commande //fdisk//. Une fois la taille de la nouvelle partition définie, il faudra rebooter la machine pour que cette modification soit prise en compte. | * Si votre //PV// est une partition et que vous souhaitez le //block-device// sous cette partition, il faudra également réduire cette partition. Il est conseillé de réduire cette partition également plus que nécessaire et de l'étendre au maximum une fois la réduction effectuez. Prévoyez cependant un peu plus que la taille à laquelle vous avez réduit votre //PV//. Une fois cette taille déterminée, il vous faut supprimer la partition et la récréer à l'identique exceptée sa taille. Pour cela vous pouvez utiliser la commande //fdisk//. Une fois la taille de la nouvelle partition définie, il faudra rebooter la machine pour que cette modification soit prise en compte. |
* Si vous devez réduire physiquement la taille du disque (cas du disque d'une machine virtuelle par exemple), c'est ici qu'il faut le faire, machiné éteinte. | * Si vous devez réduire physiquement la taille du disque (cas du disque d'une machine virtuelle par exemple), c'est ici qu'il faut le faire, machiné éteinte. |
* Si votre //PV// est une partition et que vous l'avez réduit précédemment plus que nécessaire, il faut maintenant l'agrandir au maximum offert par le //block-device//. Pour cela supprimer et recréer à nouveau la partition avec //fdisk// et rebooter la machine pour prendre en compte la modification | * Si votre //PV// est une partition et que vous l'avez réduit précédemment plus que nécessaire, il faut maintenant l'agrandir au maximum offert par le //block-device//. Pour cela supprimer et recréer à nouveau la partition avec //fdisk// et rebooter la machine pour prendre en compte la modification |
* Redimensionner ensuite le //PV// à la taille du //block-device// : <code>pvresize [device]</code> | * Redimensionner ensuite le //PV// à la taille du //block-device// : <code>pvresize [device]</code> |
| |
| <note tip>Il est possible d'avoir une erreur lors du `pvresize` initial du type ''/dev/vdc: cannot resize to 230399 extents as later ones are allocated''. Cela vient du fait que les LV ont été taillés en plusieurs fois et donc des segments des LV sont un peu partout sur le disque, or, il faudrait qu'il soit tous au début de la partition pour pouvoir réduire le PV. Pour cela : |
| |
| Commencer par lister les segments des LV : <code bash># pvs -v --segments /dev/vdc |
| PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 0 153600 var 0 linear /dev/vdc:0-153599 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 153600 153600 0 free |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 307200 2560 log 0 linear /dev/vdc:307200-309759 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 309760 25600 var 153600 linear /dev/vdc:309760-335359 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 335360 25600 0 free |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 360960 25600 var 179200 linear /dev/vdc:360960-386559 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 386560 25599 0 free</code> |
| |
| On voit ici que le LV `var` est divisé en trois segments et que l'on a plusieurs espaces libres dans le PV. Il faut alors déplacer les segments au début du disque dans un espace libre, tant qu'à faire de manière contiguë avec un autre segment du même LV (et dans le bon ordre, cf. champ //Start// du LV = la seconde colonne portant ce nom). Ici, on va donc commencer par déplacer le second segment dans l'espace libre juste après le premier segment. La commande pour cela est : |
| <code bash>pvmove --alloc anywhere [PE Ranges du segment à déplacer] [PV]:[Start de emplacement libre]+[SSize du segment à déplacer]</code> |
| |
| et donc ici : |
| <code bash># pvmove --alloc anywhere /dev/vdc:309760-335359 /dev/vdc:153600+25600 |
| /dev/vdc: Moved: 0,01% |
| /dev/vdc: Moved: 3,98% |
| [...] |
| /dev/vdc: Moved: 97,44% |
| /dev/vdc: Moved: 100,00% |
| </code> |
| |
| On affiche à nouveau les segments : |
| <code bash> |
| # pvs -v --segments /dev/vdc |
| PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 0 179200 var 0 linear /dev/vdc:0-179199 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 179200 128000 0 free |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 307200 2560 log 0 linear /dev/vdc:307200-309759 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 309760 51200 0 free |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 360960 25600 var 179200 linear /dev/vdc:360960-386559 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 386560 25599 0 free |
| </code> |
| |
| On va pouvoir maintenant déplacer le dernier segment à la suite des deux autres déjà réunis : |
| <code bash> |
| # pvmove --alloc anywhere /dev/vdc:360960-386559 /dev/vdc:179200+25600 |
| /dev/vdc: Moved: 0,02% |
| /dev/vdc: Moved: 3,17% |
| [...] |
| /dev/vdc: Moved: 100,00% |
| </code> |
| On affiche à nouveau les segments : |
| <code bash> |
| # pvs -v --segments /dev/vdc |
| PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 0 204800 var 0 linear /dev/vdc:0-204799 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 204800 102400 0 free |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 307200 2560 log 0 linear /dev/vdc:307200-309759 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 309760 102399 0 free |
| </code> |
| |
| Pour finir, on déplace maintenant le LV `log` juste après le LV `var` : |
| <code bash> |
| # pvmove --alloc anywhere /dev/vdc:307200-309759 /dev/vdc:204800+2560 |
| /dev/vdc: Moved: 1,17% |
| /dev/vdc: Moved: 36,02% |
| /dev/vdc: Moved: 66,48% |
| /dev/vdc: Moved: 100,00% |
| </code> |
| |
| On affiche à nouveau les segments : |
| <code bash> |
| # pvs -v --segments /dev/vdc |
| PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 0 204800 var 0 linear /dev/vdc:0-204799 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 204800 2560 log 0 linear /dev/vdc:204800-207359 |
| /dev/vdc vg_ssd lvm2 a-- 1,57t <800,00g 207360 204799 0 free |
| </code> |
| |
| Les LVs sont maintenant au début du PV et on va maintenant être en mesure de faire notre `pvresize`. |
| </note> |
==== Réduire un LV ==== | ==== Réduire un LV ==== |
Pour un système de fichiers EXT3/EXT4 : | Pour un système de fichiers EXT3/EXT4 : |