Dernière mise à jour : 30/04/2009
J'avais touché LVM de près lors de l'article sur la virtualisation mais j'ai décidé de faire un petit guide vite ficelé pour ceux qui en veulent (et aussi à titre de pense-bête). Donc le tout a été réalisé sur Linux, principalement des Debian et CentOS, les commandes étant quasimment identiques.
Commencez donc par installer lvm2 puis lancez vous dans le vif du sujet. Notre exemple ici concerne le disque sdb qui est une partition RAID matérielle. J'ai configuré un RAID10 de 1.5To. Il suffit ensuite de créer une partition au sein de ce disque avec le bon type de système de fichier (8e) :
# fdisk -l /dev/sdb Disk /dev/sdb: 1500.0 GB, 1500015230976 bytes 255 heads, 63 sectors/track, 182366 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 180000 1445849968+ 8e Linux LVM
Nous pouvons à présent créer un volume physique en déclarant notre disque physique. Puis nous assignons un volume virtuel que nous nommons vg1.
pvcreate /dev/sdb1 vgcreate vg1-lv1 /dev/sdb1 lvcreate -L1.5T vg1-lv1 # pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name vg1 PV Size 1.35 TB / not usable 354.87 GB Allocatable yes PE Size (KByte) 4096 Total PE 352990 Free PE 12202 Allocated PE 340788 PV UUID dUs1oy-q7u3-6iUl-11Bs-rAff-cZXQ-fT6nib # vgdisplay --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 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 1.35 TB PE Size 4.00 MB Total PE 352990 Alloc PE / Size 340788 / 1.30 TB Free PE / Size 12202 / 47.66 GB VG UUID 4NjYKd-jTSZ-3mk0-0tsk-5Lx1-2u6Y-OcNJ9b # lvdisplay --- Logical volume --- LV Name /dev/vg1/lv1 VG Name vg1 LV UUID y6Vc0P-7bS1-Puc0-NVVE-TnsX-hYnJ-7bT3eJ LV Write Access read/write LV Status available # open 1 LV Size 1.30 TB Current LE 340788 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Etendre un volume et ajouter de l'espace
Nous arrivons à une problématique commune : plus de place. Pour ce faire, j'ai donc ajouté un nouveau volume physique en /dev/sdc. Je commence par partionner et créer un /dev/sdc1 qui est de type 8e comme son prédécesseur. Et je la formate par la suite :
# fdisk -l /dev/sdc Disk /dev/sdc: 1000.1 GB, 1000144371712 bytes 255 heads, 63 sectors/track, 121593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table # fdisk /dev/sdc Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-121593, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-121593, default 121593): Using default value 121593 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdc: 1000.1 GB, 1000144371712 bytes 255 heads, 63 sectors/track, 121593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 121593 976695741 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Il ne reste plus qu'a créer le volume physique et a l'ajouter au volume existant :
# pvcreate /dev/sdc1 # vgextend vg1 /dev/sdc1 Volume group "vg1" successfully extended # pvdisplay /dev/sdc1 "/dev/sdc1" is a new physical volume of "931.45 GB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 931.45 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 4Jn40U-RHrh-2iBi-NHSP-BEZb-Q5aA-I5WZ21 # vgdisplay --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 2.26 TB PE Size 4.00 MB Total PE 591441 Alloc PE / Size 340788 / 1.30 TB Free PE / Size 250653 / 979.11 GB VG UUID 4NjYKd-jTSZ-3mk0-0tsk-5Lx1-2u6Y-OcNJ9b
Ici vous remarquez que bien que la VG Size soit bonne (2.26 TB), la taille d'allocation n'est pas bonne (1.30TB). Il faut ensuite etendre le volume logique (bien que pas nécessaire, je conseille un démontage du système de fichiers) :
# umount /mnt/backup # lvextend -L2310G /dev/vg1/lv1 Extending logical volume lv1 to 2.26 TB Logical volume lv1 successfully resized # lvdisplay --- Logical volume --- LV Name /dev/vg1/lv1 VG Name vg1 LV UUID y6Vc0P-7bS1-Puc0-NVVE-TnsX-hYnJ-7bT3eJ LV Write Access read/write LV Status available # open 0 LV Size 2.26 TB Current LE 591360 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Nous devons alors vérifier le système de fichiers puis l'étendre (encore une fois, soyez sur d'avoir démonté la partition) :
# e2fsck -f /dev/mapper/vg1-lv1 Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/vg1-lv1: 9129100/174489600 files (0.7% non-contiguous), 263769980/348966912 blocks # resize2fs /dev/mapper/vg1-lv1 resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/mapper/vg1-lv1 to 605552640 (4k) blocks. The filesystem on /dev/mapper/vg1-lv1 is now 605552640 blocks long. # mount /dev/mapper/vg1-lv1 # df -h /dev/mapper/vg1-lv1 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg1-lv1 2.3T 986G 1.2T 46% /mnt/backup
Et voilà, ceci termine une approche de LVM avec extension et ajout d'un disque puis de l'espace. N'hésitez pas à écrire sur le forum ou m'envoyer un mail si vous avez des commentaires.