こんにちは、最近、qemu ターゲットを介して virtio-scsi over rbd の実験を行い (その DISCARD/TRIM サポートのために)、スループットと iops を、ゲストで fio を使用して、同じマシン上で rbd セットアップを介した virtio-blk のスループットと iops と比較しました。 . シーケンシャル読み取り/書き込みのスループットは 7 分の 1 (42.3MB/s 対 309MB/秒) であり、ランダム読み取り/書き込みの iops は 10 分の 1 (546 対 5705) です。
私が行ったことは、OpenStack Juno を使用して仮想マシンをセットアップすることでした。これにより、virtio-blk over rbd セットアップが可能になりました。次に、libvirt configure xml の関連部分を次のように変更しました。
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<auth username='cinder'>
<secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
</auth>
<source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
<host name='192.168.20.105' port='6789'/>
</source>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
これに:
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
<auth username='cinder'>
<secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
</auth>
<source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
<host name='192.168.20.105' port='6789'/>
</source>
<target dev='vda' bus='scsi'/>
<controller type='scsi' model='virtio-scsi' index='0'/>
</disk>
ソフトウェアのバージョンは次のとおりです。
qemu 2.5.1
libvirt 1.2.2
kernel 3.18.0-031800-generic #201412071935 SMP Mon Dec 8 00:36:34 UTC 2014 x86_64 (Ubuntu 14.04 カーネル)
ハイパーバイザーは KVM です。
virtio-scsi と virtio-blk のパフォーマンスの違いはそれほど大きくないと思います。ですから、私が間違っていたことと、妥当なパフォーマンスを達成する方法を指摘してください。
制約は、OpenStack で機能するソリューション (Juno で機能するのが理想的) が必要であり、多くのパッチやコーディングを必要としないことです。たとえば、virtio-scsi + vhost-scsi + scsi-mq について聞いたことがありますが、現在 OpenStack では利用できないようです。