Joey Boggs
2009-Sep-30 13:59 UTC
[Ovirt-devel] [PATCH node] split root filesystems out of HostVG and onto their own partitions
This lays the groundwork for setting Root and RootBackup onto individual partitions for multiple disk installations in the future. Install, removal, upgrade testing has been performed and all seems to work at this point. --- scripts/ovirt-config-boot | 15 ++++++++------- scripts/ovirt-config-storage | 28 +++++++++++++++------------- scripts/ovirt-config-uninstall | 2 ++ scripts/ovirt-functions | 8 +++++--- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot index 2961f76..dd53988 100755 --- a/scripts/ovirt-config-boot +++ b/scripts/ovirt-config-boot @@ -56,11 +56,11 @@ ovirt_boot_setup() { mkdir -p /liveos # prepare Root partition update candidate- if [ -e /dev/HostVG/RootBackup ]; then + if [ -e /dev/disk/by-label/RootBackup ]; then candidate=RootBackup - elif [ -e /dev/HostVG/RootUpdate ]; then + elif [ -e /dev/disk/by-label/RootUpdate ]; then candidate=RootUpdate - elif [ -e /dev/HostVG/RootNew ]; then + elif [ -e /dev/disk/by-label/RootNew ]; then candidate=RootNew fi if [ -z "$candidate" ]; then @@ -69,7 +69,8 @@ ovirt_boot_setup() { umount /liveos rc=0 else - lvrename HostVG $candidate RootNew + candidate_dev=$(readlink -f /dev/disk/by-label/$candidate) + e2label $candidate_dev RootNew rc=$? fi if [ $rc -ne 0 ]; then @@ -77,7 +78,7 @@ ovirt_boot_setup() { log "$(lvdisplay -c)" return $rc fi - mount /dev/HostVG/RootNew /liveos + mount $candidate_dev /liveos # install oVirt Node image for local boot if [ -e "$live/syslinux" ]; then syslinux=syslinux @@ -146,7 +147,7 @@ set -e\ version=$(rpm -q --qf '%{version}' ovirt-node) release=$(rpm -q --qf '%{release}' ovirt-node) # reorder tty0 to allow both serial and phys console after installation - bootparams="ro root=/dev/HostVG/Root roottypefs=ext3 console=tty0 \ + bootparams="ro root=LABEL=Root roottypefs=ext3 console=tty0 \ $(echo $bootparams | sed s/console=tty0//g)" cat > /boot/grub/grub.conf << EOF default=0 @@ -176,7 +177,7 @@ EOF umount /liveos umount /boot # mark new Root ready to go, reboot() in ovirt-function switches it to active - lvrename HostVG RootNew RootUpdate + e2label $candidate_dev RootUpdate rm -rf $tmpdir log "done." diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage index eed126c..af13935 100755 --- a/scripts/ovirt-config-storage +++ b/scripts/ovirt-config-storage @@ -340,12 +340,23 @@ perform_partitioning() parted $DRIVE -s "mklabel ${LABEL_TYPE}" log "Creating boot partition" parted $DRIVE -s "mkpartfs primary ext2 0M ${boot_size_si}M" + log "Creating Root and RootBackup Partitions" + let root1_end=${boot_size_si}+${ROOT_SIZE} + let root2_end=${root1_end}+${ROOT_SIZE} + parted $DRIVE -s "mkpartfs primary ext2 ${boot_size_si}M ${root1_end}M" + parted $DRIVE -s "mkpartfs primary ext2 ${root1_end}M ${root2_end}M" + # sleep to ensure filesystems are created before continuing + sleep 10 + e2label ${DRIVE}2 Root + e2label ${DRIVE}3 RootBackup + tune2fs -c 0 -i 0 ${DRIVE}2 + tune2fs -c 0 -i 0 ${DRIVE}3 log "Creating LVM partition" - parted $DRIVE -s "mkpart primary ext2 ${boot_size_si}M -1" + parted $DRIVE -s "mkpart primary ext2 ${root2_end}M -1" log "Toggling boot on" parted $DRIVE -s "set 1 boot on" log "Toggling LVM on" - parted $DRIVE -s "set 2 lvm on" + parted $DRIVE -s "set 4 lvm on" parted $DRIVE -s "print" udevadm settle 2> /dev/null || udevsettle @@ -356,11 +367,11 @@ perform_partitioning() fi partboot=${DRIVE}1 - partpv=${DRIVE}2 + partpv=${DRIVE}4 if [ ! -e "$partpv" ]; then # e.g. /dev/cciss/c0d0p2 partboot=${DRIVE}p1 - partpv=${DRIVE}p2 + partpv=${DRIVE}p4 fi log "Creating physical volume" if [ ! -e "$partpv" ]; then @@ -388,15 +399,6 @@ perform_partitioning() mkswap -L "SWAP" /dev/HostVG/Swap echo "/dev/HostVG/Swap swap swap defaults 0 0" >> /etc/fstab fi - if [ "$ROOT_SIZE" -gt 0 ]; then - log "Creating root and root backup partitions" - lvcreate --name Root --size ${ROOT_SIZE}M /dev/HostVG - mke2fs -j /dev/HostVG/Root -L "ROOT" - tune2fs -c 0 -i 0 /dev/HostVG/Root - lvcreate --name RootBackup --size ${ROOT_SIZE}M /dev/HostVG - mke2fs -j /dev/HostVG/RootBackup -L "ROOT2" - tune2fs -c 0 -i 0 /dev/HostVG/RootBackup - fi if [ "$CONFIG_SIZE" -gt 0 ]; then log "Creating config partition" lvcreate --name Config --size ${CONFIG_SIZE}M /dev/HostVG diff --git a/scripts/ovirt-config-uninstall b/scripts/ovirt-config-uninstall index 02828a0..22633a0 100755 --- a/scripts/ovirt-config-uninstall +++ b/scripts/ovirt-config-uninstall @@ -42,6 +42,8 @@ if ask_yes_or_no "Do you wish to continue and uninstall this node ([Y]es/[N]o)?" drive=$(echo $partition | awk '{ print substr($0, 1, length($0) - 1) }') parted -s $drive "rm 1" parted -s $drive "rm 2" + parted -s $drive "rm 3" + parted -s $drive "rm 4" fi printf "Finished uninstalling node." else diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions index fc43343..f24cb07 100644 --- a/scripts/ovirt-functions +++ b/scripts/ovirt-functions @@ -625,9 +625,11 @@ lvremove() { reboot() { cd / # setup new Root if update is prepared - if [ -e /dev/HostVG/RootUpdate ]; then - lvrename HostVG Root RootBackup - lvrename HostVG RootUpdate Root + if [ -e "/dev/disk/by-label/RootUpdate" ]; then + root_update_dev=$(readlink -f /dev/disk/by-label/RootUpdate) + root_dev=$(readlink -f /dev/disk/by-label/Root) + e2label $root_dev RootBackup + e2label $root_update_dev Root fi # run post-install hooks # e.g. to avoid reboot loops using Cobbler PXE only once -- 1.6.2.5
Joey Boggs
2009-Sep-30 14:45 UTC
[Ovirt-devel] Re: [PATCH node] split root filesystems out of HostVG and onto their own partitions
Joey Boggs wrote:> This lays the groundwork for setting Root and RootBackup onto individual partitions for multiple disk installations in the future. > > Install, removal, upgrade testing has been performed and all seems to work at this point. > > --- > scripts/ovirt-config-boot | 15 ++++++++------- > scripts/ovirt-config-storage | 28 +++++++++++++++------------- > scripts/ovirt-config-uninstall | 2 ++ > scripts/ovirt-functions | 8 +++++--- > 4 files changed, 30 insertions(+), 23 deletions(-) > > diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot > index 2961f76..dd53988 100755 > --- a/scripts/ovirt-config-boot > +++ b/scripts/ovirt-config-boot > @@ -56,11 +56,11 @@ ovirt_boot_setup() { > mkdir -p /liveos > # prepare Root partition update > candidate> - if [ -e /dev/HostVG/RootBackup ]; then > + if [ -e /dev/disk/by-label/RootBackup ]; then > candidate=RootBackup > - elif [ -e /dev/HostVG/RootUpdate ]; then > + elif [ -e /dev/disk/by-label/RootUpdate ]; then > candidate=RootUpdate > - elif [ -e /dev/HostVG/RootNew ]; then > + elif [ -e /dev/disk/by-label/RootNew ]; then > candidate=RootNew > fi > if [ -z "$candidate" ]; then > @@ -69,7 +69,8 @@ ovirt_boot_setup() { > umount /liveos > rc=0 > else > - lvrename HostVG $candidate RootNew > + candidate_dev=$(readlink -f /dev/disk/by-label/$candidate) > + e2label $candidate_dev RootNew > rc=$? > fi > if [ $rc -ne 0 ]; then > @@ -77,7 +78,7 @@ ovirt_boot_setup() { > log "$(lvdisplay -c)" > return $rc > fi > - mount /dev/HostVG/RootNew /liveos > + mount $candidate_dev /liveos > # install oVirt Node image for local boot > if [ -e "$live/syslinux" ]; then > syslinux=syslinux > @@ -146,7 +147,7 @@ set -e\ > version=$(rpm -q --qf '%{version}' ovirt-node) > release=$(rpm -q --qf '%{release}' ovirt-node) > # reorder tty0 to allow both serial and phys console after installation > - bootparams="ro root=/dev/HostVG/Root roottypefs=ext3 console=tty0 \ > + bootparams="ro root=LABEL=Root roottypefs=ext3 console=tty0 \ > $(echo $bootparams | sed s/console=tty0//g)" > cat > /boot/grub/grub.conf << EOF > default=0 > @@ -176,7 +177,7 @@ EOF > umount /liveos > umount /boot > # mark new Root ready to go, reboot() in ovirt-function switches it to active > - lvrename HostVG RootNew RootUpdate > + e2label $candidate_dev RootUpdate > > rm -rf $tmpdir > log "done." > diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage > index eed126c..af13935 100755 > --- a/scripts/ovirt-config-storage > +++ b/scripts/ovirt-config-storage > @@ -340,12 +340,23 @@ perform_partitioning() > parted $DRIVE -s "mklabel ${LABEL_TYPE}" > log "Creating boot partition" > parted $DRIVE -s "mkpartfs primary ext2 0M ${boot_size_si}M" > + log "Creating Root and RootBackup Partitions" > + let root1_end=${boot_size_si}+${ROOT_SIZE} > + let root2_end=${root1_end}+${ROOT_SIZE} > + parted $DRIVE -s "mkpartfs primary ext2 ${boot_size_si}M ${root1_end}M" > + parted $DRIVE -s "mkpartfs primary ext2 ${root1_end}M ${root2_end}M" > + # sleep to ensure filesystems are created before continuing > + sleep 10 > + e2label ${DRIVE}2 Root > + e2label ${DRIVE}3 RootBackup > + tune2fs -c 0 -i 0 ${DRIVE}2 > + tune2fs -c 0 -i 0 ${DRIVE}3 > log "Creating LVM partition" > - parted $DRIVE -s "mkpart primary ext2 ${boot_size_si}M -1" > + parted $DRIVE -s "mkpart primary ext2 ${root2_end}M -1" > log "Toggling boot on" > parted $DRIVE -s "set 1 boot on" > log "Toggling LVM on" > - parted $DRIVE -s "set 2 lvm on" > + parted $DRIVE -s "set 4 lvm on" > parted $DRIVE -s "print" > udevadm settle 2> /dev/null || udevsettle > > @@ -356,11 +367,11 @@ perform_partitioning() > fi > > partboot=${DRIVE}1 > - partpv=${DRIVE}2 > + partpv=${DRIVE}4 > if [ ! -e "$partpv" ]; then > # e.g. /dev/cciss/c0d0p2 > partboot=${DRIVE}p1 > - partpv=${DRIVE}p2 > + partpv=${DRIVE}p4 > fi > log "Creating physical volume" > if [ ! -e "$partpv" ]; then > @@ -388,15 +399,6 @@ perform_partitioning() > mkswap -L "SWAP" /dev/HostVG/Swap > echo "/dev/HostVG/Swap swap swap defaults 0 0" >> /etc/fstab > fi > - if [ "$ROOT_SIZE" -gt 0 ]; then > - log "Creating root and root backup partitions" > - lvcreate --name Root --size ${ROOT_SIZE}M /dev/HostVG > - mke2fs -j /dev/HostVG/Root -L "ROOT" > - tune2fs -c 0 -i 0 /dev/HostVG/Root > - lvcreate --name RootBackup --size ${ROOT_SIZE}M /dev/HostVG > - mke2fs -j /dev/HostVG/RootBackup -L "ROOT2" > - tune2fs -c 0 -i 0 /dev/HostVG/RootBackup > - fi > if [ "$CONFIG_SIZE" -gt 0 ]; then > log "Creating config partition" > lvcreate --name Config --size ${CONFIG_SIZE}M /dev/HostVG > diff --git a/scripts/ovirt-config-uninstall b/scripts/ovirt-config-uninstall > index 02828a0..22633a0 100755 > --- a/scripts/ovirt-config-uninstall > +++ b/scripts/ovirt-config-uninstall > @@ -42,6 +42,8 @@ if ask_yes_or_no "Do you wish to continue and uninstall this node ([Y]es/[N]o)?" > drive=$(echo $partition | awk '{ print substr($0, 1, length($0) - 1) }') > parted -s $drive "rm 1" > parted -s $drive "rm 2" > + parted -s $drive "rm 3" > + parted -s $drive "rm 4" > fi > printf "Finished uninstalling node." > else > diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions > index fc43343..f24cb07 100644 > --- a/scripts/ovirt-functions > +++ b/scripts/ovirt-functions > @@ -625,9 +625,11 @@ lvremove() { > reboot() { > cd / > # setup new Root if update is prepared > - if [ -e /dev/HostVG/RootUpdate ]; then > - lvrename HostVG Root RootBackup > - lvrename HostVG RootUpdate Root > + if [ -e "/dev/disk/by-label/RootUpdate" ]; then > + root_update_dev=$(readlink -f /dev/disk/by-label/RootUpdate) > + root_dev=$(readlink -f /dev/disk/by-label/Root) > + e2label $root_dev RootBackup > + e2label $root_update_dev Root > fi > # run post-install hooks > # e.g. to avoid reboot loops using Cobbler PXE only once >I need to rebase this one, I'll resend shortly
Reasonably Related Threads
- [PATCH node] RESEND: split root file systems out of HostVG onto separate partitions
- [PATCH node][REPOST 1/2] Fix uninstall to detect and cleanup correct partitions
- [PATCH node][RFC] Remove dependencies on /dev/disk/by-label entries
- [PATCH node] Handle space in storage wwid
- [PATCH node] Enables stateless iscsi remote boot