On Thu, Apr 13, 2017 at 01:57:17PM +0300, Vasiliy Tolstov wrote: > Hi! If i want to develop some sort of qemu network block driver to own > storage. I can write qemu driver or tcmu / scst userspace driver and > attach to qemu block device (i'm use linux) > So in theory what path have minimal overhead in case of memory copy > and performance? > Where i can find some info how qemu works with data that needs to be > written or readed from block device passed to vm?
The best approach depends on your requirements. If you want the code to be merged into qemu.git it's important to discuss the requirements first so that everyone is on board with adding another block driver. Three options: 1. Implement iSCSI, NBD, or NFS on your storage server. Doesn't require new QEMU code and users don't need to upgrade QEMU. 2. Implement a block driver in block/. See iSCSI and other network protocol drivers for examples. Useful if your storage system offers snapshot features. 3. Implement vhost-user-scsi in your storage server. You need to write a virtio-scsi backend that runs in a separate userspace process on the host. You are limited to supporting the virtio-scsi device - no IDE, SATA, virtio-blk, etc. vhost-user-scsi is still under active development and you may need to contribute to it if you hit limitations/bugs. Requires low-level knowledge of virtio. Stefan
signature.asc
Description: PGP signature
