Issue Type: | Improvement |
---|---|
Priority: | 4 - Normal |
Status: | Resolved |
Created at: | 2020-04-03T15:08:49.030Z |
Updated at: | 2020-04-03T22:36:36.338Z |
Created by: | Former user |
---|---|
Reported by: | Former user |
Assigned to: | Former user |
Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2020-04-03T22:36:36.331Z)
2020-04-09 Prognosis Negative (Release Date: 2020-04-09)
Based on user reports, older versions of the Windows virtio driver always reported a block size of 512 for virtio block devices to Windows. New versions of the virtio driver however report the actual block size reported by the virtio device. For most bhyve images this is 8192, which also appears to be incompatible with some applications like SQL server. This can be seen by running the fsinfo
cmdline utility in Windows.
Bhyve supports overriding the block size reported to the guest be using the sectsize=x
parameter. x
is either a single numeric value or the form logical/physical
(otherwise the same value is used for both). Testing with an effected user reports that using a value of 512/4096
appears to allow applications like SQL server to function.
Since our current instructions for building Windows images result in a default zvol block size of 8192, this is what will be reported to guests. This is normally fine (since even with the newer virtio drivers, Windows treats this as a logical sector size of 512 and a physical sector size of 8192), it is only certain applications (such as SQL server) that are incompatible with a 8192 byte physical sector.
Exposing this parameter via vmadm will allow users with existing volumes that encounter such incompatible applications a workaround (at the cost of some potential lowered performance due to possible RMW write amplification).
User reporting the issue with SQL server tried these patches w/ a guest block size value of "512/4096", which allowed SQL server to work correctly (and no other issues from Windows).
I also booted a machine running a PI with these changes and verified (via pargs
) that bhyve was running with the 'sectsize=xxx' parameter and that the guest (an Ubuntu VM) showed the updated block sizes via lsblk
.
illumos-joyent commit c6b5d5788f3f75eefac0f25b62e7ea710a10c0cd (branch master, by Jason King)
OS-8154 Expose bhyve sectsize property for virtio block devices (#283)
Reviewed by: Mike Gerdts <mike.gerdts@joyent.com>
Reviewed by: Mike Zeller <mike.zeller@joyent.com>
Approved by: Mike Zeller <mike.zeller@joyent.com>
smartos-live commit ae292505006b890a769a71b7e56f04d25dd78139 (branch master, by Jason King)
OS-8154 Expose bhyve sectsize property for virtio block devices (#923)
Reviewed by: Mike Gerdts <mike.gerdts@joyent.com>
Reviewed by: Mike Zeller <mike.zeller@joyent.com>
Approved by: Mike Zeller <mike.zeller@joyent.com>