
Hello, I seem to remember that online resize of VirtIO disk is possible. Now I have an Oracle Linux VM with 2.6.39-400.215.3.el6uek.x86_64 kernel where I resize a disk (/dev/vdb) from 500Gb to 900Gb. Apparently the kernel acquired the change because in /var/log/messages I see: May 31 14:16:16 dbatest3 kernel: virtio_blk virtio6: new size: 1887436800 512-byte logical blocks (966 GB/900 GiB) but fdisk seems not to be able to recognize it: [root@dbatest3 ~]# fdisk -l /dev/vdb Disk /dev/vdb: 536.9 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@dbatest3 ~]# oVirt is 4.1.1 with hypervisor running the VM being in CentOS 7.3 with libvirt 2.0.0-10.el7_3.5 and qemu-kvm-ev 2.6.0-28.el7_3.6.1 I was not able to find the rescan option I eventually need to execute (but I think not necessary because the kernel already detected it). Is this a bug in fdisk itself? I have an LVM PV on the whole disk, but of course a pvresize doesn't notice any change in it. I verified that in my kernel the ACPI PCI hotplug feature is compiled into the kernel and not as a module: [root@dbatest3 ~]# grep "CONFIG_HOTPLUG_PCI_ACPI=" /boot/config-2.6.39-400.215.3.el6uek.x86_64 CONFIG_HOTPLUG_PCI_ACPI=y [root@dbatest3 ~]# I tried also this: echo 1 > /sys/devices/pci0000\:00/0000\:00\:09.0/rescan because of the tree below: [root@dbatest3 ~]# ll /sys/devices/pci0000\:00/0000\:00\:09.0/virtio6/ total 0 drwxr-xr-x 3 root root 0 May 31 11:45 block -r--r--r-- 1 root root 4096 May 31 14:19 device lrwxrwxrwx 1 root root 0 May 31 14:19 driver -> ../../../../bus/virtio/drivers/virtio_blk -r--r--r-- 1 root root 4096 May 31 14:19 features -r--r--r-- 1 root root 4096 May 31 14:19 modalias drwxr-xr-x 2 root root 0 May 31 14:18 power -r--r--r-- 1 root root 4096 May 31 14:19 status lrwxrwxrwx 1 root root 0 May 31 14:16 subsystem -> ../../../../bus/virtio -rw-r--r-- 1 root root 4096 May 31 14:16 uevent -r--r--r-- 1 root root 4096 May 31 14:19 vendor [root@dbatest3 ~]# [root@dbatest3 ~]# ll /sys/devices/pci0000\:00/0000\:00\:09.0/virtio6/block total 0 drwxr-xr-x 7 root root 0 May 31 11:45 vdb [root@dbatest3 ~]# [root@dbatest3 ~]# ll /sys/devices/pci0000\:00/0000\:00\:09.0/virtio6/block/vdb/ total 0 -r--r--r-- 1 root root 4096 May 31 14:19 alignment_offset lrwxrwxrwx 1 root root 0 May 31 14:19 bdi -> ../../../../../virtual/bdi/251:16 -r--r--r-- 1 root root 4096 May 31 14:19 capability -r--r--r-- 1 root root 4096 May 31 14:15 dev lrwxrwxrwx 1 root root 0 May 31 14:19 device -> ../../../virtio6 -r--r--r-- 1 root root 4096 May 31 14:19 discard_alignment -r--r--r-- 1 root root 4096 May 31 14:19 ext_range drwxr-xr-x 2 root root 0 May 31 14:18 holders -r--r--r-- 1 root root 4096 May 31 14:19 inflight drwxr-xr-x 2 root root 0 May 31 14:18 power drwxr-xr-x 3 root root 0 May 31 14:16 queue -r--r--r-- 1 root root 4096 May 31 14:19 range -r--r--r-- 1 root root 4096 May 31 14:16 removable -r--r--r-- 1 root root 4096 May 31 14:19 ro -r--r--r-- 1 root root 4096 May 31 14:16 serial -r--r--r-- 1 root root 4096 May 31 14:19 size drwxr-xr-x 2 root root 0 May 31 14:18 slaves -r--r--r-- 1 root root 4096 May 31 14:19 stat lrwxrwxrwx 1 root root 0 May 31 11:45 subsystem -> ../../../../../../class/block drwxr-xr-x 2 root root 0 May 31 14:18 trace -rw-r--r-- 1 root root 4096 May 31 11:45 uevent [root@dbatest3 ~]# Any hint to avoid guest reboot and have fdisk recognize the happened resize? In the future I'm going to upgrade from the current 6.5 version, so that I can also use Virtio-SCSI driver and so standard SCSI commands when adding disks or resizing existing ones, but this VM was "imported" by another environment and I have initially to be stick with it in this precise configuration. Thanks in advance, Gianluca

On Wed, May 31, 2017 at 2:51 PM, Gianluca Cecchi <gianluca.cecchi@gmail.com> wrote:
Hello, I seem to remember that online resize of VirtIO disk is possible. Now I have an Oracle Linux VM with 2.6.39-400.215.3.el6uek.x86_64 kernel where I resize a disk (/dev/vdb) from 500Gb to 900Gb. Apparently the kernel acquired the change because in /var/log/messages I see:
May 31 14:16:16 dbatest3 kernel: virtio_blk virtio6: new size: 1887436800 512-byte logical blocks (966 GB/900 GiB)
but fdisk seems not to be able to recognize it:
[root@dbatest3 ~]# fdisk -l /dev/vdb
Disk /dev/vdb: 536.9 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
[root@dbatest3 ~]#
It seems that one of these two commands got the change available: [root@dbatest3 ~]# blockdev --flushbufs /dev/vdb [root@dbatest3 ~]# blockdev --rereadpt /dev/vdb Now [root@dbatest3 ~]# fdisk -l /dev/vdb Disk /dev/vdb: 966.4 GB, 966367641600 bytes 16 heads, 63 sectors/track, 1872457 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@dbatest3 ~]# tail -3 /var/log/messages May 31 14:16:16 dbatest3 kernel: virtio_blk virtio6: new size: 1887436800 512-byte logical blocks (966 GB/900 GiB) May 31 15:13:49 dbatest3 kernel: vdb: detected capacity change from 536870912000 to 966367641600 May 31 15:13:49 dbatest3 kernel: vdb: unknown partition table [root@dbatest3 ~]# I found the hint/suggestion through this proxmox thread: http://pve-devel.pve.proxmox.narkive.com/LBZ1yFpv/online-resize-of-virtio-bl... Just in case other guys need the same... ;-)
participants (1)
-
Gianluca Cecchi