qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [qemu-web PATCH v2] Add virtio-blk and virtio-scsi configuration pos


From: Laszlo Ersek
Subject: Re: [qemu-web PATCH v2] Add virtio-blk and virtio-scsi configuration post
Date: Mon, 18 Jan 2021 18:14:38 +0100

On 01/18/21 18:03, Stefan Hajnoczi wrote:
> On Thu, Jan 14, 2021 at 09:17:55PM +0100, Laszlo Ersek wrote:
>> On 01/05/21 11:49, Stefan Hajnoczi wrote:
>>> The second post in the storage series covers virtio-blk and virtio-scsi.
>>> It compares the two and offers recommendations that users and tools
>>> using QEMU can use as a starting point. Graphs are included comparing
>>> the performance of various options.
>>>
>>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>>> ---
>>> v2:
>>>  * Mention default storage controllers for non-x86 [danpb]
>>>  * Remove statement about read-only ISO virtio-blk devices, both Rich
>>>    Jones and Daniel Berrange commented about this at different times so
>>>    I decided to drop it completely [danpb]
>>>  * Clarify PCI slot limits and multi-function discussion for virtio-blk
>>>    [danpb]
>>>  * Mention multiple virtio-scsi devices for NUMA tuning and that
>>>    emulated LUNs can be HDDs or CD-ROMs [danpb]
>>> ---
>>>  ...020-12-17-virtio-blk-scsi-configuration.md | 115 ++++++++++++++++++
>>>  screenshots/2020-09-15-scsi-devices.svg       |   1 +
>>>  screenshots/2020-09-15-virtio-blk-vs-scsi.svg |   1 +
>>>  3 files changed, 117 insertions(+)
>>>  create mode 100644 _posts/2020-12-17-virtio-blk-scsi-configuration.md
>>>  create mode 100644 screenshots/2020-09-15-scsi-devices.svg
>>>  create mode 100644 screenshots/2020-09-15-virtio-blk-vs-scsi.svg
>>>
>>> diff --git a/_posts/2020-12-17-virtio-blk-scsi-configuration.md 
>>> b/_posts/2020-12-17-virtio-blk-scsi-configuration.md
>>> new file mode 100644
>>> index 0000000..b4361f5
>>> --- /dev/null
>>> +++ b/_posts/2020-12-17-virtio-blk-scsi-configuration.md
>>> @@ -0,0 +1,115 @@
>>> +---
>>> +layout: post
>>> +title:  "Configuring virtio-blk and virtio-scsi Devices"
>>> +date:   2021-01-05 07:00:00 +0000
>>> +author: Stefan Hajnoczi and Sergio Lopez
>>> +categories: [storage]
>>> +---
>>> +The [previous 
>>> article](https://www.qemu.org/2020/09/14/qemu-storage-overview/)
>>> +in this series introduced QEMU storage concepts. Now we move on to look at 
>>> the
>>> +two most popular emulated storage controllers for virtualization: 
>>> virtio-blk
>>> +and virtio-scsi.
>>> +
>>> +This post provides recommendations for configuring virtio-blk and 
>>> virtio-scsi
>>> +and how to choose between the two devices. The recommendations provide good
>>> +performance in a wide range of use cases and are suitable as default 
>>> settings
>>> +in tools that use QEMU.
>>> +
>>> +## Virtio storage devices
>>> +### Key points
>>> +* Prefer virtio storage devices over other emulated storage controllers.
>>> +* Use the latest virtio drivers.
>>> +
>>> +Virtio devices are recommended over other emulated storage controllers as 
>>> they
>>> +are generally the most performant and fully-featured storage controllers in
>>> +QEMU.
>>> +
>>> +Unlike emulations of hardware storage controllers, virtio-blk and 
>>> virtio-scsi
>>> +are specifically designed and optimized for virtualization. The details of 
>>> how
>>> +they work are published for driver and device implementors in the [VIRTIO
>>> +specification](https://docs.oasis-open.org/virtio/virtio/v1.1/virtio-v1.1.html).
>>> +
>>> +Virtio drivers are available for both Linux and Windows virtual machines.
>>> +Installing the latest version is recommended for the latest bug fixes and
>>> +performance enhancements.
>>> +
>>> +If virtio drivers are not available, the AHCI (SATA) device is widely 
>>> supported
>>> +by modern x86 operating systems and can be used as a fallback. On non-x86
>>> +guests the default storage controller can be used as a fallback.
>>> +
>>> +## Comparing virtio-blk and virtio-scsi
>>> +### Key points
>>> +* Prefer virtio-scsi for attaching more than 28 disks or for full SCSI 
>>> support.
>>> +* Prefer virtio-blk in performance-critical use cases.
>>> +* With virtio-scsi, use scsi-block for SCSI passthrough and otherwise use 
>>> scsi-hd.
>>> +
>>> +Two virtio storage controllers are available: virtio-blk and virtio-scsi.
>>> +
>>> +### virtio-blk
>>> +The virtio-blk device presents a block device to the virtual machine. Each
>>> +virtio-blk device appears as a disk inside the guest. virtio-blk was 
>>> available
>>> +before virtio-scsi and is the most widely deployed virtio storage 
>>> controller.
>>> +
>>> +The virtio-blk device offers high performance thanks to a thin software 
>>> stack
>>> +and is therefore a good choice when performance is a priority.
>>> +
>>> +Applications that send SCSI commands are better served by the virtio-scsi
>>> +device, which has full SCSI support. SCSI passthrough was removed from the
>>> +Linux virtio-blk driver in v5.6 in favor of using virtio-scsi.
>>
>> Is "discard=unmap" worth mentioning specifically? For me, that was the
>> reason for switching practically all my domains to virtio-scsi from
>> virtio-blk. ("Delete files in the guest, recover space on the host.")
> 
> virtio-blk supports discard since Linux commit
> 1f23816b8eb8fdc39990abe166c10a18c16f6b21 ("virtio_blk: add discard and
> write zeroes support"). The feature was added in 2018 so you now have
> the choice between virtio-blk or virtio-scsi again :).

Ah, thanks!

(I wonder now if my understanding has been muddled by Windows guest
support... But even the Windows guest driver has commit 335d13682a56
("[viostor] add preliminary support for discard (unmap) command",
2019-06-04), apparently!)

Thanks!
Laszlo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]