How to safely merge two slices on harddisk?

Malcolm Kay malcolm.kay at internode.on.net
Wed Feb 11 04:15:27 PST 2004


On Wed, 11 Feb 2004 21:15, Rob wrote:
> Malcolm Kay wrote:
> > On Tue, 10 Feb 2004 04:19, Rob wrote:
> >>Malcolm,
> >>
> >>Thank you for your detailed answer to my question.
> >>
> >>Malcolm Kay wrote:
> >>>On Mon, 9 Feb 2004 13:46, Rob wrote:
> >>>    Do not change the offset of 'f'. If 'g' does not physically
> >>>    follow 'f' on the disk then this is not going to work -- give up
> >>>    now!!!
> >>
> >>How can I find that out? Is it the slice order in the disk label editor
> >>from /stand/sysinstall :
> >
> > No! What you want is disklabel (see man page). On 5.x this seems to
> > have been replaced by bsdlabel -- but I have no experience with 5.x.
>
> The disklabel output of the disk is:
>
> -------------------------------------------------------------------------
> # disklabel /dev/ad1s1c:
> [...zip...]
> 8 partitions:
>           size   offset    fstype   [fsize bsize bps/cpg]
>    c:156296322        0    unused        0     0         # (Cyl.    0 -
> 9728*)
>
>    a:   204800        0    4.2BSD        0     0     0   # (Cyl.    0 -
> 12*) e:  6348800   204800    4.2BSD        0     0     0   # (Cyl.   12*-
> 407*) f:  6348800  6553600    4.2BSD        0     0     0   # (Cyl.  407*-
> 803*) g:  6348800 12902400    4.2BSD        0     0     0   # (Cyl.  803*-
> 1198*) h:   614400 19251200    4.2BSD        0     0     0   # (Cyl. 1198*-
> 1236*) b:   614400 19865600    4.2BSD     2048 16384    91   # (Cyl. 1236*-
> 1274*) d:135816322 20480000    4.2BSD        0     0     0   # (Cyl. 1274*-
> 9728*)
> -------------------------------------------------------------------------
>
> I have put the partitions in a new order, such that the Cyl. counts are
> continuously running up. Am I right, that g physically follows f here?
> If so, that would mean I can merge f and g into one new partition of 6 Gb,
> right?

I hope you mean you put the list in a new order -- not the physical partitions!
You'll notice the cylinder counts occur after a '#'; thus they have no real 
signifcance but are only (informative) comments.

>
> I actually wonder if the label editor of /stand/sysinstall can do what
> I want. 

Hmm, probably, but it is not always easy to know in detail what sysinstall 
will do. In my opinion it is much more robust to modify the table through 
disklabel.

>Since I now know that f and g are back-to-front partitions, I could
> remove them and create a single new one; when I write this to disk, I can
> let sysinstall also create a new filesystem on the newly merged partition.
>

Yes you could, but this discards the data in both the partitions 'f' and 'g'.
But you could make a copy of everything on 'g' to a new tree on 'f'.
Now dismount 'g' and 'f'. 
Dump the output from fdisklabel to a file.
Edit the file by removing the g: line.
Change the size in the f: line from 6348800 to 12697600.
Use disklabel to write the revised table to disk.
Use growfs on partition 'f'.
Remount partition'f'.
Mission accomplished -- I hope.

> I know this is potentially dangerous, but this way I have already
> deleted the swap partition, created a new ufs partition instead and
> created a file system on that; all in sysinstall.
> I believe it is safe, as long as I do not run 'newfs' on the existing
> partitions.
>
> Or am I missing something important here?

A good chance it will work -- but pre-existing 'f' and 'g' data is lost.

Malcolm


More information about the freebsd-questions mailing list