[CentOS] Growing HW RAID arrays, Online

Thu Feb 20 21:50:26 UTC 2014
Billy Crook <bcrook at riskanalytics.com>

We add disks to an LSI raid array periodically to increase the amount
of available space for business needs.

It is understood that this process starts with metal, and has many
layers that must each adjust to make use of the additional space.
Each of these layers also says that it can do that 'online' without
interruption or rebooting.  But making it happen is not that easy.

When the HW raid controller's grow completes, we echo 1 to
/sys/bus/scsi/devices/#:#:#:#/rescan and the kernel notices and
updates the size of the block device. (sdc in this case) sdc1 is the
only partition on the device, and should consume the entire device.

sdc1 is a PV in a VG that holds production data and must not become
unavailable at any time.  After growing sdc as mentioned earlier,
parted notices that the end-of-drive partition table is missing, fixes
it, and grows its disk size to match the new size of sdc.

It all makes sense up to this point. but what happens next is what I
need some advice on. How do we grow sdc1, online? parted says it
doesn't support 'resize' on the filesystem (LVM PV).

The usual answer to parted's lack of support for filesystems, and
insistence to only resize partitions when it can stick its nose in the
filesystem and do that too is: parted sdc rm 1, parted mkpart primary
0% 100%  (thus making a new partition "Around" the old one)

That should work, but I can't get the kernel to 'notice' that sdc1 is
now larger. hdparm -z barfs up an error that sdc is in use. I know
that rebooting likely will fix it. But we cannot reboot. We also
cannot keep making more partitions every time we add a disk. So that's
not a solution either. We need to GROW the gpt partitions online, or
use another partitioning type that supports >6TB I've googled it for
hours and found no good solutions.

This same situation would affect VMs with virtual disks that grow over
time to satisfy business needs, as well as servers mounting iSCSI/FC
storage that grows over time. How would you grow this online?

Going without partitions at all and putting the pv directly on sdc is
no good either.  So we need partitions, and msdos tables don't support
>2TB and the only other in practical use that I know of is gpt, and
thse aparently can't expand online!

Here's where I'm at now in case you're curious
[root at host lib]# parted /dev/sdc unit s print free

Model: SMC SMC2108 (scsi)
Disk /dev/sdc: 8189439999s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End          Size         File system  Name     Flags
 1      34s    8189439966s  8189439933s               primary

Information: Don't forget to update /etc/fstab, if necessary.

[root at host lib]# cat  /sys/bus/scsi/devices/0\:2\:2\:0/block\:sdc/size
8189440000
[root at host lib]# cat  /sys/bus/scsi/devices/0\:2\:2\:0/block\:sdc/sdc1/size
7019519933

# I bet the above 7billion will be around 8billion at the next reboot.
 (Each physical disk has about a billion sectors

-- 
Billy Crook * Network and Security Administrator * RiskAnalytics, LLC