我正在configuration存储大量由nginx上传到/ srv / storage目录中的文件的服务。 这些文件由工作人员KVM来宾处理,可能会创build新文件或将扩展属性分配给现有文件。 文件从不被覆盖,但最终被工作人员删除。
所以主机服务器的文件写入速度约为177MB / s。 KVM镜像是存储在主机文件系统中的QCOW2文件,镜像在KVM实例中达到〜155MB / s,这要归功于这个virtio设置:
<driver name='qemu' type='raw' cache='none' io='native'/>
但是我无法得到共享文件夹的结果。 我用virtfs又名virtio 9p获得了最高40MB / s。 看起来没有AIO相当于mount:
mount -t 9p -o trans=virtio,version=9p2000.L uploads /srv/storage
我也在想:
那么如何有效地共享主机的文件夹与扩展属性工作的KVM客人)。
CIFS可以做扩展属性。 您可以在Linux上使用Samba进行设置。
如果您决定直接或通过iSCSI共享LV卷,则无法在没有群集FS的情况下将其共享为r / w。 如果你的空间不足,你可能共享两个卷,一个是主机上的r / w,另一个是客户机上的r / w,而另一个只有非r / w卷上的读取权限。 并保持这两个与drbd或rsync同步。
相当丑陋,但是这是你不能使用NFS的原因
如果您的问题是吞吐量,那么您可能会从增加最大数据包大小中受益。 它默认为8 KiB(msize = 8192)。
最佳值可能需要一些实验,并可能会根据您的使用情况和底层文件系统而有所不同,但是我发现256 KiB(msize = 262144)可以很好地满足我的需要。 吞吐量从〜150 MB / s增加到〜1.5 GB / s。
另见: https : //lime-technology.com/forum/index.php?topic=36345.15
最后,我从KVM切换到支持绑定安装的LXC + Docker容器化。 选定的主机目录被安装在容器内。 由于不涉及networking或翻译,因此性能与主机相同。 此外,多个容器可以一次性写入单个“卷”,而不需要任何独占锁。