Shrinking a RAID1 device mounted as root?

4 messages, 4 authors, 2004-07-14 · open the first message on its own page

Shrinking a RAID1 device mounted as root?

From: Marlier, Ian <hidden>
Date: 2004-07-14 15:47:33

Hey all...

I'm looking for some help figuring out how to shrink a RAID1 device
that's mounted as root on a Red Hat system.

The device setup is this:
Raiddev	/dev/md0
	Device	/dev/hda1
	Raid-disk	0
	Device	/dev/hdb1
	Raid-disk	1

Hda and hdb are both 36GB ATA hard drives, and each currently has a
partition of about 33GB formatted as Linux RAID autodetect.  Each also
has a swap partition.

What I'd like to do is shrink partition 1 on each disk to around 16GB,
and then create a second RAID1, /dev/md1, with a new partition /dev/hda3
and /dev/hdb3 (leaving the swap device alone.)

I booted off a rescue disk with mdadm, resize2fs, fdisk, etc, and I was
able to shrink /dev/md0 down to 16GB.

I then tried to delete /dev/hda1 and /dev/hdb1 using fdisk, and create 2
new equally-sized partitions in the free space created.  (/dev/hda1,
/dev/hda3, /dev/hdb1, /dev/hdb3, all type Linux RAID Autodetect).
Because /dev/hd[ab]1 is larger than /dev/md0, and the starting block of
the partitions is the same, the filesystem should remain intact.

However, upon rebooting, I ran into a problem.  /dev/md0 cannot be
mounted because of a problem with the superblocks.

I figure that something needs to be done with mdadm to get it to
recognize the "new" /dev/hda1 and /dev/hdb1 as /dev/md0 -- but I don't
want to do a mdadm --create because that will overwrite the filesystem
already on the disks (I think?). 

Is this something that mdadm --assemble can do?  If so, what switches
need to be fed to the command?

Other suggestions?


Re: Shrinking a RAID1 device mounted as root?

From: Mike Tran <hidden>
Date: 2004-07-14 16:29:23

On Wed, 2004-07-14 at 10:47, Marlier, Ian wrote:
Hey all...

I'm looking for some help figuring out how to shrink a RAID1 device
that's mounted as root on a Red Hat system.

The device setup is this:
Raiddev	/dev/md0
	Device	/dev/hda1
	Raid-disk	0
	Device	/dev/hdb1
	Raid-disk	1

Hda and hdb are both 36GB ATA hard drives, and each currently has a
partition of about 33GB formatted as Linux RAID autodetect.  Each also
has a swap partition.

What I'd like to do is shrink partition 1 on each disk to around 16GB,
and then create a second RAID1, /dev/md1, with a new partition /dev/hda3
and /dev/hdb3 (leaving the swap device alone.)

I booted off a rescue disk with mdadm, resize2fs, fdisk, etc, and I was
able to shrink /dev/md0 down to 16GB.

I then tried to delete /dev/hda1 and /dev/hdb1 using fdisk, and create 2
new equally-sized partitions in the free space created.  (/dev/hda1,
/dev/hda3, /dev/hdb1, /dev/hdb3, all type Linux RAID Autodetect).
Because /dev/hd[ab]1 is larger than /dev/md0, and the starting block of
the partitions is the same, the filesystem should remain intact.

However, upon rebooting, I ran into a problem.  /dev/md0 cannot be
mounted because of a problem with the superblocks.

I figure that something needs to be done with mdadm to get it to
recognize the "new" /dev/hda1 and /dev/hdb1 as /dev/md0 -- but I don't
want to do a mdadm --create because that will overwrite the filesystem
already on the disks (I think?). 

Is this something that mdadm --assemble can do?  If so, what switches
need to be fed to the command?

Other suggestions?
If your newly created partitions are > 16GB as stated, you should be
able to recreate raid1 md0 using mdadm via your rescue disk.  After the
re-sync completes, you can reboot the machine.  Remember, raid1 is
mirroring :)

