Préambule
Information sur les abréviations :
LVM = Logical Volume Manager, désigne la couche logicielle permettant de gérer les VG et les LV
PV = Physical Volume, désigne la partition sur le disque physique
VG = Volume Groupe , désigne la couche en dessous des PV, peut en contenir un ou plusieurs
LV = Logical Volume, correspond à la « partition » dans un disque dur pour un VG, contient le FS
FS = Filesystem, Conteneur des données, sous linux c’est du ext3 pour les redhat 5.x et du ext4 pour les 6.x, correspond à NTFS/FAT sous windows.
Ajout d’un disque dans un VG
On vérifie la liste des disques de manière synthétique en utilisant le listing scsi.
[serveur]/root# lsscsi[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb[0:0:2:0] disk VMware Virtual disk 1.0 /dev/sdc[0:0:3:0] disk VMware Virtual disk 1.0 /dev/sdd[1:0:0:0] disk VMware Virtual disk 1.0 /dev/sde[1:0:1:0] disk VMware Virtual disk 1.0 /dev/sdf[1:0:2:0] disk VMware Virtual disk 1.0 /dev/sdg[1:0:3:0] disk VMware Virtual disk 1.0 /dev/sdh |
-Rescan des disques.
[serveur]/root# rescan-scsi-bus.shHost adapter 0 (mptspi) found.Host adapter 1 (mptspi) found.Host adapter 2 (mptspi) found.Host adapter 3 (mptspi) found.Scanning SCSI subsystem for new devicesScanning host 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNsScanning for device 0 0 0 0 ...OLD: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 1 0 ...OLD: Host: scsi0 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 2 0 ...OLD: Host: scsi0 Channel: 00 Id: 02 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 3 0 ...OLD: Host: scsi0 Channel: 00 Id: 03 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning host 1 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNsScanning for device 1 0 0 0 ...OLD: Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 1 0 1 0 ...OLD: Host: scsi1 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 1 0 2 0 ...NEW: Host: scsi1 Channel: 00 Id: 02 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02open error: /dev/sg9: No such file or directoryScanning for device 1 0 2 0 ...OLD: Host: scsi1 Channel: 00 Id: 02 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning host 2 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNsScanning for device 2 0 0 0 ...OLD: Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning for device 2 0 1 0 ...OLD: Host: scsi2 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Scanning host 3 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNsScanning for device 3 0 0 0 ...OLD: Host: scsi3 Channel: 00 Id: 00 Lun: 00 Vendor: HP Model: Ultrium 3-SCSI Rev: R210 Type: Sequential-Access ANSI SCSI revision: 031 new device(s) found.0 device(s) removed. |
-Vérification de la présence du nouveau disque, on voit que le sdi est apparu.
[serveur]/root# lsscsi[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb[0:0:2:0] disk VMware Virtual disk 1.0 /dev/sdc[0:0:3:0] disk VMware Virtual disk 1.0 /dev/sdd[1:0:0:0] disk VMware Virtual disk 1.0 /dev/sde[1:0:1:0] disk VMware Virtual disk 1.0 /dev/sdf[1:0:2:0] disk VMware Virtual disk 1.0 /dev/sdg[1:0:3:0] disk VMware Virtual disk 1.0 /dev/sdh[1:0:3:0] disk VMware Virtual disk 1.0 /dev/sdi |
-On s'assure qu'il n'est pas déjà utilisé :
[root@serveur ~]# pvs |grep sdi |
-Augmenter le VG avec le disque nouvellement ajouté :
[serveur]/root# vgextend notes01_vg /dev/sdiNo physical volume label read from /dev/sdiPhysical volume "/dev/sdi" successfully createdVolume group "notes01_vg" successfully extended |
-Vérifier la taille disponible sur le VG
[serveur]/root# vgsVG #PV #LV #SN Attr VSize VFreebin_vg 1 3 0 wz--n- 19.99G 240.00Mdata_vg 1 3 0 wz--n- 20.00G 9.51Gnotes01_vg 2 3 0 wz--n- 1.02T 60.01Gnotes02_vg 1 3 0 wz--n- 1023.99G 20.00Mnotes03_vg 1 3 0 wz--n- 680.00G 24.00Mnotes04_vg 1 3 0 wz--n- 1023.99G 121.02Groot_vg 1 5 0 wz--n- 13.88G 3.84Groot_vg_alt 1 5 0 wz--n- 13.88G 3.84G |
-Cas du rescan qui ne passe pas
[root@serveur ~]# lsscsi[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb[0:0:2:0] disk VMware Virtual disk 1.0 /dev/sdc[0:0:3:0] disk VMware Virtual disk 1.0 /dev/sdd[0:0:4:0] disk VMware Virtual disk 1.0 /dev/sde[0:0:5:0] disk VMware Virtual disk 1.0 /dev/sdf[0:0:6:0] disk VMware Virtual disk 1.0 /dev/sdg[root@serveur ~]# rescan-scsi-bus.shHost adapter 0 (mptspi) found.Scanning SCSI subsystem for new devicesScanning host 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNsScanning for device 0 0 0 0 ...OLD: Host: scsi0 Channel: 00 Id: 00 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 1 0 ...OLD: Host: scsi0 Channel: 00 Id: 01 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 2 0 ...OLD: Host: scsi0 Channel: 00 Id: 02 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 3 0 ...OLD: Host: scsi0 Channel: 00 Id: 03 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 4 0 ...OLD: Host: scsi0 Channel: 00 Id: 04 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 5 0 ...OLD: Host: scsi0 Channel: 00 Id: 05 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 6 0 ...OLD: Host: scsi0 Channel: 00 Id: 06 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 02Scanning for device 0 0 7 0 ...OLD:NEW:0 new device(s) found.0 device(s) removed. |
Ici pas de nouveaux device trouvés, mais on peux tester cette commande (dans cet exemple, l'id 7 n'ajoute rien, j'ai donc fait l'id 8 : se référer au scan précédent pour voir les id existantes) :
[root@serveur ~]# rescan-scsi-bus.sh --hosts=0 --luns=0 --ids=8Host adapter 0 (mptspi) found.Scanning SCSI subsystem for new devicesScanning host 0 for SCSI target IDs 8, LUNs 0Scanning for device 0 0 8 0 ...OLD:NEW: Host: scsi0 Channel: 00 Id: 08 Lun: 00Vendor: VMware Model: Virtual disk Rev: 1.0Type: Direct-Access ANSI SCSI revision: 021 new device(s) found.0 device(s) removed. |
Si ne nouveau disque n'est toujours pas identifié, réaliser le scan via scsi_host
echo "- - -" > /sys/class/scsi_host/$(grep mpt /sys/class/scsi_host/host?/proc_name | awk -F "/" '{print $5}')/scan |
On rescanne les devices et on voie que le device /dev/sdh s'est ajouté
[root@serveur ~]# lsscsi[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb[0:0:2:0] disk VMware Virtual disk 1.0 /dev/sdc[0:0:3:0] disk VMware Virtual disk 1.0 /dev/sdd[0:0:4:0] disk VMware Virtual disk 1.0 /dev/sde[0:0:5:0] disk VMware Virtual disk 1.0 /dev/sdf[0:0:6:0] disk VMware Virtual disk 1.0 /dev/sdg[0:0:8:0] disk VMware Virtual disk 1.0 /dev/sdh |
On peut du coup continuer les actions classiques.
Créer un filesystem avec son volume logique associé
-Vérification de la présence et du montage du FS.
[serveur]/root# df -k /srv/domino/notes01Cannot find file system /srv/domino/notes01 |
-Créer le LV dans le VG notes01.
[serveur]/root# lvcreate -n lvdata01 -L 1000G notes01 Logical volume "lvdata01" created |
-Vérification de la création du LV.
[serveur]/root# lvs |grep lvdata01 lvdata01 notes01_vg -wi-ao 1013.89G |
-Formater le LV.
[serveur]/root# mkfs -t ext3 /dev/notes01/lvdatamke2fs 1.39 (29-May-2006)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)131072 inodes, 262144 blocks13107 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2684354568 block groups32768 blocks per group, 32768 fragments per group16384 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376Writing inode tables: doneCreating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 38 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override. |
-Ajouter le point de montage dans la fstab pour obtenir ceci.
[serveur]/root# cat /etc/fstab | grep lvdata01/dev/notes01_vg/lvdata01 /srv/domino/notes01 ext3 noatime 1 2 |
-Monter la partition sur le dossier puis vérification du point de montage (nécessite la présence du dossier cible de montage).
[serveur]/root# mount /srv/domino/notes01[serveur]/root# df -h /srv/domino/notes01Filesystem Size Used Avail Use% Mounted on/dev/mapper/notes01_vg-lvdata01 999G 99G 900G 5% /srv/domino/notes01 |
Augmenter un LV.
Nous allons ici augmenter le LV lvdata01 qui est dans le VG notes01 (cas EXT4) et passer le LV lv_appli_ssie à 100 Go (fixer une taille définie) (cas XFS)
-Cette étape nécessite de l’espace libre sur le VG. Si pas d’espace libre, il faudra appliquer le chapitre Ajout d’un disque dans un VG. (cas EXT4)
[serveur]/root# vgs | egrep (notes01|VG)VG #PV #LV #SN Attr VSize VFreenotes01_vg 2 3 0 wz--n- 1.02T 60.01G |
-Prendre les références du VG et du FS à augmenter. (cas EXT4)
[serveur]/root# df –k /srv/domino/notes01Filesystem 1K-blocks Used Available Use% Mounted on/dev/notes01/lvdata 01984840164 665094304 309743552 69% /srv/domino/notes01 |
-Étendre le LV - Deux exemples : A gauche via un ajout de 60G (d'où le +) et a droite sous xfs via un resize global à 100G (Attention donc d'être en dessous des 100 à l'origine)
|
|
-Appliquer l’extension au niveau FileSystem (seule l’enveloppe a été augmentée jusqu’à présent).
|
|
-Vérifier que l’opération a abouti.
|
|
NB : lvresize a une option "-r" qui permet de « tout » faire pour vous et qui est documentée pour redhat 6.x. Cela fonctionne également sur la redhat 5.x :
(non vérifié pour XFS)
[serveur]/root# lvresize -r -L +60G /dev/notes01_vg/lvdata01 |
Reconstruction d’un VG puis LV à partir d’un fichier de backup LVM et disque vide.
Ce type de manipulation nous est surtout utile lors de la reconstruction d’un serveur qui aurait perdu le « data_vg » ou autre VG non recréé automatiquement.
-Le principe.
A chaque opération faite sous LVM, des fichiers de backup de la conf actuelle et un historique sont stockés dans /etc/LVM/Ces fichiers se basent sur les UUID des PV pour recréer les VG, or, les disques n’étant plus les mêmes, il faut recréer les UUID. Les UUID sont des identifiants uniques attribués à un disque (dans notre cas) qui permettent, dans le cas de LVM, de s’affranchir de l’utilisation de l’appellation /dev/sd* (appellation pouvant changer selon la position du disque dans la machine)
-Recréer la/les partitions utilisées dans le VG.
Ici, nous n’aurons qu’une seule partition à recréer , la sdc1Se référer à la section Vérification de la présence du nouveau disque.
-Se faciliter la vie
Normalement, vous aurez à faire ça en console vmware donc pas de souris pour copier/coller, hors les uuid sont long…très long…on va donc activer la souris.
[serveur]/root# /etc/init.d/gpm startStarting console mouse services : [ ok] |
-Identifier les informations pour la restauration.On va utiliser la commande vgcfgrestore pour cela, en spécifiant le nom du VG (ici data_vg) à restaurer. Il va nous indiquer qu’il ne trouve pas un device, on va donc récupérer l’UUID de ce device.
[serveur]/root# vgcfgrestore data_vgCouldn’t find device with uuid GDxShe-oTtL-1d2I-mphF-OG1C-xmuC-Hu8BbN.Cannot restore Volume Group data_vg with 1 PVs marked as missing.Restore failed. |
Autre solution pour récupérer les uuid : regarder dans les backup dans /etc/lvm/backup :
[serveur]/root# cat /etc/lvm/backup/data_vg |grep -A2 pv max_pv = 0 metadata_copies = 0 pv0 { id = "GDxShe-oTtL-1d2I-mphF-OG1C-xmuC-Hu8BbN" device = "/dev/sdc2" # Hint only "pv0", 0 ] } "pv0", 2048 ] } "pv0", 2298 ] } |
-Recréation du PV. Maintenant qu’on a le bon UUID, on peut recréer le PV avec pvcreate et en spécifiant le fichier de backup de LVM et la partition de destination.
[serveur]/root# pvcreate –uuid GDxShe-oTtL-1d2I-mphF-OG1C-xmuC-Hu8BbN dev/sdc1Couldn’t find device with uuid GDxShe-oTtL-1d2I-mphF-OG1C-xmuC-Hu8BbN.Physical volume “/dev/sdc1” successfully created |
-Recréation des VG/LV. Maintenant qu’on a l’enveloppe pour le VG, on le recrée, ainsi que tous les LV en dessous :
[serveur]/root# vgcfgrestore data_vgRestored volume group data_vg |
-Reformatage des partitions pour l’exploitation/!\ Attention, avec cette commande, vous formatez TOUTES les partitions du VG ! /!\/!\ Le mkfs.ext3 est à adapter en mkfs.ext4 si besoin. /!\
[serveur]/root# for i in /dev/data_vg/*;do echo $i;done/dev/data_vg/lv_app/dev/data_vg/lvlego/dev/data_vg/lvlogiciels[serveur]/root#for i in /dev/data_vg/*;do mkfs.ext3 $i;done(pas de retour car pas de serveur pour le faire) |
-Pensez à adapter/vérifier la fstab et les points de montage et montez tout.