LVM

Stripe-olt Logical Volume

http://tldp.org/HOWTO/LVM-HOWTO/recipethreescsistripe.html

Hozzuk létre a „volume group descriptor area”-t (VGDA) a használni kívánt köteteken:

sudo pvcreate /dev/md0 sudo pvcreate /dev/md1

Ezekkel hozzunk létre egy volume groupot:

sudo vgcreate "my_group" /dev/md0 /dev/md1

Ellenőrizzük le, hogy elkészült a volume group (és egyben kérdezzük le a rendelkezésre álló szabad lemezterületet)

sudo vgdisplay --units m

Hozzuk létre a logikai köteteket:

sudo lvcreate --size 8G --stripes 2 --stripesize 4 --name "root" "my_group" sudo lvcreate --size 4G --stripes 2 --stripesize 4 --name "swap" "my_group" sudo lvcreate --size 941584M --stripes 2 --stripesize 4 --name "datastore" "my_group"

Rename VG, LV

Nevezd át a kötetet (vgrename, lvrename)

Javítsd az elérési utakat az fstab-ban és a grub-ban

Physical volume átmozgazása másik lemezre és kiszedése

http://www.tldp.org/HOWTO/LVM-HOWTO/removepvsfromvg.html

http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/stripe_extend.html

http://www.microhowto.info/howto/replace_one_of_the_physical_volumes_in_an_lvm_volume_group.html

Alakítsuk át az új eszközt physical volume-má (erre fogjuk átmozgatni az adatokat):

pvcreate "/dev/sdd1"

Adjuk hozzá a meglévő volume group-hoz:

vgextend "my_group" "/dev/sdd1"

Nézzük meg, hogy mely physical volume-okat mely logical volume használ:

lvs -a -o +devices

Mozgassuk át a kiszedendő physical volume-ról az adatokat:

pvmove "/dev/md0"

vagy adjuk meg konkrétan azt is, hogy hova:

pvmove "/dev/md0" "/dev/sdd1"

Szedjük ki a régi physical volume-ot a volume group-ból:

vgreduce "my_group" "/dev/md0"

Alakítsuk vissza a régi eszközt:

pvremove "/dev/md0"

Logical Volume növelése

Fájlrendszer lecsatlakoztatása!

Logikai kötet megnövelése:

Amennyire csak lehet:

lvextend -l +100%FREE "/dev/my_group/private"

Relatívan:

lvextend -L +100G "/dev/my_group/private"

Fájlrendszer megnövelése:

fsck.ext4 -f "/dev/my_group/private" resize2fs -p "/dev/my_group/private" fsck.ext4 -f "/dev/my_group/private"

Mounting LVM Disk using Ubuntu livecd

......

Get a live cd, for example, Ubuntu. For this article, I use Ubuntu 6.06 (I cannot find any latest version of ubuntu at my place)

Boot using the live cd. Search for these tools: lvm2. If the cd do not have it, install it.

sudo apt-get install lvm2

To make sure the harddisk is recognised, you can use fdisk

sudo fdisk -lu

Once installed, run pvscan to scan all disks for physical volume. this to make sure your LVM harddisk is detected by Ubuntu

sudo pvscan #PV /dev/sda2 VG VolGroup00 lvm2 [74.41 GB / 32.00 MB free] #Total: 1 [74.41 GB] / in use: 1 [74.41 GB] / in no VG: 0 [0 ]

After that run vgscan to scan disks for volume groups.

sudo vgscan #Reading all physical volumes. This may take a while... #Found volume group "VolGroup00" using metadata type lvm2

Activate all volume groups available.

sudo vgchange -a y #2 logical volume(s) in volume group "VolGroup00" now active

Run lvscan to scan all disks for logical volume. You can see partitions inside the hard disk now active.

sudo lvscan #ACTIVE '/dev/VolGroup00/LogVol00' [72.44 GB] inherit #ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit

Mount the partition to any directory you want, usually to /mnt

sudo mount /dev/VolGroup00/LogVol00 /mnt

Config mentése

sudo vgcfgbackup -f vgbackup.cfg

Debian bugok

Hibás init script, hiányzik belőle a leállítás rész. Javítva, Proxmox-on így néz ki:

#!/bin/sh ### BEGIN INIT INFO # Provides: lvm2 lvm # Required-Start: mountdevsubfs # Required-Stop: # Should-Start: udev mdadm-raid cryptdisks-early multipath-tools-boot # Should-Stop: umountroot mdadm-raid # X-Start-Before: checkfs mountall # X-Stop-After: umountfs # Default-Start: S # Default-Stop: ### END INIT INFO SCRIPTNAME=/etc/init.d/lvm2 . /lib/lsb/init-functions [ -x /sbin/vgchange ] || exit 0 do_start() { modprobe dm-mod 2> /dev/null || : export LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES=1 /sbin/vgscan --ignorelockingfailure || : /sbin/vgchange -aly --ignorelockingfailure || return 2 } do_stop() { /sbin/vgchange -an || return 2 } case "$1" in start) log_begin_msg "Setting up LVM Volume Groups" do_start case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; stop) do_stop ;; restart|force-reload|status) ;; *) echo "Usage: $SCRIPTNAME start" >&2 exit 3 ;; esac

Nem mountolódik fel az összes LVM volume:

--- /usr/share/initramfs-tools/scripts/local-top/lvm2 2009-08-17 19:28:09.000000000 +0200 +++ /usr/share/initramfs-tools/scripts/local-top/lvm2 2010-02-19 23:22:14.000000000 +0100 @@ -45,12 +45,30 @@ eval $(dmsetup splitname --nameprefixes --noheadings --rows "$dev") - if [ "$DM_VG_NAME" ] && [ "$DM_LV_NAME" ]; then - lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME" - rc=$? - if [ $rc = 5 ]; then - echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME" - fi + # Make sure that we have non-empty volume group and logical volume + if [ -z "$DM_VG_NAME" ] || [ -z "$DM_LV_NAME" ]; then + return 1 + fi + + # If the logical volume hasn't shown up yet, give it a little while + # to deal with LVM on removable devices (inspired from scripts/local) + fulldev="/dev/$DM_VG_NAME/$DM_LV_NAME" + if [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; then + # Use default root delay + slumber=$(( ${ROOTDELAY:-180} * 10 )) + + while [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; do + /bin/sleep 0.1 + slumber=$(( ${slumber} - 1 )) + [ ${slumber} -gt 0 ] || break + done + fi + + # Activate logical volume + lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME" + rc=$? + if [ $rc = 5 ]; then + echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME" fi }

http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=lvm2_wait-lvm.patch;att=1;bug=568838

LVM leállítása

Alacsony szintű logikai kötetek listázása:

dmsetup ls

Kötet leállítása:

dmsetup remove xxx