Features/VirtioSCSI

From QEMU

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

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

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

Stefan's code with 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

Links