You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.5 KiB

#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# run lvm scan if udev has settled
extraargs="$@"
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
VGS=$(getargs rd.lvm.vg -d rd_LVM_VG=)
LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=)
SNAPSHOT=$(getargs rd.lvm.snapshot -d rd_LVM_SNAPSHOT=)
SNAPSIZE=$(getargs rd.lvm.snapsize -d rd_LVM_SNAPSIZE=)
[ -d /etc/lvm ] || mkdir -m 0755 -p /etc/lvm
# build a list of devices to scan
lvmdevs=$(
for f in /tmp/.lvm_scan-*; do
[ -e "$f" ] || continue
echo -n "${f##/tmp/.lvm_scan-} "
done
)
if [ ! -e /etc/lvm/lvm.conf ]; then
{
echo 'devices {';
echo -n ' filter = [ '
for dev in $lvmdevs; do
printf '"a|^/dev/%s$|", ' $dev;
done;
echo '"r/.*/" ]';
echo '}';
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
# establish LVM locking
if [ -n $SNAPSHOT ]; then
echo 'global {';
echo ' locking_type = 1';
echo ' use_lvmetad = 0';
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
echo '}';
else
echo 'global {';
echo ' locking_type = 4';
echo ' use_lvmetad = 0';
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
echo '}';
fi
} > /etc/lvm/lvm.conf
lvmwritten=1
fi
check_lvm_ver() {
maj=$1
min=$2
ver=$3
# --poll is supported since 2.2.57
[ $4 -lt $maj ] && return 1
[ $4 -gt $maj ] && return 0
[ $5 -lt $min ] && return 1
[ $5 -gt $min ] && return 0
[ $6 -ge $ver ] && return 0
return 1
}
# hopefully this output format will never change, e.g.:
# LVM version: 2.02.53(1) (2009-09-25)
OLDIFS=$IFS
IFS=.
set $(lvm version 2>/dev/null)
IFS=$OLDIFS
maj=${1##*:}
min=$2
sub=${3%% *}
sub=${sub%%\(*};
check_lvm_ver 2 2 57 $maj $min $sub && \
nopoll="--poll n"
if check_lvm_ver 2 2 65 $maj $min $sub; then
sysinit=" --sysinit $extraargs"
fi
unset extraargs
export LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES=1
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
if [ -n "$SNAPSHOT" ] ; then
# HACK - this should probably be done elsewhere or turned into a function
# Enable read-write LVM locking
sed -i -e 's/\(^[[:space:]]*\)locking_type[[:space:]]*=[[:space:]]*[[:digit:]]/\1locking_type = 1/' ${initdir}/etc/lvm/lvm.conf
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
# Expected SNAPSHOT format "<orig lv name>:<snap lv name>"
ORIG_LV=${SNAPSHOT%%:*}
SNAP_LV=${SNAPSHOT##*:}
info "Removing existing LVM snapshot $SNAP_LV"
lvm lvremove --force $SNAP_LV 2>&1| vinfo
# Determine snapshot size
if [ -z "$SNAPSIZE" ] ; then
SNAPSIZE=$(lvm lvs --noheadings --units m --options lv_size $ORIG_LV)
info "No LVM snapshot size provided, using size of $ORIG_LV ($SNAPSIZE)"
fi
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
info "Creating LVM snapshot $SNAP_LV ($SNAPSIZE)"
lvm lvcreate -s -n $SNAP_LV -L $SNAPSIZE $ORIG_LV 2>&1| vinfo
fi
if [ -n "$LVS" ] ; then
info "Scanning devices $lvmdevs for LVM logical volumes $LVS"
lvm lvscan --ignorelockingfailure 2>&1 | vinfo
if [ -z "$sysinit" ]; then
lvm lvchange -ay --ignorelockingfailure $nopoll --ignoremonitoring $LVS 2>&1 | vinfo
else
lvm lvchange -ay $sysinit $LVS 2>&1 | vinfo
fi
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
fi
if [ -z "$LVS" -o -n "$VGS" ]; then
info "Scanning devices $lvmdevs for LVM volume groups $VGS"
lvm vgscan --ignorelockingfailure 2>&1 | vinfo
if [ -z "$sysinit" ]; then
lvm vgchange -ay --ignorelockingfailure $nopoll --ignoremonitoring $VGS 2>&1 | vinfo
else
lvm vgchange -ay $sysinit $VGS 2>&1 | vinfo
fi
lvm: support for dynamic LVM SNAPSHOT root volume I'm looking for a way to have a system with disposable storage that can be rebooted and all filesystem changes are thrown away. After reboot, the system starts with a fresh root volume again. The use case is for automated testing. We run test scripts that could potentially not clean up after themselves. This is almost like stateless, but the storage is local to the system (not iSCSI, NFS or NBB). 1. Install Fedora 13 using default partition layout NOTE: modify the layout to leave extra room in the LVM volume group 2. Apply attached patch 3. Update grub.conf to enable dracut LVM snapshot support. Add the following boot arguments rd_LVM_SNAPSHOT=vg_test1055/lv_snap (note the VG name will depend on your system). rd_LVM_SNAPSIZE= (optional, defaults to size of volume specified with by rd_LVM_SNAPSHOT) 4. Adjust grub.conf and fstab to use LVM snapshot $ sed -i -e 's|lv_root|lv_snap|' /boot/grub/grub.conf $ sed -i -e 's|lv_root|lv_snap|' /etc/fstab 5. Reboot system Expected results (no value provided for rd_LVM_SNAPSIZE): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: No LVM snapshot size provided, using size of vg_test1055/lv_root ( 9024.00m) dracut: Creating LVM snapshot vg_test1055/lv_snap ( 9024.00m) dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [8.81 GiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root Expected results (rd_LVM_SNAPSIZE=100m): dracut: Starting plymouth daemon dracut: rd_NO_DM: removing DM RAID activation dracut: rd_NO_MD: removing MD RAID activation dracut: Removing existing LVM snapshot vg_test1055/lv_snap dracut: Logical volume "lv_snap" successfully removed dracut: Creating LVM snapshot vg_test1055/lv_snap (100m ) dracut: Rounding up size to full physical extent 128.00 MiB dracut: Logical volume "lv_snap" created dracut: Scanning devices sda2 for LVM logical volumes vg_test1055/lv_root vg_test1055/lv_swap dracut: inactive Original '/dev/vg_test1055/lv_root' [8.81 GiB] inherit dracut: inactive '/dev/vg_test1055/lv_swap' [1.00 GiB] inherit dracut: inactive Snapshot '/dev/vg_test1055/lv_snap' [128.00 MiB] inherit dracut: Mounted root filesystem /dev/mapper/vg_test1055-lv_snap dracut: Loading SELinux policy dracut: Switching root
15 years ago
fi
if [ "$lvmwritten" ]; then
rm -f /etc/lvm/lvm.conf
fi
unset lvmwritten
udevadm settle
need_shutdown