Hi Pramod,


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 processes.


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@lists.01.org> on behalf of Pramod Bhatotia <pramod.bhatotia@gmail.com>
Reply-To: Storage Performance Development Kit <spdk@lists.01.org>
Date: Friday, February 10, 2017 at 6:53 AM
To: "SPDK@lists.01.org" <SPDK@lists.01.org>
Subject: [SPDK] Isolation for applications


Hi everyone,

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?