There are a few projects in progress within our team here at Intel to work towards this
kind of isolation.
First – we are developing a userspace SPDK vhost-scsi target, which can serve SPDK block
storage into virtual machines. This depends on some changes needed in QEMU to support
userspace vhost-scsi targets. VMs use the standard virtio-scsi driver to communicate with
the SPDK vhost-scsi target. The SPDK vhost-scsi target ensures each VM can only access
the block storage it has been allocated. Host processes could theoretically use a similar
mechanism, but would need a userspace SPDK virtio-scsi driver (similar to the DPDK
rte_virtio userspace driver for networking). Our team is not currently focusing on an
SPDK virtio-scsi driver, but would be happy to accept patches which would add one.
Second – we are developing a lightweight filesystem/block allocator called Blobstore.
This can be used to dynamically partition block devices. In this model, you could create
large “blobs” on an NVMe devices, and assign different blobs to different VMs or host
Long-term, as NVMe devices start to support SR-IOV, you will be able to isolate by
allocate capacity to a namespace, assign that namespace to a VF, and then run your SPDK
application against that VF.
Hope this answers your questions…
From: SPDK <spdk-bounces(a)lists.01.org> on behalf of Pramod Bhatotia
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org>
Date: Friday, February 10, 2017 at 6:53 AM
To: "SPDK(a)lists.01.org" <SPDK(a)lists.01.org>
Subject: [SPDK] Isolation for applications
How could we support an isolation mechanism for competing applications for the userspace
NVMe over Intel SPDK?
Also, is there a file-system/OS support to enforce such isolation?