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.4 KiB

#!/bin/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
printf '%s' "${f##/tmp/.lvm_scan-} "
done
)
if [ ! -e /etc/lvm/lvm.conf ]; then
{
echo 'devices {';
printf ' 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%%\(*};
lvm: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm_ignorelockingfailure="--ignorelockingfailure"
lvm_quirk_args="--ignorelockingfailure --ignoremonitoring"
check_lvm_ver 2 2 57 $maj $min $sub && \
lvm: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm_quirk_args="$lvm_quirk_args --poll n"
if check_lvm_ver 2 2 65 $maj $min $sub; then
lvm: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm_quirk_args=" --sysinit $extraargs"
fi
if check_lvm_ver 2 2 221 $maj $min $sub; then
lvm_quirk_args=" $extraargs"
unset lvm_ignorelockingfailure
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: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm lvscan $lvm_ignorelockingfailure 2>&1 | vinfo
for LV in $LVS; do
lvm: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm lvchange --yes -ay $lvm_quirk_args $LV 2>&1 | vinfo
done
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: remove all quirk arguments https://bugzilla.redhat.com/show_bug.cgi?id=742564 Once lvm2 starts using /run (bug 742554), it should be no longer necessary to disable file-based locking in the vgchange call in fedora-storage-init. Removing '--sysinit' will make it safe to call LVM operations concurrently from other units. The --sysinit is a compound option consisting of: -> --ignorelockingfailure - not needed anymore, the /run/lock/lvm is available rw soon in boot process -> --ignoremonitoring - not needed since /run is available, this would require the dm-event.service to be run before fedora-storage-init.service (and new lvm2-activation.service when deployed). But that's a one line change - I'll have a look whether it plays well with other services and if yes, I'll commit the change. N.B.: This has a consequence that all volumes activated on vgchange -ay will be monitored at the same time they're activated (which is a plus I think). The lvm2-monitor will just grab all the other volumes not activated at the time of the boot's vgchange -ay call. But that's not an issue (for already monitored volumes, calling vgchange --monitor y will just be a NOOP). -> --poll n - not needed, we can run the polldaemon as the /run is available and rw (in case there's unfinished merge or mirror sync from previous system run, the poll-daemon will be triggered at boot now). Actually, the polldaemon should be triggered as a service like dmeventd is, not forked off from the LVM command itself, like from vgchange in this case - we still need to change this - there's a bug open for this request already (bug #814857). However, we don't have this feature ready yet so I need to check whether this is OK with the early boot process with the current state.
9 years ago
lvm vgscan $lvm_ignorelockingfailure 2>&1 | vinfo
lvm vgchange -ay $lvm_quirk_args $VGS 2>&1 | vinfo
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
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
unset lvmwritten
udevadm settle
need_shutdown