I recently had someone ask me how to rezise a LUN in RHEL without rebooting. The “go-to” method for this admin was to reboot! This is easily accomplished in AIX with “chvg -g”, but how to do this in Linux wasn’t so obvious.
In my example, I’m using LUNs from a SAN attached XIV storage array, using dm-multipath for multipathing and then LVM for carving up the filesystems. After the LUN is resized on the storage array (96Gb to 176GB in my case), we have to scan for changes on the SCSI bus. I’m assuming you have the sg3_utils package installed to get the scsi-rescan command. The simplest thing is to just rescan them all, though you can do them individually if you want:
[root@mmc-tsm2 bin]# scsi-rescan --forcerescan Host adapter 0 (qla2xxx) found. Host adapter 1 (qla2xxx) found. Host adapter 2 (qla2xxx) found. Host adapter 3 (qla2xxx) found. Host adapter 4 (usb-storage) found. Scanning SCSI subsystem for new devices and remove devices that have disappeared Scanning host 0 for all SCSI target IDs, all LUNs Scanning for device 0 0 0 0 ...
This will run for a while as it scans all the LUNs attached to the system. Now lets look at what multipathd thinks:
# multipath -ll dbvg5 dbvg5 (200173800049510dc) dm-7 IBM,2810XIV size=96G features='1 queue_if_no_path' hwhandler='0' wp=rw
Multipathd now has to be updated with the correct information:
# multipathd -k"resize map dbvg5" ok
And check it again:
# multipath -ll dbvg5 dbvg5 (200173800049510dc) dm-7 IBM,2810XIV size=176G features='1 queue_if_no_path' hwhandler='0' wp=rw ...
Now lets look at the PV:
# pvs /dev/mapper/dbvg5 PV VG Fmt Attr PSize PFree /dev/mapper/dbvg5 tsminst1_dbvg lvm2 a-- 96.00g 0
The LUN is resized, multipathd has the correct size, but the LVM PV is still the original size. I’m using whole disk PVs, if you’re using partitions you’ll have to resize the partition with parted or similar tool too. Now we just need to resize the partition:
# pvresize /dev/mapper/dbvg5 Physical volume "/dev/mapper/dbvg5" changed 1 physical volume(s) resized / 0 physical volume(s) not resized # pvs /dev/mapper/dbvg5 PV VG Fmt Attr PSize PFree /dev/mapper/dbvg5 tsminst1_dbvg lvm2 a-- 176.00g 80.00g
Now we can resize our LVs and run resize2fs on the filesystems to take advantage of the additional space.