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
--
Billy Crook * Network and Security Administrator * RiskAnalytics, LLC