To follow-up and provide a conclusion to my issue, in case anyone else runs into a similar situation.
TLDR - go to bottom and read item #7.
To recap the issue: I have a Dell PowerEdge server with a CentOS KVM host (Earth) with one CentOS guest (Sequoia) that I am trying to expand the partition and filesystem on. I have LVM logical volumes on the host system (Earth), which are used as devices/partitions on the guest system (Sequoia). In this particular situation I have successfully extended the logical volume (lv_SeqEco) on Earth from 500GB to 700GB.
1. Checking the disk information (lsblk) on Earth shows that the logical volume (lv_SeqEco) is now listed as 700GB.
2. Checking disk information (lsblk) on Sequoia shows that the disk /dev/vde is still listed as 500GB, and partition /dev/vde1 where the mount point /ecosystem is located is also listed as 500GB.
3. I had tried using the resize2fs command to expand the filesystem on /dev/vde1, but it returned with the result that there was nothing to do. Which makes sense now after I checked the disk information, since /dev/vde on Sequoia has not increased from 500GB to 700GB.
4. On previous occasions when I have done this task, I would just start GParted on Sequoia and use the GUI to expand the partition and filesystem. I am unable to do this now, as the VGA adapter on my server has died and I have no graphical output to the attached monitor.
5. My goal was to not have to not have to reboot the system. Especially since it is a 10-year old server and there is no longer VGA output to view the boot process.
What I tried, and what worked to solve my issue:
1. First, I tried rescannning the device on the guest: echo 1 > /sys/devices/pci0000:00/0000:00:01.1/host1/target1:0:0/1:0:0:0/rescan
This resulted in no output, and checking lsblk on the guest (Sequoia) showed no change: vde 500GB disk vde1 500GB part /ecosystem
2. Second, I tried using "virsh blockresize" from the host (Earth) system. Get the block size information earth# virsh domblkinfo SequoiaVM vde output: vde capacity 751619276800
Resize the block (express the size in Bytes) earth# virsh blockresize SequioaVM vde 751619276800B output: Block device vde is resized.
Check the block device on the guest to confirm. sequoia# lsblk vde 700GB disk vde1 500GB part /ecosystem
Therefore, virsh blockresize was successful.
3. I now have the larger disk recognized on the guest system, but still need to expand the partition and the filesystem. Tried the following options.
resize2fs -p /dev/vde1 output: filesystem is already xx blocks long, nothing to do.
growpart /dev/vde 1 output: This showed output indicating the partition had changed changed: partition=1 start=63 old: size=1048575937 end=1048576000 new: size=1468003572 end=1468003635
However, checking lsblk on the guest still showed the same result vde 700GB disk vde1 500GB part /ecosystem
On the off chance that growpart was successful, I ran resize2fs again and it produced the same result as above.
partprobe output: failed to re-read the partition table on all attached devices (including /dev/vde1); device or resource busy.
Tried using "parted" and its resize command. First, using the print command to get the parameters of /dev/vde (output: end=751617861119B, size=751617828864B). Then changing parted to select (use) /dev/vde1 and used print command to view parameters of /dev/vde1 (output: end=536870879743B, size=536870879744B).
(parted)# resize 1 0 751617861119 output: The location 751617861119 is outside of the device /dev/vde1
Looked at using fdisk; however, the documentation stated that the only way to change the partition size using fdisk is by deleting it and recreating it. I didn't want to do this.
I finally decided that everything indicated that I would not be able to complete this while the system was online and/or mounted, despite all my research information showing that.
4. Unmounted the filesystem of the guest and run partprobe.
sequoia# service smb stop sequoia# umount /ecosystem sequoia# partprobe output: This produced the same warnings as before (failed to re-read the partition, device busy) for all partitions that were still mounted, but did not produce the warning for partition /dev/vde1 that had been unmounted.
sequoia# lsblk vde 700GB disk vde1 700GB part /ecosystem
Success. The new partition is now recognized in the kernel, and I should now be able to resize the filesystem.
5. Run resize2fs
sequoia# resize2fs -p /dev/vde1 output: please run e2fsck -f /dev/vde1 first
sequoia# e2fsck -f -C 0 /dev/vde1 (-C 0 will display the progress) output: system passed all checks.
sequoia# resize2fs -p /dev/vde1 output: resizing the filesystem on /dev/vde1 to 183500446 (4k) blocks, begin Pass 1, extending inode table, filesystem is now 183500446 blocks long.
6. Remount the filesystem and check the filesystem size.
sequoia# mount /dev/vde1 /ecosystem sequoia# service smb start sequoia# df -h filesystem=/dev/vde1 size=689G used=459G available=196G used%=71% mount=/ecosystem
7. So in conclusion I needed to do the following steps to resize and expand my disk without a reboot. There may still be other ways that this can be accomplished, but this worked for my CentOS 6 system (both host and guest).
a. On the host system, lvextend to expand the logical volume used by the guest as it's disk. b. On the host system, virsh blockresize to get the guest system to recognize the expanded disk space. c. On the guest system, growpart to grow the partition to the expanded space. d. On the guest system, unmount the filesystem (stop services as required). e. On the guest system, partprobe to get the kernel to recognize the expanded partition. f. On the guest system, resize2fs (run filesystem check if required) to expand the filesystem.
Thanks to all that provided suggestions and insight, it was very helpful in my research and methodical stepping through this process.
Jeff