[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] [solved] Increase size of file-based diskimage (with MBR, partitions + fs)



Hello again,

and thanks for your answers. I reviewed the differences in your methods
and mine, and noticed two big differences. One was the way that you
appended extra space at the end of the diskimage, and the second was how
you repartitioned the diskimage afterwards. See below.

Short version: use fdisk instead of sfdisk.

++ 01/10/08 00:54 +0200 - Henrik Holmboe:

[...]

>What I have: a diskimage stored in the fs on dom0. The image is not
>just a filesystem, but contains a full disk presented to the domU. Thus
>it contains an MBR, partition table and a single ext3 filesystem. No 
>LVM is not used in the domU. Both dom0 and domU is Centos 5.2.
>
>What I want to accomplish: increase the size of this diskimage, resize
>the partition and filesystem.

[...]

>Ok, so now on to what I have tried and failed (with a known good image
>as verified above):
>
> # Extend the size of diskimage from 1.5GB to 3GB
>
> > ls -la xvda.img 
> -rw-r--r-- 1 root root 1610612736 Oct  1 00:16 xvda.img
> > dd if=/dev/zero of=xvda.img bs=1 count=1 seek=3G conv=notrunc
> 1+0 records in
> 1+0 records out
> 1 byte (1 B) copied, 0.00506 seconds, 0.2 kB/s
> > ls -la xvda.img
> -rw-r--r-- 1 root root 3221225473 Oct  1 00:25 xvda.img

I noticed that both Franz and used something similar ot

 dd if=/dev/zero of=space.img bs=1 count=1 seek=1536M
 cat space.img >> xvda.img

rather than the method I used above. I have verified that both methods
work similarly and produce the same results.

> # Now rewrite the partition table to span the entire disk, also
> # make sure that the partition is still bootable
>
> > sfdisk -q --no-reread xvda.img << EOF
> ,,,*
> EOF
> > sfdisk -l xvda.img
> Disk xvda.img: 391 cylinders, 255 heads, 63 sectors/track
> Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
>   Device Boot Start     End   #cyls    #blocks   Id  System
>   xvda.img1   *      0+    390     391-   3140707   83  Linux

The solution to the problem was here. I used sfdisk, and when using
fdisk the diskimage is actually bootable. So instead of the above, I did
this

 # Get the number of cylinders (in my case 391)
 sfdisk -l xvda.img

 # Delete the partition, recreate a bigger partition using the same
 # start cylinder, and finally write the partition table. My diskimage
 # only contains a single partition (no swap, no additional filesystem
 # partitions), so the steps in my case were this

 fdisk xvda.img
 # Enter expert mode
 x
 # Specify number of cylinders
 c
 391
 # Return to main menu
 r
 # Delete partition
 d
 # New primary partition, starts on cylinder 1, ends on cylinder 391
 # which is the entire available space
 n
 p
 1
 1
 391
 # Make this partition bootable
 a
 1
 # Write and exit
 w

After this I had to extend the filesystem to span the added space to the
partition. Nothing changed here that affected the result from my initial
procedure, but for completeness sake I will include it here.

 losetup /dev/loop15 xvda.img
 kpartx -a /dev/loop15
 e2fsck -f /dev/mapper/loop15p1
 resize2fs /dev/mapper/loop15p1
 e2fsck -f /dev/mapper/loop15p1
 kpartx -d /dev/loop15
 losetup -d /dev/loop15

The next step would be to see why sfdisk is not working correctly. The
diskimage verified correctly but pygrub couldn't read it. Weird.

Thanks again!

Henrik

-- 
Henrik Holmboe, Stockholm, Sweden
<http://henrik.holmboe.se/contact/>

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.