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@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@host lib]# cat /sys/bus/scsi/devices/0:2:2:0/block:sdc/size 8189440000 [root@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