Joey Boggs
2010-Jan-22 03:05 UTC
[Ovirt-devel] [PATCH node] Enables ability to have a common shared root
Nodes can now have a unique HostVG and share a common root. The nodes must use lun masking or similar to hide other HostVG volume groups from other nodes. --- scripts/ovirt-config-boot | 12 +++++++- scripts/ovirt-config-storage | 67 +++++++++++++++++++++++++++-------------- 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/scripts/ovirt-config-boot b/scripts/ovirt-config-boot index fb956f3..d64f683 100755 --- a/scripts/ovirt-config-boot +++ b/scripts/ovirt-config-boot @@ -29,6 +29,11 @@ ovirt_boot_setup() { local disk2 local partN=-1 log "installing the image." + + if [ "$OVIRT_ROOT_INSTALL" == "n" ]; then + log "done." + return + fi if [ -h /dev/disk/by-label/Boot ]; then mount_boot mountpoint /boot @@ -261,7 +266,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 2ffcaa4..17938ec 100755 --- a/scripts/ovirt-config-storage +++ b/scripts/ovirt-config-storage @@ -226,6 +226,22 @@ do_configure() 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 get_drive_size $HOSTVGDRIVE HOSTVGDRIVESPACE @@ -249,6 +265,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 @@ -412,30 +430,31 @@ 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 - blockdev --rereadpt $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 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" - # 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 log "Creating LVM partition" if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then @@ -451,9 +470,11 @@ perform_partitioning() udevadm settle 2> /dev/null || udevsettle # 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} -- 1.6.6