From: Marc Fiuczynski Date: Thu, 3 Aug 2006 16:33:40 +0000 (+0000) Subject: Fix for adding new disks to system: X-Git-Tag: planetlab-4_0-rc1~29 X-Git-Url: http://git.onelab.eu/?p=bootmanager.git;a=commitdiff_plain;h=86e9a25c7cd610ce3e078e2193c80cb1ea7fb27b Fix for adding new disks to system: - umount proc to ensure that subsequent lvm modification succeed - make lvm extents visible again after lvm modifications - switched to using ext2online to extend vserver filesystem across newly added lvm extents. --- diff --git a/source/steps/CheckForNewDisks.py b/source/steps/CheckForNewDisks.py index 11e6a88..67e1792 100644 --- a/source/steps/CheckForNewDisks.py +++ b/source/steps/CheckForNewDisks.py @@ -131,8 +131,10 @@ def Run( vars, log ): except OSError, e: pass - utils.sysexec_noerr( "umount /dev/planetlab/vservers", log ) - utils.sysexec_noerr( "umount /dev/planetlab/root", log ) + # umount in order to extend disk size + utils.sysexec_noerr( "umount %s/proc" % SYSIMG_PATH, log ) + utils.sysexec_noerr( "umount %s/vservers" % SYSIMG_PATH, log ) + utils.sysexec_noerr( "umount %s" % SYSIMG_PATH, log ) utils.sysexec( "vgchange -an", log ) vars['ROOT_MOUNTED']= 0 @@ -150,19 +152,33 @@ def Run( vars, log ): log.write( "Extending vservers logical volume.\n" ) + # make all LVMs known again for lvextend/resize2fs to work + utils.sysexec( "vgchange -ay", log ) + if not utils.sysexec_noerr("lvextend -l +%s /dev/planetlab/vservers" % remaining_extents, log): log.write( "Failed to extend vservers logical volume, continuing\n" ) return 1 log.write( "making the ext3 filesystem match new logical volume size.\n" ) - if not utils.sysexec_noerr("resize2fs /dev/planetlab/vservers",log): - log.write( "Failed to make ext3 file system match, continuing\n" ) + if BOOT_CD_VERSION[0] == 2: + resize = utils.sysexec_noerr("resize2fs /dev/planetlab/vservers",log) + elif BOOT_CD_VERSION[0] == 3: + vars['ROOT_MOUNTED']= 1 + utils.sysexec_noerr( "mount /dev/planetlab/root %s" % SYSIMG_PATH, log ) + utils.sysexec_noerr( "mount /dev/planetlab/vservers %s/vservers" % SYSIMG_PATH, log ) + resize = utils.sysexec_noerr("ext2online /dev/planetlab/vservers",log) + utils.sysexec_noerr( "umount %s/vservers" % SYSIMG_PATH, log ) + utils.sysexec_noerr( "umount %s" % SYSIMG_PATH, log ) + vars['ROOT_MOUNTED']= 0 + + if not resize: + log.write( "Failed to resize vservers partition, continuing\n" ) + return 1 + else: + log.write( "Succesfully extended vservers partition by %4.2f GB\n" % + extended_gb_size ) return 1 - - log.write( "Succesfully extended vservers partition by %4.2f GB\n" % - extended_gb_size ) else: log.write( "No new disk devices to add to volume group.\n" ) - - return 1 + return 1