Joey Boggs
2010-Apr-05 16:15 UTC
[Ovirt-devel] RESEND: [PATCH node 1/3] enables ability for a common shared root
--- scripts/ovirt-config-boot | 13 +++++- scripts/ovirt-config-storage | 111 ++++++++++++++++++++++++------------------ 2 files changed, 75 insertions(+), 49 deletions(-) diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot index d545878..8cc127b 100755 --- a/scripts/ovirt-config-boot +++ b/scripts/ovirt-config-boot @@ -29,6 +29,12 @@ ovirt_boot_setup() { local disk2 local partN=-1 log "installing the image." + + if [ "$OVIRT_ROOT_INSTALL" == "n" ]; then + log "done." + return + fi + local found_boot=false if findfs LABEL=Boot 2>&1 >/dev/null ; then found_boot=true @@ -212,7 +218,12 @@ if [ -z "$doreboot" ]; then fi start_log -ovirt_boot_setup "$live" "$bootparams" +if [ "$OVIRT_ROOT_INSTALL" =="n" ]; then + log "done." + return +else + ovirt_boot_setup "$live" "$bootparams" +fi rc=$? if [ $rc -eq 0 -a "$doreboot" = "yes" ]; then disable_firstboot diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage index 8d59a6b..c91b0ea 100755 --- a/scripts/ovirt-config-storage +++ b/scripts/ovirt-config-storage @@ -172,7 +172,7 @@ check_partition_sizes() HOSTVG_NEED_SIZE=$(echo "scale=0;" \ "$SWAP_SIZE + $CONFIG_SIZE + $LOGGING_SIZE + $min_data_size" | bc -l) - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then drive_list="ROOT" ROOT_NEED_SIZE=$(echo "scale=0; $ROOT_SIZE * 2 + $HOSTVG_NEED_SIZE"| bc -l) else @@ -204,7 +204,7 @@ check_partition_sizes() # check if an existing HostVG exists on a device other than the target if [ "$OVIRT_ISCSI_ENABLED" != "y" ]; then devices="$(pvs -o pv_name,vg_name --noheadings | \ - grep "HostVG"|grep -v $HOSTVGDRIVE|awk '{ print $1 }')" + grep "HostVG"|grep -v "$HOSTVGDRIVE"|awk '{ print $1 }')" rc=0 if [ -n "$devices" ]; then printf "\n" @@ -357,11 +357,27 @@ do_configure() printf "\n\nPlease select the disk to use for the Root.\n\n" ROOTDRIVE=$(get_dev_name) || return 0 get_drive_size "$ROOTDRIVE" ROOTDRIVESPACE + if ask_yes_or_no "Will Root be shared with other nodes ([Y]es/[N]o)?"; then + OVIRT_SHARED_ROOT="y" + if ask_yes_or_no "Partition and install Root?"; then + OVIRT_ROOT_INSTALL="y" + else + OVIRT_ROOT_INSTALL="n" + fi + else + OVIRT_SHARED_ROOT="n" + OVIRT_ROOT_INSTALL="y" + fi + + augtool <<EOF + set /files$OVIRT_DEFAULTS/OVIRT_SHARED_ROOT $OVIRT_SHARED_ROOT + set /files$OVIRT_DEFAULTS/OVIRT_ROOT_INSTALL $OVIRT_ROOT_INSTALL +EOF printf "\n\nPlease select the disk to use for the HostVG.\n\n" HOSTVGDRIVE=$(get_dev_name) || return 0 local skipped=false - if check_existing_hostvg $HOSTVGDRIVE devs; then + if check_existing_hostvg "$HOSTVGDRIVE" devs; then for dev in $devs do printf "Removing HostVG on $dev will erase the drive and cannot be undone\n" @@ -402,6 +418,8 @@ do_configure() if [ "$OVIRT_ISCSI_ENABLED" == "y" ]; then partlist="boot" # swap root config logging data" local space_left=$BOOTDRIVESPACE + elif [ "$OVIRT_ROOT_INSTALL" == "n" ]; then + partlist="swap config logging data" else partlist="swap root config logging data" fi @@ -459,7 +477,7 @@ set /files$OVIRT_DEFAULTS/OVIRT_VOL_LOGGING_SIZE $LOGGING_SIZE set /files$OVIRT_DEFAULTS/OVIRT_VOL_DATA_SIZE $DATA_SIZE EOF - if [ -n $BOOTDRIVE ]; then + if [ -n "$BOOTDRIVE" ]; then augtool <<EOF set /files$OVIRT_DEFAULTS/OVIRT_BOOT_INIT $BOOTDRIVE EOF @@ -478,7 +496,7 @@ do_review() local data_size_display="$DATA_SIZE MB" if [ "$DATA_SIZE" = -1 ]; then - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then local remaining_mb=$(( $ROOTDRIVESPACE - $SWAP_SIZE \ - $ROOT_SIZE * 2 - $CONFIG_SIZE - $LOGGING_SIZE )) test $remaining_mb -lt 0 && is_negative=1 @@ -557,7 +575,7 @@ check_existing_hostvg() # - remove LVM volumes and groups wipe_lvm_on_disk() { - local dev=${1-$HOSTVGDRIVE} + local dev=${1-"$HOSTVGDRIVE"} unmount_logging local part_delim="p" if [[ "$dev" =~ "/dev/sd" ]]; then @@ -604,8 +622,8 @@ perform_partitioning() unmount_config /etc/default/ovirt log "Removing old LVM partitions" - wipe_lvm_on_disk $HOSTVGDRIVE - wipe_lvm_on_disk $ROOTDRIVE + wipe_lvm_on_disk "$HOSTVGDRIVE" + wipe_lvm_on_disk "$ROOTDRIVE" # begin critical section set -e @@ -635,62 +653,59 @@ perform_partitioning() return fi - log "Starting partitioning of $ROOTDRIVE" - log "Partitioning drive: $ROOTDRIVE" - # FIXME: save a backup copy, just in case? - log "Wiping old boot sector" - dd if=/dev/zero of=$ROOTDRIVE bs=1024K count=1 - reread_partitions $ROOTDRIVE - partprobe -s $ROOTDRIVE - log "Labeling Drive: $ROOTDRIVE" - parted $ROOTDRIVE -s "mklabel ${LABEL_TYPE}" + if [ "$OVIRT_ROOT_INSTALL" == "y" ]; then + log "Starting partitioning of $ROOTDRIVE" + log "Partitioning drive: $ROOTDRIVE" + # FIXME: save a backup copy, just in case? + log "Wiping old boot sector" + dd if=/dev/zero of=$ROOTDRIVE bs=1024K count=1 + blockdev --rereadpt $ROOTDRIVE + partprobe -s $ROOTDRIVE + log "Labeling Drive: $ROOTDRIVE" + parted $ROOTDRIVE -s "mklabel ${LABEL_TYPE}" + log "Creating Root and RootBackup Partitions" + let RootBackup_end=${ROOT_SIZE}*2 + parted $ROOTDRIVE -s "mkpart primary ext2 0M ${ROOT_SIZE}M" + parted $ROOTDRIVE -s "mkpart primary ext2 ${ROOT_SIZE}M ${RootBackup_end}M" + # sleep to ensure filesystems are created before continuing + sleep 10 + mke2fs ${ROOTDRIVE}1 -L Root + mke2fs ${ROOTDRIVE}2 -L RootBackup + tune2fs -c 0 -i 0 ${ROOTDRIVE}1 + tune2fs -c 0 -i 0 ${ROOTDRIVE}2 + fi - if [ $ROOTDRIVE != $HOSTVGDRIVE ]; then + if [ "$ROOTDRIVE" != "$HOSTVGDRIVE" ]; then log "Labeling Drive: $HOSTVGDRIVE" - parted $HOSTVGDRIVE -s "mklabel ${LABEL_TYPE}" - fi - log "Creating Root and RootBackup Partitions" - let RootBackup_end=${ROOT_SIZE}*2 - parted $ROOTDRIVE -s "mkpart primary ext2 0M ${ROOT_SIZE}M" - parted $ROOTDRIVE -s "mkpart primary ext2 ${ROOT_SIZE}M ${RootBackup_end}M" - reread_partitions $ROOTDRIVE - partroot=${ROOTDRIVE}1 - partrootbackup=${ROOTDRIVE}2 - if [ ! -e $partroot ]; then - partroot=${ROOTDRIVE}p1 - partrootbackup=${ROOTDRIVE}p2 - fi - # sleep to ensure filesystems are created before continuing - sleep 10 - mke2fs ${partroot} -L Root - mke2fs ${partrootbackup} -L RootBackup - tune2fs -c 0 -i 0 ${partroot} - tune2fs -c 0 -i 0 ${partrootbackup} + parted "$HOSTVGDRIVE" -s "mklabel ${LABEL_TYPE}" + fi log "Creating LVM partition" - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then - parted $HOSTVGDRIVE -s "mkpart primary ext2 ${RootBackup_end}M -1" + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then + parted "$HOSTVGDRIVE" -s "mkpart primary ext2 ${RootBackup_end}M -1" hostvgpart="3" else - parted $HOSTVGDRIVE -s "mkpart primary ext2 0M -1" + parted "$HOSTVGDRIVE" -s "mkpart primary ext2 0M -1" hostvgpart="1" fi log "Toggling LVM on" - parted $HOSTVGDRIVE -s "set $hostvgpart lvm on" - parted $ROOTDRIVE -s "print" + parted "$HOSTVGDRIVE" -s "set $hostvgpart lvm on" + parted "$ROOTDRIVE" -s "print" udevadm settle 2> /dev/null || udevsettle - reread_partitions $HOSTVGDRIVE + reread_partitions "$HOSTVGDRIVE" # sync GPT to the legacy MBR partitions - if [ "gpt" == "$LABEL_TYPE" ]; then - log "Running gptsync to create legacy mbr" - gptsync $ROOTDRIVE + if [ "$OVIRT_ROOT_INSTALL" == "y" ]; then + if [ "gpt" == "$LABEL_TYPE" ]; then + log "Running gptsync to create legacy mbr" + gptsync "$ROOTDRIVE" + fi fi - partpv=${HOSTVGDRIVE}${hostvgpart} + partpv="${HOSTVGDRIVE}"${hostvgpart} if [ ! -e "$partpv" ]; then # e.g. /dev/cciss/c0d0p2 - partpv=${HOSTVGDRIVE}p${hostvgpart} + partpv="${HOSTVGDRIVE}"p${hostvgpart} fi log "Creating physical volume" if [ ! -e "$partpv" ]; then -- 1.6.6.1
Mike Burns
2010-Apr-07 14:15 UTC
[Ovirt-devel] RESEND: [PATCH node 1/3] enables ability for a common shared root
On Mon, 2010-04-05 at 12:15 -0400, Joey Boggs wrote:> --- > scripts/ovirt-config-boot | 13 +++++- > scripts/ovirt-config-storage | 111 ++++++++++++++++++++++++------------------ > 2 files changed, 75 insertions(+), 49 deletions(-) > > diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot > index d545878..8cc127b 100755 > --- a/scripts/ovirt-config-boot > +++ b/scripts/ovirt-config-boot > @@ -29,6 +29,12 @@ ovirt_boot_setup() { > local disk2 > local partN=-1 > log "installing the image." > + > + if [ "$OVIRT_ROOT_INSTALL" == "n" ]; then > + log "done." > + return > + fi > + > local found_boot=false > if findfs LABEL=Boot 2>&1 >/dev/null ; then > found_boot=true > @@ -212,7 +218,12 @@ if [ -z "$doreboot" ]; then > fi > > start_log > -ovirt_boot_setup "$live" "$bootparams" > +if [ "$OVIRT_ROOT_INSTALL" =="n" ]; then > + log "done." > + return > +else > + ovirt_boot_setup "$live" "$bootparams" > +fi > rc=$? > if [ $rc -eq 0 -a "$doreboot" = "yes" ]; then > disable_firstboot > diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage > index 8d59a6b..c91b0ea 100755 > --- a/scripts/ovirt-config-storage > +++ b/scripts/ovirt-config-storage > @@ -172,7 +172,7 @@ check_partition_sizes() > HOSTVG_NEED_SIZE=$(echo "scale=0;" \ > "$SWAP_SIZE + $CONFIG_SIZE + $LOGGING_SIZE + $min_data_size" | bc -l) > > - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then > + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then > drive_list="ROOT" > ROOT_NEED_SIZE=$(echo "scale=0; $ROOT_SIZE * 2 + $HOSTVG_NEED_SIZE"| bc -l) > else > @@ -204,7 +204,7 @@ check_partition_sizes() > # check if an existing HostVG exists on a device other than the target > if [ "$OVIRT_ISCSI_ENABLED" != "y" ]; then > devices="$(pvs -o pv_name,vg_name --noheadings | \ > - grep "HostVG"|grep -v $HOSTVGDRIVE|awk '{ print $1 }')" > + grep "HostVG"|grep -v "$HOSTVGDRIVE"|awk '{ print $1 }')" > rc=0 > if [ -n "$devices" ]; then > printf "\n" > @@ -357,11 +357,27 @@ do_configure() > printf "\n\nPlease select the disk to use for the Root.\n\n" > ROOTDRIVE=$(get_dev_name) || return 0 > get_drive_size "$ROOTDRIVE" ROOTDRIVESPACE > + if ask_yes_or_no "Will Root be shared with other nodes ([Y]es/[N]o)?"; then > + OVIRT_SHARED_ROOT="y" > + if ask_yes_or_no "Partition and install Root?"; then > + OVIRT_ROOT_INSTALL="y" > + else > + OVIRT_ROOT_INSTALL="n" > + fi > + else > + OVIRT_SHARED_ROOT="n" > + OVIRT_ROOT_INSTALL="y" > + fi > + > + augtool <<EOF > + set /files$OVIRT_DEFAULTS/OVIRT_SHARED_ROOT $OVIRT_SHARED_ROOT > + set /files$OVIRT_DEFAULTS/OVIRT_ROOT_INSTALL $OVIRT_ROOT_INSTALL > +EOF > > printf "\n\nPlease select the disk to use for the HostVG.\n\n" > HOSTVGDRIVE=$(get_dev_name) || return 0 > local skipped=false > - if check_existing_hostvg $HOSTVGDRIVE devs; then > + if check_existing_hostvg "$HOSTVGDRIVE" devs; then > for dev in $devs > do > printf "Removing HostVG on $dev will erase the drive and cannot be undone\n" > @@ -402,6 +418,8 @@ do_configure() > if [ "$OVIRT_ISCSI_ENABLED" == "y" ]; then > partlist="boot" # swap root config logging data" > local space_left=$BOOTDRIVESPACE > + elif [ "$OVIRT_ROOT_INSTALL" == "n" ]; then > + partlist="swap config logging data" > else > partlist="swap root config logging data" > fi > @@ -459,7 +477,7 @@ set /files$OVIRT_DEFAULTS/OVIRT_VOL_LOGGING_SIZE $LOGGING_SIZE > set /files$OVIRT_DEFAULTS/OVIRT_VOL_DATA_SIZE $DATA_SIZE > EOF > > - if [ -n $BOOTDRIVE ]; then > + if [ -n "$BOOTDRIVE" ]; then > augtool <<EOF > set /files$OVIRT_DEFAULTS/OVIRT_BOOT_INIT $BOOTDRIVE > EOF > @@ -478,7 +496,7 @@ do_review() > local data_size_display="$DATA_SIZE MB" > if [ "$DATA_SIZE" = -1 ]; then > > - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then > + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then > local remaining_mb=$(( $ROOTDRIVESPACE - $SWAP_SIZE \ > - $ROOT_SIZE * 2 - $CONFIG_SIZE - $LOGGING_SIZE )) > test $remaining_mb -lt 0 && is_negative=1 > @@ -557,7 +575,7 @@ check_existing_hostvg() > # - remove LVM volumes and groups > wipe_lvm_on_disk() > { > - local dev=${1-$HOSTVGDRIVE} > + local dev=${1-"$HOSTVGDRIVE"} > unmount_logging > local part_delim="p" > if [[ "$dev" =~ "/dev/sd" ]]; then > @@ -604,8 +622,8 @@ perform_partitioning() > unmount_config /etc/default/ovirt > > log "Removing old LVM partitions" > - wipe_lvm_on_disk $HOSTVGDRIVE > - wipe_lvm_on_disk $ROOTDRIVE > + wipe_lvm_on_disk "$HOSTVGDRIVE" > + wipe_lvm_on_disk "$ROOTDRIVE" > > # begin critical section > set -e > @@ -635,62 +653,59 @@ perform_partitioning() > return > fi > > - log "Starting partitioning of $ROOTDRIVE" > - log "Partitioning drive: $ROOTDRIVE" > - # FIXME: save a backup copy, just in case? > - log "Wiping old boot sector" > - dd if=/dev/zero of=$ROOTDRIVE bs=1024K count=1 > - reread_partitions $ROOTDRIVE > - partprobe -s $ROOTDRIVE > - log "Labeling Drive: $ROOTDRIVE" > - parted $ROOTDRIVE -s "mklabel ${LABEL_TYPE}" > + if [ "$OVIRT_ROOT_INSTALL" == "y" ]; then > + log "Starting partitioning of $ROOTDRIVE" > + log "Partitioning drive: $ROOTDRIVE" > + # FIXME: save a backup copy, just in case? > + log "Wiping old boot sector" > + dd if=/dev/zero of=$ROOTDRIVE bs=1024K count=1 > + blockdev --rereadpt $ROOTDRIVE > + partprobe -s $ROOTDRIVE > + log "Labeling Drive: $ROOTDRIVE" > + parted $ROOTDRIVE -s "mklabel ${LABEL_TYPE}" > + log "Creating Root and RootBackup Partitions" > + let RootBackup_end=${ROOT_SIZE}*2 > + parted $ROOTDRIVE -s "mkpart primary ext2 0M ${ROOT_SIZE}M" > + parted $ROOTDRIVE -s "mkpart primary ext2 ${ROOT_SIZE}M ${RootBackup_end}M" > + # sleep to ensure filesystems are created before continuing > + sleep 10 > + mke2fs ${ROOTDRIVE}1 -L Root > + mke2fs ${ROOTDRIVE}2 -L RootBackup > + tune2fs -c 0 -i 0 ${ROOTDRIVE}1 > + tune2fs -c 0 -i 0 ${ROOTDRIVE}2 > + fi > > - if [ $ROOTDRIVE != $HOSTVGDRIVE ]; then > + if [ "$ROOTDRIVE" != "$HOSTVGDRIVE" ]; then > log "Labeling Drive: $HOSTVGDRIVE" > - parted $HOSTVGDRIVE -s "mklabel ${LABEL_TYPE}" > - fi > - log "Creating Root and RootBackup Partitions" > - let RootBackup_end=${ROOT_SIZE}*2 > - parted $ROOTDRIVE -s "mkpart primary ext2 0M ${ROOT_SIZE}M" > - parted $ROOTDRIVE -s "mkpart primary ext2 ${ROOT_SIZE}M ${RootBackup_end}M" > - reread_partitions $ROOTDRIVE > - partroot=${ROOTDRIVE}1 > - partrootbackup=${ROOTDRIVE}2 > - if [ ! -e $partroot ]; then > - partroot=${ROOTDRIVE}p1 > - partrootbackup=${ROOTDRIVE}p2 > - fi > - # sleep to ensure filesystems are created before continuing > - sleep 10 > - mke2fs ${partroot} -L Root > - mke2fs ${partrootbackup} -L RootBackup > - tune2fs -c 0 -i 0 ${partroot} > - tune2fs -c 0 -i 0 ${partrootbackup} > + parted "$HOSTVGDRIVE" -s "mklabel ${LABEL_TYPE}" > + fi > log "Creating LVM partition" > > - if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then > - parted $HOSTVGDRIVE -s "mkpart primary ext2 ${RootBackup_end}M -1" > + if [ "$ROOTDRIVE" == "$HOSTVGDRIVE" ]; then > + parted "$HOSTVGDRIVE" -s "mkpart primary ext2 ${RootBackup_end}M -1" > hostvgpart="3" > else > - parted $HOSTVGDRIVE -s "mkpart primary ext2 0M -1" > + parted "$HOSTVGDRIVE" -s "mkpart primary ext2 0M -1" > hostvgpart="1" > fi > log "Toggling LVM on" > - parted $HOSTVGDRIVE -s "set $hostvgpart lvm on" > - parted $ROOTDRIVE -s "print" > + parted "$HOSTVGDRIVE" -s "set $hostvgpart lvm on" > + parted "$ROOTDRIVE" -s "print" > udevadm settle 2> /dev/null || udevsettle > - reread_partitions $HOSTVGDRIVE > + reread_partitions "$HOSTVGDRIVE" > > # sync GPT to the legacy MBR partitions > - if [ "gpt" == "$LABEL_TYPE" ]; then > - log "Running gptsync to create legacy mbr" > - gptsync $ROOTDRIVE > + if [ "$OVIRT_ROOT_INSTALL" == "y" ]; then > + if [ "gpt" == "$LABEL_TYPE" ]; then > + log "Running gptsync to create legacy mbr" > + gptsync "$ROOTDRIVE" > + fi > fi > > - partpv=${HOSTVGDRIVE}${hostvgpart} > + partpv="${HOSTVGDRIVE}"${hostvgpart} > if [ ! -e "$partpv" ]; then > # e.g. /dev/cciss/c0d0p2 > - partpv=${HOSTVGDRIVE}p${hostvgpart} > + partpv="${HOSTVGDRIVE}"p${hostvgpart} > fi > log "Creating physical volume" > if [ ! -e "$partpv" ]; thenStill having issues applying this patch directly. I've rebased it manually and will post updated patch here shortly. Mike
Possibly Parallel Threads
- [PATCH node 1/3] Enables ability to have a common shared root
- [PATCH node] Handle space in storage wwid
- [PATCH node] First draft of replacing some of the ovirt-config-* scripts with python equivalents.
- [PATCH] RFC: Advanced Storage Configuration
- [PATCH node] add ability to select separate disks for Root and HostVG in o-c-storage