Creer un nouveau volume…
# lvm lvm> pvs PV VG Fmt Attr PSize PFree /dev/hda2 mainvol lvm2 a- 140,16G 131,16G lvm> lvs LV VG Attr LSize Origin Snap% Move Log Copy% main mainvol -wi-ao 8,00G main_swap mainvol -wi-ao 1,00G lvm>
Creons un disk de 10G:
lvm> lvcreate -L 10G -n debtest-root mainvol Logical volume "debtest-root" created
Pour le swap:
lvm> lvcreate -L 512M -n debtest-swap mainvol Logical volume "debtest-swap" created
lvm> lvs LV VG Attr LSize Origin Snap% Move Log Copy% debtest-root mainvol -wi-a- 10,00G debtest-swap mainvol -wi-a- 512,00M main mainvol -wi-ao 8,00G main_swap mainvol -wi-ao 1,00G
Ok.
# lvm lvm> lvcreate -L 6G -n win2k mainvol Logical volume "win2k" created lvm> lvs LV VG Attr LSize Origin Snap% Move Log Copy% debtest-root mainvol -wi-a- 10,00G debtest-swap mainvol -wi-a- 512,00M hostlvm-disk mainvol -wi-a- 2,00G hostlvm-swap mainvol -wi-a- 1,00G main mainvol -wi-ao 8,00G main_swap mainvol -wi-ao 1,00G win2k mainvol -wi-a- 6,00G lvm> quit Exiting.Ou est le nouveau disk ?
# ls /dev/mainvol/win2k /dev/mainvol/win2k
On veut redimenssionner le disk principale, et c'est impossible tant qu'on est dessus.
Donc, booter sur un live-cd, genre Kubuntu (le cd gparted est pas complet):
Installer le support ”lvm” si necessaire ! :
# lvm bash: lvm: command not found
C'est donc necessaire:
# apt-get update # apt-get install lvm2
Ensuite, si la commande ”lvm” revoit encore une autre erreur, alors essayez:
# /etc/init.d/lvm start
Ok ! La command ”lvs” doit fonctionner et monter les volumes logiques.
Augmenter de 7G le disk en ”/dev/mainvol/main” :
# lvresize -L +7G mainvol/main
Forcer une verification du systeme de fichiers:
# e2fsck -f /dev/mainvol/main
Redimensionner le système de fichiers:
# resize2fs /dev/mainvol/main
C'est bon. On peut rebooter sur (ou remounter le) disk.
Supprimer un volume logique, par exemple ”win2k”:
# lvremove mainvol/win2k Do you really want to remove active logical volume "win2k"? [y/n]: y Logical volume "win2k" successfully removed
Voila qu'une partition s'agrandie, mais le “volume physique” n'est plus a la bonne taille !
Disk /dev/sda: 145.9 GB, 145999527936 bytes 255 heads, 63 sectors/track, 17750 cylinders, total 285155328 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 254405339 126953662+ 8e Linux LVM
Attention: il y a besoin de “rebooter” a un certain moment !
On agrandi la partition, en la supprimant d'abord, puis en la récreant a l'identique, mais plus grande !
Disk /dev/sda: 145.9 GB, 145999527936 bytes 255 heads, 63 sectors/track, 17750 cylinders, total 285155328 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 285155327 142328656+ 83 Linux
Au passage: on se rend compte que j'ai omis de remettre le type “Linux LVM”, grave erreur qui pourtant sera sans incidence !
(Je corrige de ce pas…)
WARNING: Re-reading the partition table failed with error 16: Périphérique ou ressource occupé. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
Donc, il faut rebooter !
Aprés reboot:
# lvm
le volume physique est toujours comme ça:
lvm> pvs PV VG Fmt Attr PSize PFree /dev/sda2 mainvol lvm2 a- 121,07G 85,91G
le volume group est comme ca:
lvm> vgs VG #PV #LV #SN Attr VSize VFree mainvol 1 5 0 wz--n- 121,07G 85,91G
lvm>
Mettre en adéquation la taille réelle du disk avec “lvm”:
lvm> pvresize /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
Et voila, le volume physique occupe bien toute la partition:
lvm> pvs PV VG Fmt Attr PSize PFree /dev/sda2 mainvol lvm2 a- 135,73G 100,57G
Le volume logique aussi grandi:
lvm> vgs VG #PV #LV #SN Attr VSize VFree mainvol 1 5 0 wz--n- 135,73G 100,57G lvm>
C'est chouette.
reduire, sans perte de données… dumoins, j'espère !
Booter sur un live-cd , ou umount la partition en question.
Verifier (obligatoire):
# e2fsck -f /dev/vg0/partition
D'abord, reduire le systeme de fichiers , (a 10G par exemple):
# resize2fs /dev/vg0/partition 10G
Puis, reduire le volume logique LVM (a la même taille):
# lvreduce -L 10G /dev/vg0/partition
Pour ma part, je termine avec un dernier:
# e2fsck -f /dev/vg0/partition
qui curieusement m'a corrigé des trucs…
C'est fini, les données devraient être encore là.
Lien: http://linux-attitude.fr/post/Les-Vauriens-M-admirent
Faire une photographie d'un volume LVM, pour au moins 2 bonnes raisons:
Faire un “snapshot”:
Syntaxe:
# lvcreate -s -L <SIZE> -n <SNAPSHOT_VOLUME_NAME> <LVM_DEVICE>
Exemple:
# lvcreate -s -L 1G -n gallery_backup /dev/vgraid1/gallery
La photographie de ”/dev/vgraid1/gallery” est créé en ”/dev/vgraid1/gallery_backup”.
”<SIZE>” definie la taille a reserver pour stocker toutes les modifications qui se produiront pendant le temps du “snapshot”.
A definir selon la taille du disque original, et de son activité supposé durant ce laps de temps.
Pour supprimer le snapshot: lvremove …
Effectuer une copie vers un autre serveur…
pour une machine virtuelle sous Xen par exemple.
Prendre la taille de la partition d'origine:
(source)# lvs --units k LV VG Attr LSize Origin Snap% Move Log Copy% ... w2k boko -wi-ao 15376384,00K
Recreer sur l'autre:
(dest)# lvcreate -L 15376384k -n w2k volgroup
( Arret machine virtuelle )
Envoi de la partition sur l'autre:
On prépare la reception sur la destination:
(dest) # nc -lp 32767 | gunzip | dd of=/dev/volgroup/w2k
On demarre l'envoi a partir de la source:
(source) # dd if=/dev/volgroupsource/w2k bs=1k | gzip | nc <IP_DE_DEST> 32767
Et on attend la fin du transfert…
La fin du transfert est un peu confuse en fait.
Sur la source, lorsqu'il annonce la fin comme ça:
15376384+0 enregistrements lus 15376384+0 enregistrements écrits 15745417216 octets (16 GB) copiés, 710,626 seconde, 22,2 MB/s
Vous verrez que ”nc” tourne toujours. Il faut le killer. (en priant que tout soit envoyé!)
(source) # kill <pid_de_nc>
Sur la destination, il faut parfois faire la même chose, “kill nc” , et bien verifier que ”dd” annonce avoir écrit le même nombre d'enregistrement que la source.
Vous êtes heureux avec votre partition LVM, mais comment la “voir” si on boot sur un Live-CD !?
Soit un live-CD “Kubuntu 7.10” …
Une fois qu'on a booté, on peut voir ça:
$ sudo fdisk -l /dev/sda Disk /dev/sda: 251.0 GB, 251000193024 bytes 255 heads, 63 sectors/track, 30515 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x0005cd12 Device Boot Start End Blocks Id System /dev/sda1 * 1 62 497983+ 83 Linux /dev/sda2 63 30515 244613722+ 8e Linux LVM
Essayons comme un ignare:
$ sudo mkdir /mnt/lvm $ sudo mount /dev/sda2 /mnt/lvm mount: unknown filesystem type 'LVM2_member'
Oups !? lvm est inconnu.
Alors installons d'abord LVM2 !
$ sudo apt-get install lvm2
Demandons à LVM ce qu'il voit:
$ sudo lvm lvm> pvs PV VG Fmt Attr PSize PFree /dev/sda2 k8xen lvm2 a- 233.28G 111.28G
Ouai ! Cool.
Mounter “dev-mapper” … et ouai:
$ sudo modprobe dm-mod
Et dmesg retourne:
[ 1161.558885] device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com
Mais toujours rien a “mounter”…
Retournons dans LVM, afin de changer l'attribut à “available Yes” :
$ sudo lvm lvm> vgchange -ay 3 logical volume(s) in volume group "k8xen" now active
Yes !
lvm> quit
Voyons ça:
$ sudo ls /dev/k8xen/ -la total 0 drwx------ 2 root root 100 2008-07-24 21:40 . drwxr-xr-x 14 root root 14780 2008-07-24 21:40 .. lrwxrwxrwx 1 root root 22 2008-07-24 21:40 home -> /dev/mapper/k8xen-home lrwxrwxrwx 1 root root 22 2008-07-24 21:40 swap -> /dev/mapper/k8xen-swap lrwxrwxrwx 1 root root 21 2008-07-24 21:40 sys -> /dev/mapper/k8xen-sys
Mountons !
$ sudo mount /dev/k8xen/home /mnt/lvm $ ls /mnt/lvm -la total 24 drwxr-xr-x 4 root root 4096 2008-07-21 18:36 . drwxr-xr-x 3 root root 60 2008-07-24 21:19 .. drwx------ 2 root root 16384 2008-07-21 18:09 lost+found drwxr-xr-x 17 1000 1000 4096 2008-07-22 22:36 thierry
Et voila.
(Facultatif)
$ sudo umount /mnt/lvm
Changeons l'attribut a “available NO”
$ sudo vgchange -an 0 logical volume(s) in volume group "k8xen" now active $ sudo rmmod dm-mod
Et voila.
Nous voila avec une nouvelle (vrai) partition qu'on aimerait bien utiliser pour LVM…
# pvcreate /dev/sda3
En supposant que la partition est là…
# pvs PV VG Fmt Attr PSize PFree /dev/sda3 lvm2 -- 20,00G 20,00G
Creer le “volume group”:
# vgcreate vgt /dev/sda3 Volume group "vgt" successfully created
Ok.
# vgs VG #PV #LV #SN Attr VSize VFree vgt 1 0 0 wz--n- 20,00G 20,00G
Et maintenant, on peut creer les “logical volume”:
# lvcreate -L 2G -n test vgt Logical volume "test" created
# lvcreate -L 4G -n test-2 vgt Logical volume "test-2" created
Ok?
# lvs LV VG Attr LSize Origin Snap% Move Log Copy% test vgt -wi-a- 2,00G test-2 vgt -wi-a- 4,00G
# ls /dev/vgt/ -la lrwxrwxrwx 1 root root 20 2008-08-19 00:52 test -> /dev/mapper/vgt-test lrwxrwxrwx 1 root root 23 2008-08-19 00:52 test-2 -> /dev/mapper/vgt-test--2
Prêt a formater…
# mkfs.ext3 /dev/vgt/test
Et enfin:
# mkdir /mnt/test # mount /dev/vgt/test /mnt/test # ls /mnt/test -lart total 24 drwx------ 2 root root 16384 2008-08-19 00:55 lost+found drwxr-xr-x 3 root root 4096 2008-08-19 00:55 . drwxr-xr-x 3 root root 4096 2008-08-19 00:55 ..
Le test est concluant:
# umount /mnt/test
Ajouter une ligne comme ca dans /etc/fstab :
/dev/mapper/vgt-test /mnt/test ext3 defaults,errors=remount-ro 0 0
Et enfin:
# mount -a
Voila la partition monté, et prête a l'etre au prochain démarrage.
Rappel:
# pvs PV VG Fmt Attr PSize PFree /dev/sda3 vgt lvm2 a- 20,00G 14,00G
Ne le dite pas, mais cela été fait dans une machine virtuelle :o)
Lien: http://blogs.simc.be/simc/index.php/post/2009/01/22/Kpartx-pour-aller-un-peut-plus-loin-avec-LVM
Monter une partition qui est dans une image disk !
Exemple:
# fdisk -l /dev/vgraid1/win2k_test
Disk /dev/vgraid1/win2k_test: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6a4a6e04
Device Boot Start End Blocks Id System
/dev/vgraid1/win2k_test1 * 1 1304 10474348+ 7 HPFS/NTFS
On aimerait bien mounter “win2k_test1” …
C'est possible avec kpartx !
Lister les partitions existentes:
# kpartx -l /dev/vgraid1/win2k_test vgraid1-win2k_test1 : 0 20948697 /dev/vgraid1/win2k_test 63
Ajouter les partitions a son systeme:
# kpartx -a /dev/vgraid1/win2k_test
Et voila les partitions dans /dev/mapper/… :
brw-rw---- 1 root disk 253, 27 mai 17 20:44 vgraid1-win2k_test brw-rw---- 1 root disk 253, 28 mai 18 11:51 vgraid1-win2k_test1
Maintenant, on peut mounter comme d'hab:
# mount -o loop /dev/mapper/vgraid1-win2k_test1 /mnt/win
| |
A la fin, on démounter:
# umount /mnt/win
Et puis:
# kpartx -d /dev/vgraid1/win2k_test
Lien:
Accessoirement, on peut ecrire dans une partition NTFS (avec quelques limitations mineures, toutefois).
Pour cela, installer “ntfs-3g”:
# aptitude install ntfs-3g
Et puis, mounter vos partitions ainsi:
# mount -t ntfs-3g /dev/mapper/vgraid1-win2k_test1 /mnt/win
(sous reserve que votre noyau mount aussi ntfs en 'rw')
Et voila !
# aptitude install xfsprogs
Par exemple:
# lvcreate -L 10G -n test vg0
Et puis:
# mkfs.xfs /dev/vg0/test
# mkdir /mnt/test # mount /dev/vg0/test /mnt/test
Et voila.
# xfs_freeze -f /mnt/test # lvcreate -L 1G -s -n test-snap /dev/vg0/test # xfs_freeze -u /mnt/testEn pratique, ca ne fonctionne pas avec LVM2.
Pourquoi ? Parce que “xfs_freeze -f” interdit les ecritures et que le “snapshot LVM” veut toujours ecrire … alors le “lvcreate” est bloqué !!!!
En attendant une solution plus intelligente de “lvm”/“xfs” :
# lvcreate -L 1G -s -n test-snap /dev/vg0/test # mkdir /mnt/test2 # mount -o nouuid /dev/vg0/test-snap /mnt/test2
Parce que:
-o nouuid permet d'ignorer “uuid” au moment du “mount”.# umount /mnt/test2
# xfs_check /dev/vg0/test-snap
ne dit rien. content?
# xfs_repair /dev/vg0/test-snap
Idem.
# mount /mnt/test2
voila ?
Lien: http://www.unixgarden.com/index.php/administration-systeme/zfs-sous-gnulinux
Interessant, mais hélas, n'est pas intégré au noyau Linux. Il faut utiliser “fuse”.