Features/VirtioSCSI: Difference between revisions
Line 76: | Line 76: | ||
== Zhi Yong Wu's code == | == Zhi Yong Wu's code == | ||
Note: His git tree has mainly done two works: 1.) integrated vhost-scsi with qemu.git/master; 2.) updated tcm_vhost based on latest virio-scsi spec | Note: His git tree has mainly done two works: | ||
1.) integrated vhost-scsi with qemu.git/master; | |||
2.) updated tcm_vhost based on latest virio-scsi spec | |||
* QEMU (virtio-scsi,vhost-scsi): https://github.com/wuzhy/qemu/tree/vhost-scsi | * QEMU (virtio-scsi,vhost-scsi): https://github.com/wuzhy/qemu/tree/vhost-scsi | ||
* Linux (virtio-scsi,tcm_vhost): https://github.com/wuzhy/linux | * Linux (virtio-scsi,tcm_vhost): https://github.com/wuzhy/linux |
Revision as of 02:08, 8 September 2012
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
- Linux guest driver
- Patch on mailing list
- https://lkml.org/lkml/2012/2/5/75
- QEMU hardware emulation using SCSI emulation
- Patches on mailing list
- http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg01642.html
- QEMU hardware emulation using vhost-scsi
- (Stalled) work-in-progress, contact Stefan
- QEMU: http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/virtio-scsi
- Linux: https://github.com/stefanha/linux/tree/tcm_vhost
- Libvirt support
- Patches on mailing list
- http://www.redhat.com/archives/libvir-list/2012-January/msg00537.html
- SeaBIOS support
- Patches on mailing list
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 WRITE SAME commands
- Add support for rerror/werror to scsi-generic
- Complete virtio-scsi spec implementation:
- Add support for hotplug events
- Add support for asynchronous media change notifications
- Multi-queue (with fine-grained locking in the Linux driver?)
- Use cases to test:
- CD-ROM/DVD burning passthrough
- Tape passthrough
- 100s of LUNs (scalability)
- Use cases to flesh out:
- LUN hotplug (known to work with manual hotplug)
- 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
Repositories
Note: you must use either Paolo's trees or Stefan's trees, you cannot mix QEMU from Paolo with Linux from Stefan and vice versa.
Paolo's code with QEMU SCSI emulation
- QEMU (virtio-scsi): git://github.com/bonzini/qemu.git virtio-scsi
- Linux (virtio-scsi): git://github.com/bonzini/virtio-scsi.git
Stefan's code with tcm_vhost
- QEMU (vhost-scsi): http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/virtio-scsi
- tcm_vhost: https://github.com/stefanha/linux/tree/tcm_vhost
Zhi Yong Wu's code
Note: His git tree has mainly done two works: 1.) integrated vhost-scsi with qemu.git/master; 2.) updated tcm_vhost based on latest virio-scsi spec
- QEMU (virtio-scsi,vhost-scsi): https://github.com/wuzhy/qemu/tree/vhost-scsi
- Linux (virtio-scsi,tcm_vhost): https://github.com/wuzhy/linux
Links
- In-kernel SCSI target overview
- KVM Forum 2011 presentation Virtio SCSI: An alternative virtualized storage stack for KVM