在远程文件系统中,transport(传输)和protocol(协议)是两个核心概念,它们共同决定了数据如何在客户端和服务器之间传输,以及如何进行通信和交互.
那么虚拟化场景下有什么特别的么? 注意到所有虚拟机共用同一个物理机, 他们的物理内存实际上是共享的, 由 VMM 统一管理和分配, 也就是不需要高开销的网络通信而可以通过一种高效的内存映射的方式完成通信
最知名的虚拟化平台 QEMU 采用 vhost-user 协议. vhost-user 是一种用于用户态进程与内核态虚拟化组件(如KVM/QEMU)之间进行高速数据传输的通信协议.它最常见的用途是在虚拟机和虚拟设备(如虚拟网络接口、虚拟磁盘)之间实现高效的I/O操作
通常由 qemu 的 virtio-net 的实现虚拟网络通信设备作为 vhost-user 协议的 frontend 部分, 本项目实现了 vhost-user 协议的后端(backend) 部分, 与 VM 通信握手
传统 FUSE 的访问流程如下
能否避免/减少与 kfsd 的通信开销? 能否避免与主机频繁的拷贝数据 from/to, DAX (Direct Access) 是virtiofs中的一项重要特性. 可以将数据可以直接从存储设备映射到用户空间文件区域
启用 DAX 之后可以充分利用主机的 page cache, pte 等加速访存操作, 避免通信和数据拷贝.