On Tue, 12 Dec 2006, Jonathan Terhorst wrote: > I need to shrink a RAID1 array and am having trouble with the > persistent superblock; namely, mdadm --grow doesn't seem to relocate > it. If I downsize the array and then shrink the corresponding > partitions, the array fails since the superblock (which is normally > located near the end of the device) now lays outside of the > partitions. Is there any easier way to deal with this than digging > into the mdadm source, manually calculating the superblock offset and > dd'ing it to the right spot? i'd think it'd be easier to recreate the array using --assume-clean after the shrink. for raid1 it's extra easy because you don't need to get the disk ordering correct. in fact with raid1 you don't even need to use mdadm --grow... you could do something like the following (assuming you've already shrunk the filesystem): mdadm --stop /dev/md0 mdadm --zero-superblock /dev/sda1 mdadm --zero-superblock /dev/sdb1 fdisk /dev/sda ... shrink partition fdisk /dev/sdb ... shrink partition mdadm --create --assume-clean --level=1 -n2 /dev/md0 /dev/sd[ab]1 heck that same technique works for raid0/4/5/6 and raid10 "near" and "offset" layouts as well, doesn't it? raid10 "far" layout definitely needs blocks rearranged to shrink. in these other modes you'd need to be careful about recreating the array with the correct ordering of disks. the zero-superblock step is an important defense against future problems with "assemble every array i find"-types of initrds that are unfortunately becomming common (i.e. debian and ubuntu). -dean - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html