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.sh Host adapter 0 (mptspi) found. Host adapter 1 (mptspi) found. Host adapter 2 (mptspi) found. Host adapter 3 (mptspi) found. Scanning SCSI subsystem for new devices Scanning host 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs Scanning 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: 02 Scanning 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: 02 Scanning 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: 02 Scanning 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: 02 Scanning host 1 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs Scanning 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: 02 Scanning 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: 02 Scanning 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: 02 open error: /dev/sg9 : No such file or directory Scanning 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: 02 Scanning host 2 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs Scanning 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: 02 Scanning 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: 02 Scanning host 3 channels 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs Scanning 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: 03 1 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/sdi No physical volume label read from /dev/sdi Physical volume "/dev/sdi" successfully created Volume group "notes01_vg" successfully extended |
-Vérifier la taille disponible sur le VG
[serveur] /root # vgs VG #PV #LV #SN Attr VSize VFree bin_vg 1 3 0 wz--n- 19.99G 240.00M data_vg 1 3 0 wz--n- 20.00G 9.51G notes01_vg 2 3 0 wz--n- 1.02T 60.01G notes02_vg 1 3 0 wz--n- 1023.99G 20.00M notes03_vg 1 3 0 wz--n- 680.00G 24.00M notes04_vg 1 3 0 wz--n- 1023.99G 121.02G root_vg 1 5 0 wz--n- 13.88G 3.84G root_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.sh Host adapter 0 (mptspi) found. Scanning SCSI subsystem for new devices Scanning host 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs Scanning 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: 02 Scanning 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: 02 Scanning 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: 02 Scanning 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: 02 Scanning for device 0 0 4 0 ... OLD: Host: scsi0 Channel: 00 Id: 04 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Scanning for device 0 0 5 0 ... OLD: Host: scsi0 Channel: 00 Id: 05 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Scanning for device 0 0 6 0 ... OLD: Host: scsi0 Channel: 00 Id: 06 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Scanning 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=8 Host adapter 0 (mptspi) found. Scanning SCSI subsystem for new devices Scanning host 0 for SCSI target IDs 8, LUNs 0 Scanning for device 0 0 8 0 ... OLD: NEW: Host: scsi0 Channel: 00 Id: 08 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 1 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/notes01 Cannot 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/lvdata mke2fs 1.39 (29-May-2006) Filesystem label= OS type : Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 131072 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 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/notes01 Filesystem 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 VFree notes01_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/notes01 Filesystem 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 start Starting 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_vg Couldn’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/sdc1 Couldn’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_vg Restored 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.