Features/VirtioSCSI: Difference between revisions
(→Status) |
No edit summary |
||
(24 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
A virtio storage interface for efficient I/O that overcomes virtio-blk limitations and supports advanced SCSI hardware. | A virtio storage interface for efficient I/O that overcomes virtio-blk limitations and supports advanced SCSI hardware. | ||
= Features = | |||
* /dev/sda inside guest | |||
* Multiple LUNs per PCI adapter, solves virtio-blk 1:1 scalability problem | |||
* SCSI passthrough (tape, CD burning, ...) | |||
= Status = | = Status = | ||
* Virtio device specification | * Virtio device specification: part of VIRTIO 1.0 | ||
* Linux guest driver: working | |||
** Multi-queue / fine-grained per-queue locking | |||
* Linux guest driver | * QEMU hardware emulation using SCSI emulation: working | ||
** | ** Added support for WRITE SAME commands | ||
** Added support for hotplug events | |||
* QEMU hardware emulation using SCSI emulation | * QEMU hardware emulation using vhost-scsi: working | ||
** | * Libvirt support: working | ||
** | * SeaBIOS support: working | ||
* QEMU hardware emulation using vhost-scsi | * Tested use include: | ||
** | ** CD-ROM/DVD burning passthrough | ||
** | ** Tape passthrough | ||
* | ** 100s of LUNs (scalability) | ||
** | ** LUN hotplug (known to work with manual hotplug) | ||
** | |||
= Future tasks = | = Future tasks = | ||
* Pick up vhost-scsi work again: | * Pick up vhost-scsi work again: | ||
** Port QEMU hw/virtio-scsi.c vhost-scsi support onto latest code | ** Port QEMU hw/virtio-scsi.c vhost-scsi support onto latest code | ||
** add QEMU Object Model (QOM) support to the vhost-scsi device | |||
** Port LIO vhost-scsi code onto latest lio.git code | ** Port LIO vhost-scsi code onto latest lio.git code | ||
** Update vhost-scsi to implement latest virtio-scsi device specification | |||
** Ensure vhost-scsi I/O still works | ** Ensure vhost-scsi I/O still works | ||
** Design libvirt integration for LIO | ** Design libvirt integration for LIO | ||
* QEMU SCSI target: | |||
** Add support for rerror/werror to scsi-generic | |||
* Complete virtio-scsi spec implementation: | |||
** Add support for asynchronous media change notifications | |||
* Use cases to flesh out: | |||
** Multipath inside guest | |||
* Performance analysis | |||
** Compare against virtio-blk I/O (rough numbers: 6% slower on iozone with a tmpfs-backed disk) | |||
** Compare passthrough performance against bare metal host SCSI | |||
** Measure scalability and where the bottlenecks are (full virtqueues? locks?) | |||
= | = Specifications = | ||
* / | * [http://ozlabs.org/~rusty/virtio-spec/ Virtio specification] | ||
* | * [http://www.t10.org/drafts.htm SCSI Standards] - especially SAM, SPC, SBC | ||
* [http://www.pcisig.com/specifications/conventional PCI Local Bus 3.0] - useful for understanding virtio-pci | |||
= Links = | = Links = | ||
* [[Features/VirtioSCSI/TCM Overview|In-kernel SCSI target overview]] | |||
* KVM Forum 2011 presentation [http://www.linux-kvm.org/wiki/images/f/f5/2011-forum-virtio-scsi.pdf Virtio SCSI: An alternative virtualized storage stack for KVM] | * KVM Forum 2011 presentation [http://www.linux-kvm.org/wiki/images/f/f5/2011-forum-virtio-scsi.pdf Virtio SCSI: An alternative virtualized storage stack for KVM] | ||
* [ | * [Red Hat whitepaper on virtio-scsi http://wiki.qemu.org/File:Virtio-scsi.pdf] | ||
[[Category:Completed feature pages]] |
Latest revision as of 15:39, 11 October 2016
Overview
A virtio storage interface for efficient I/O that overcomes virtio-blk limitations and supports advanced SCSI hardware.
Features
- /dev/sda inside guest
- Multiple LUNs per PCI adapter, solves virtio-blk 1:1 scalability problem
- SCSI passthrough (tape, CD burning, ...)
Status
- Virtio device specification: part of VIRTIO 1.0
- Linux guest driver: working
- Multi-queue / fine-grained per-queue locking
- QEMU hardware emulation using SCSI emulation: working
- Added support for WRITE SAME commands
- Added support for hotplug events
- QEMU hardware emulation using vhost-scsi: working
- Libvirt support: working
- SeaBIOS support: working
- Tested use include:
- CD-ROM/DVD burning passthrough
- Tape passthrough
- 100s of LUNs (scalability)
- LUN hotplug (known to work with manual hotplug)
Future tasks
- Pick up vhost-scsi work again:
- Port QEMU hw/virtio-scsi.c vhost-scsi support onto latest code
- add QEMU Object Model (QOM) support to the vhost-scsi device
- Port LIO vhost-scsi code onto latest lio.git code
- Update vhost-scsi to implement latest virtio-scsi device specification
- Ensure vhost-scsi I/O still works
- Design libvirt integration for LIO
- QEMU SCSI target:
- Add support for rerror/werror to scsi-generic
- Complete virtio-scsi spec implementation:
- Add support for asynchronous media change notifications
- Use cases to flesh out:
- Multipath inside guest
- Performance analysis
- Compare against virtio-blk I/O (rough numbers: 6% slower on iozone with a tmpfs-backed disk)
- Compare passthrough performance against bare metal host SCSI
- Measure scalability and where the bottlenecks are (full virtqueues? locks?)
Specifications
- Virtio specification
- SCSI Standards - especially SAM, SPC, SBC
- PCI Local Bus 3.0 - useful for understanding virtio-pci
Links
- In-kernel SCSI target overview
- KVM Forum 2011 presentation Virtio SCSI: An alternative virtualized storage stack for KVM
- [Red Hat whitepaper on virtio-scsi http://wiki.qemu.org/File:Virtio-scsi.pdf]