Commit e86de5e4 authored by Fam Zheng's avatar Fam Zheng
Browse files

docs: Add section for NVMe VFIO driver



Signed-off-by: default avatarFam Zheng <famz@redhat.com>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20180116060901.17413-9-famz@redhat.com>
Signed-off-by: default avatarFam Zheng <famz@redhat.com>
parent a3d9a352
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -785,6 +785,43 @@ warning: ssh server @code{ssh.example.com:22} does not support fsync
With sufficiently new versions of libssh2 and OpenSSH, @code{fsync} is
supported.

@node disk_images_nvme
@subsection NVMe disk images

NVM Express (NVMe) storage controllers can be accessed directly by a userspace
driver in QEMU.  This bypasses the host kernel file system and block layers
while retaining QEMU block layer functionalities, such as block jobs, I/O
throttling, image formats, etc.  Disk I/O performance is typically higher than
with @code{-drive file=/dev/sda} using either thread pool or linux-aio.

The controller will be exclusively used by the QEMU process once started. To be
able to share storage between multiple VMs and other applications on the host,
please use the file based protocols.

Before starting QEMU, bind the host NVMe controller to the host vfio-pci
driver.  For example:

@example
# modprobe vfio-pci
# lspci -n -s 0000:06:0d.0
06:0d.0 0401: 1102:0002 (rev 08)
# echo 0000:06:0d.0 > /sys/bus/pci/devices/0000:06:0d.0/driver/unbind
# echo 1102 0002 > /sys/bus/pci/drivers/vfio-pci/new_id

# qemu-system-x86_64 -drive file=nvme://@var{host}:@var{bus}:@var{slot}.@var{func}/@var{namespace}
@end example

Alternative syntax using properties:

@example
qemu-system-x86_64 -drive file.driver=nvme,file.device=@var{host}:@var{bus}:@var{slot}.@var{func},file.namespace=@var{namespace}
@end example

@var{host}:@var{bus}:@var{slot}.@var{func} is the NVMe controller's PCI device
address on the host.

@var{namespace} is the NVMe namespace number, starting from 1.

@node disk_image_locking
@subsection Disk image file locking

+1 −0
Original line number Diff line number Diff line
@@ -621,6 +621,7 @@ encrypted disk images.
* disk_images_iscsi::         iSCSI LUNs
* disk_images_gluster::       GlusterFS disk images
* disk_images_ssh::           Secure Shell (ssh) disk images
* disk_images_nvme::          NVMe userspace driver
* disk_image_locking::        Disk image file locking
@end menu