qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-devel@nongnu.org, slp@redhat.com
Subject: Re: [qemu-web PATCH v2] Add virtio-blk and virtio-scsi configuration post
Date: Mon, 18 Jan 2021 18:14:38 +0100	[thread overview]
Message-ID: <33baabb9-30b9-6dad-994c-7e28f15be8ce@redhat.com> (raw)
In-Reply-To: <20210118170325.GE255498@stefanha-x1.localdomain>

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	other threads:[~2021-01-18 17:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 10:49 [qemu-web PATCH v2] Add virtio-blk and virtio-scsi configuration post Stefan Hajnoczi
2021-01-06 14:04 ` Thomas Huth
2021-01-14 16:05   ` Stefan Hajnoczi
2021-01-14 19:57     ` Thomas Huth
2021-01-14 20:17 ` Laszlo Ersek
2021-01-18 17:03   ` Stefan Hajnoczi
2021-01-18 17:14     ` Laszlo Ersek [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=33baabb9-30b9-6dad-994c-7e28f15be8ce@redhat.com \
    --to=lersek@redhat.com \
    --cc=berrange@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=slp@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).