OS-8154: Expose bhyve sectsize property for virtio block devices

Details

Issue Type:Improvement
Priority:4 - Normal
Status:Resolved
Created at:2020-04-03T15:08:49.030Z
Updated at:2020-04-03T22:36:36.338Z

People

Created by:Former user
Reported by:Former user
Assigned to:Former user

Resolution

Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2020-04-03T22:36:36.331Z)

Fix Versions

2020-04-09 Prognosis Negative (Release Date: 2020-04-09)

Related Links

Labels

bhyve

Description

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).

Comments

Comment by Former user
Created at 2020-04-03T18:24:06.536Z

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.


Comment by Jira Bot
Created at 2020-04-03T20:19:08.268Z

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>


Comment by Jira Bot
Created at 2020-04-03T22:35:48.273Z

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>