====== 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 =====
Mounting is an easy process to do, provided the filesystem type you are using is supported. What happen when you have an LVM formatted disk, and you need to mount it because the disk cannot be booted and a hell lot of valuable data kept inside?? Do not worry, because the solution is here....... - 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