LVM Linux
De DocUnix.
Sommaire |
Physical Volumes
- pvscan :
Recherche les PVs sur tous les disques.
root@SpaceServer:/tmp> pvscan pvscan -- reading all physical volumes (this may take a while...) pvscan -- ACTIVE PV "/dev/cciss/c0d0p2" of VG "rootvg" [67.32 GB / 49.32 GB free] pvscan -- total: 1 [67.33 GB] / in use: 1 [67.33 GB] / in no VG: 0 [0]
- pvcreate :
Initialise le disque pour pouvoir être utilisé avec LVM. Si un PV existe déjà on peut utiliser -ff mais dans ce cas il faut être certain de ne pas écraser un disque utilisé ailleurs.
root@SpaceServer:/tmp> pvcreate /dev/emcpowerd pvcreate -- physical volume "/dev/emcpowerd" successfully created
- pvdisplay :
Affiche les informations sur un PV (VGs attachés, etc) :
root@SpaceServer:/> pvdisplay /dev/emcpowerf --- Physical volume --- PV Name /dev/emcpowerf VG Name vg_col1 PV Size 108.93 GB [228433792 secs] / NOT usable 32.19 MB [LVM: 141 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 3 PE Size (KByte) 32768 Total PE 3484 Free PE 0 Allocated PE 3484 PV UUID pmTDba-3lWV-8WEV-riwI-WkLG-odm3-1QoBpM
RAID Logiciel
Créer un volume raid
Récupérer les disk sur lesquels sont les metadevices (on peut récupérer les infos de ces commandes) :
mdadm --create /dev/md0 -l 1 --raid-devices=2 /dev/<part1_disk1> /dev/<part1_disk2> mdadm --create /dev/md1 -l 1 --raid-devices=2 /dev/<part2_disk1> /dev/<part2_disk2>
Dans le cas d'un cluster MCServiceGuard Dans le fichier /etc/cmcluster/conf/mdadm.conf rajouter :
DEVICE /dev/<part1_disk1> /dev/<part1_disk2> DEVICE /dev/<part2_disk1> /dev/<part2_disk2>
Hors cluster Dans le fichier /etc/mdadm.conf rajouter :
DEVICE /dev/<part1_disk1> /dev/<part1_disk2> DEVICE /dev/<part2_disk1> /dev/<part2_disk2>
Puis pour vérifier :
mdadm --examine --scan -c <PATH>/mdadm.conf ARRAY /dev/md0 level=raid1 num-devices=2 UUID=cdeabe60:356153ce:16bed617:874f97db devices=/dev/<part1_disk1>,/dev/<part1_disk2> ARRAY /dev/md1 level=raid1 num-devices=2 UUID=66458bd1:5bb9acd4:18503815:b36812b6 devices=/dev/<part2_disk1>,/dev/<part2_disk2>
Si tout est ok on peut écrire dans le fichier :
mdadm --examine --scan -c <PATH>/mdadm.conf >> <PATH>/mdadm.conf
Remplacer un disque défectueux
Changer le disque. Créer une partition sur le nouveau disque en type "fd" (Raid auto detect). Puis passer la commande :
mdadm --re-add /dev/mdx /dev/sdx1
Pour contrôler l'état du raid :
cat /proc/mdstat
Augmenter la taille du raid après changement des disques
Pour changer la taille, il faut déterminer la taille de la plus petite partition. Ensuite, il faut calculer la taille en KiloBytes -128 (pour le superblock). Une fois ce paramètre déterminer, il faut passer la commande :
mdadm --grow -z <taille en KB> /dev/mdx
Si on a vu trop large, le système indique qu'il n'a pas suffisamment de place sur le device.
Augmenter la taille du pv pour le lvm2
Une fois la taille du raid augmenté, il faut l'indiquer au lvm2 par la commande :
pvresize /dev/mdx
Volume Groups
- vgcreate :
Permet de créer un VG sur un disque initialisé avec pvcreate.
root@SpaceServer:/tmp> pvcreate /dev/emcpowerd pvcreate -- physical volume "/dev/emcpowerd" successfully created root@SpaceServer:/tmp> vgcreate vg_apps /dev/emcpowerd vgcreate -- INFO: using default physical extent size 32 MB vgcreate -- INFO: maximum logical volume size is 2 Terabyte vgcreate -- doing automatic backup of volume group "vg_apps" vgcreate -- volume group "vg_apps" successfully created and activated
- vgextend :
Permet d'ajouter un disque à un VG existant.
root@SpaceServer:/tmp> vgextend vg_apps /dev/emcpowera vgextend -- INFO: maximum logical volume size is 2 Terabyte vgextend -- doing automatic backup of volume group "vg_apps" vgextend -- volume group "vg_apps" successfully extended
- vgreduce :
Permet de retirer un disque à un VG.
root@SpaceServer:/tmp> vgreduce vg_apps /dev/emcpowera vgreduce -- doing automatic backup of volume group "vg_apps" vgreduce -- volume group "vg_apps" successfully reduced by physical volume: vgreduce -- /dev/emcpowera
- vgdisplay :
Affiche les infos sur un VG donné, notamment les disques sur lesquels il se trouve.
root@SpaceServer:/etc/postfix> vgdisplay -v vg_dex4 --- Volume group --- VG Name vg_dex4 VG Access read/write VG Status available/resizable VG # 4 MAX LV 256 Cur LV 9 Open LV 8 MAX LV Size 2 TB Max PV 256 Cur PV 1 Act PV 1 VG Size 54.41 GB PE Size 32 MB Total PE 1741 Alloc PE / Size 1193 / 37.28 GB Free PE / Size 548 / 17.12 GB VG UUID MQ2P2L-S4Qi-Ig8q-LYW1-0vJN-V4LJ-b2CXcK --- Logical volume --- truncated --- Physical volumes --- PV Name (#) /dev/emcpowerc (1) PV Status available / allocatable Total PE / Free PE 1741 / 548
- vgscan :
Recherche les VGs sur tous les disques et met à jour /etc/lvmtab.
root@SpaceServer:/tmp> vgscan vgscan -- reading all physical volumes (this may take a while...) vgscan -- found active volume group "rootvg" vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created vgscan -- WARNING: This program does not do a VGDA backup of your volume group
- vgchange :
Permet de changer les attributs d'un VG. En général on utilise vgchange -an rootvg pour désactiver un VG (on doit dans ce cas avoir démonté les FS) et vgchange -ay rootvg pour activer.
- vgremove :
Permet de supprimer un VG (on doit d'abord le désactiver).
vgremove vg_apps
- vgrename :
Permet de renommer un VG sans le désactiver. Attention à bien modifer /etc/fstab
vgrename vg_apps vg_appli
Logical Volumes
- lvcreate :
Permet de créer un LV sur un VG donné.
root@SpaceServer:/tmp> lvcreate -L 2G -n lv_test vg_apps lvcreate -- doing automatic backup of "vg_apps" lvcreate -- logical volume "/dev/vg_apps/lv_test" successfully created
- lvextend :
Permet d'augmenter la taille du LV. Umount d'abord du FS pour faire un fsck si necessaire. Il est possible d'ajouter le disque ou les disques cible en fin de ligne
root@SpaceServer:/tmp> lvextend -L +1G /dev/vg_apps/lv_test [/dev/dsk] lvextend -- extending logical volume "/dev/vg_apps/lv_test" to 3 GB lvextend -- doing automatic backup of volume group "vg_apps" lvextend -- logical volume "/dev/vg_apps/lv_test" successfully extended
- lvreduce :
Permet de réduire la taille du LV. Attention on réduit d'abord le FS et seulement ensuite on peut réduire le LV.
root@SpaceServer:/tmp> lvreduce -L -1G /dev/vg_apps/lv_test lvreduce -- WARNING: reducing active logical volume to 2 GB lvreduce -- THIS MAY DESTROY YOUR DATA (filesystem etc.) lvreduce -- do you really want to reduce "/dev/vg_apps/lv_test"? [y/n]: y lvreduce -- doing automatic backup of volume group "vg_apps" lvreduce -- logical volume "/dev/vg_apps/lv_test" successfully reduced
- lvdisplay :
Affiche les différentes infos sur le LV. Utilisez -v pour avoir plus d'infos.
root@SpaceServer:/tmp> lvdisplay /dev/vg_apps/lv_test --- Logical volume --- LV Name /dev/vg_apps/lv_test VG Name vg_apps LV Write Access read/write LV Status available LV # 1 # open 0 LV Size 2 GB Current LE 64 Allocated LE 64 Allocation next free Read ahead sectors 1024 Block device 58:9
- lvremove :
Permet de supprimer un LV.
root@SpaceServer:/tmp> lvremove /dev/vg_apps/lv_test lvremove -- do you really want to remove "/dev/vg_apps/lv_test"? [y/n]: y lvremove -- doing automatic backup of volume group "vg_apps" lvremove -- logical volume "/dev/vg_apps/lv_test" successfully removed
Filesystems
- extendfs :
peut se faire à chaud, mais pas systématiquement; Après avoir étendu le lv :
resize2fs /dev/vg_name/lv_name
Soit sous Red-hat avec la commande suivante après avoir étendu le lv :
ext2online /dev/vg_name/lv_name
Testé sur Gentoo, après l'extension du lv, lors de la tentative d'extension du fs, la commande a répondue :
resize2fs /dev/vg_name/lv_name resize2fs 1.41.9 (22-Aug-2009) SVP exécutez « e2fsck -f /dev/vg_name/lv_name » d'abord.
Ce qui oblige de travailler sur un fs démonté. CQFD.
La meme operation le 22 Avril 2011 sur une gentoo a jour, la commande est passée à chaud.
La meme operation le 8 février 2012 sur une gentoo a jour, la commande est passée à froid :-(
Pour info, extension de 100GO d'un fs de 500, prend environs 15 minutes sur 4 disques de 500 GO SATA 1 en RAID 5.
Pour info, extension de 200GO d'un fs de 600, prend environs 10 minutes sur 4 disques de 1 TO SATA II en RAID 5.
- shrink fs
Cette opération a été validée sur une Gentoo kernel 3.2.1 r2 et resize2fs 1.41.14.
ATTENTION : Cette opération ne peut se faire que filesystem démonté.
On commence par démonter le filesystem, puis il faut passer un e2fsk
Pour diminuer la taille d'un fs passer la commande resize2fs en spécifiant la taille souhaitée en méga (M) ou Giga (G). L'operation prend un certain temps.
Attention, cela peut ne pas fonctionner si des fichiers se trouvent en bout de fs.
Ensuite, il faudra diminuer la taille du lv associé en veillant bien de spécifier la taille exacte du filesystem.
umount /dev/vg_name/lv_name e2fsck /dev/vg_name/lv_name en méga : resize2fs /dev/vg_name/lv_name xxM en Giga : resize2fs /dev/vg_name/lv_name xxG
Ensuite diminuez la taille du lv, c.f. paragraphe/reducelv.
Pensez a remonter le fs en fin d'operation ;-)
Baie Pillar sur fibre
Découverte des disques :
find /sys/devices -name rescan | while read x; do echo 1 >$x; done
ou avec le paquet hp "fibreutils" :
/opt/hp/hp_fibreutils/hp_rescan
ou en mode plutôt brutal pour chaque carte fibre (x):
echo 1 > /sys/class/fc_host/hostx/issue_lip echo - - - >/sys/class/scsi_host/hostx/scan
Etat des lieux des disques
multipath -ll
et pour l'inventaire des devices scsi :
lsscsi
Nettoyage des anciens disques supprimés
find /sys/devices -name delete | grep :0/delete | while read x ; do echo 1 >$x ; done