Regards,
Mike T.

Re: Shrinking a RAID1 device mounted as root?

From: Paul Clements <hidden>
Date: 2004-07-14 16:42:21

Marlier, Ian wrote:
Because /dev/hd[ab]1 is larger than /dev/md0, and the starting block of
the partitions is the same, the filesystem should remain intact.
So you are saying that the filesystem was less than 16GB in size to 
start with?
However, upon rebooting, I ran into a problem.  /dev/md0 cannot be
mounted because of a problem with the superblocks.
Right, the superblocks would have been between 64KB and 128KB from the 
end of the original md device, which presumably was ~33GB in size. Now 
that the partitions are smaller, the superblocks are no longer located 
inside of the partitions, so the new partitions effectively have no 
superblocks.
I figure that something needs to be done with mdadm to get it to
recognize the "new" /dev/hda1 and /dev/hdb1 as /dev/md0 -- but I don't
want to do a mdadm --create because that will overwrite the filesystem
already on the disks (I think?). 
Create will write new superblocks to /dev/hda1 and /dev/hdb1. Without 
these, the array cannot be started. The superblocks are what tell the md 
driver that /dev/md0 is composed of /dev/hda1 and /dev/hdb1.

If the filesystem is at least 128KB smaller than the partitions, then 
you'll have room for the superblocks at the end. Otherwise, go back with 
fdisk and make the partitions just a little bit larger and then do your 
mdadm --create.

Is this something that mdadm --assemble can do?  If so, what switches
need to be fed to the command?
Assemble requires that the superblocks already be present, so until they 
are re-created, you cannot assemble the array.

--
Paul

RE: Shrinking a RAID1 device mounted as root?

From: Guy <hidden>
Date: 2004-07-14 16:44:55

The superblock is at the end of the partition.  If the size is different, md
will not find the superblock.

Guy

-----Original Message-----
From: linux-raid-owner@vger.kernel.org
[mailto:linux-raid-owner@vger.kernel.org] On Behalf Of Marlier, Ian
Sent: Wednesday, July 14, 2004 11:48 AM
To: linux-raid@vger.kernel.org
Subject: Shrinking a RAID1 device mounted as root?

Hey all...

I'm looking for some help figuring out how to shrink a RAID1 device
that's mounted as root on a Red Hat system.

The device setup is this:
Raiddev	/dev/md0
	Device	/dev/hda1
	Raid-disk	0
	Device	/dev/hdb1
	Raid-disk	1

Hda and hdb are both 36GB ATA hard drives, and each currently has a
partition of about 33GB formatted as Linux RAID autodetect.  Each also
has a swap partition.

What I'd like to do is shrink partition 1 on each disk to around 16GB,
and then create a second RAID1, /dev/md1, with a new partition /dev/hda3
and /dev/hdb3 (leaving the swap device alone.)

I booted off a rescue disk with mdadm, resize2fs, fdisk, etc, and I was
able to shrink /dev/md0 down to 16GB.

I then tried to delete /dev/hda1 and /dev/hdb1 using fdisk, and create 2
new equally-sized partitions in the free space created.  (/dev/hda1,
/dev/hda3, /dev/hdb1, /dev/hdb3, all type Linux RAID Autodetect).
Because /dev/hd[ab]1 is larger than /dev/md0, and the starting block of
the partitions is the same, the filesystem should remain intact.

However, upon rebooting, I ran into a problem.  /dev/md0 cannot be
mounted because of a problem with the superblocks.

I figure that something needs to be done with mdadm to get it to
recognize the "new" /dev/hda1 and /dev/hdb1 as /dev/md0 -- but I don't
want to do a mdadm --create because that will overwrite the filesystem
already on the disks (I think?). 

Is this something that mdadm --assemble can do?  If so, what switches
need to be fed to the command?

Other suggestions?



-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help