[Ovirt-devel] Re: [PATCH node] split root filesystems out of HostVG and onto their own partitions

Joey Boggs jboggs at redhat.com
Wed Sep 30 14:45:13 UTC 2009


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




More information about the ovirt-devel mailing list