forked from vitalif/vitastor
Add notes about VDUSE
parent
30ac899074
commit
57bcba2406
|
@ -13,6 +13,8 @@ remains decent (see an example [here](../performance/comparison1.en.md#vitastor-
|
||||||
|
|
||||||
Vitastor Kubernetes CSI driver is based on NBD.
|
Vitastor Kubernetes CSI driver is based on NBD.
|
||||||
|
|
||||||
|
See also [VDUSE](qemu.en.md#vduse).
|
||||||
|
|
||||||
## Map image
|
## Map image
|
||||||
|
|
||||||
To create a local block device for a Vitastor image run:
|
To create a local block device for a Vitastor image run:
|
||||||
|
|
|
@ -16,6 +16,8 @@ NBD немного снижает производительность из-за
|
||||||
|
|
||||||
CSI-драйвер Kubernetes Vitastor основан на NBD.
|
CSI-драйвер Kubernetes Vitastor основан на NBD.
|
||||||
|
|
||||||
|
Смотрите также [VDUSE](qemu.ru.md#vduse).
|
||||||
|
|
||||||
## Подключить устройство
|
## Подключить устройство
|
||||||
|
|
||||||
Чтобы создать локальное блочное устройство для образа, выполните команду:
|
Чтобы создать локальное блочное устройство для образа, выполните команду:
|
||||||
|
|
|
@ -83,3 +83,43 @@ qemu-img rebase -u -b '' testimg.qcow2
|
||||||
This can be used for backups. Just note that exporting an image that is currently being written to
|
This can be used for backups. Just note that exporting an image that is currently being written to
|
||||||
is of course unsafe and doesn't produce a consistent result, so only export snapshots if you do this
|
is of course unsafe and doesn't produce a consistent result, so only export snapshots if you do this
|
||||||
on a live VM.
|
on a live VM.
|
||||||
|
|
||||||
|
## VDUSE
|
||||||
|
|
||||||
|
Linux kernel, starting with version 5.15, supports a new interface for attaching virtual disks
|
||||||
|
to the host - VDUSE (vDPA Device in Userspace). QEMU, starting with 7.2, has support for
|
||||||
|
exporting QEMU block devices over this protocol using qemu-storage-daemon.
|
||||||
|
|
||||||
|
VDUSE has the same problem as other FUSE-like interfaces in Linux: if a userspace process hangs,
|
||||||
|
for example, if it loses connectivity with Vitastor cluster - active processes doing I/O may
|
||||||
|
hang in the D state (uninterruptible sleep) and you won't be able to kill them even with kill -9.
|
||||||
|
In this case reboot will be the only way to remove VDUSE devices from system.
|
||||||
|
|
||||||
|
On the other hand, VDUSE is faster than [NBD](nbd.en.md), so you may prefer to use it if
|
||||||
|
performance is important for you. Approximate performance numbers:
|
||||||
|
direct fio benchmark - 115000 iops, NBD - 60000 iops, VDUSE - 90000 iops.
|
||||||
|
|
||||||
|
To try VDUSE you need at least Linux 5.15, built with VDUSE support
|
||||||
|
(CONFIG_VIRTIO_VDPA=m and CONFIG_VDPA_USER=m). Debian Linux kernels have these options
|
||||||
|
disabled by now, so if you want to try it on Debian, use a kernel from Ubuntu
|
||||||
|
[kernel-ppa/mainline](https://kernel.ubuntu.com/~kernel-ppa/mainline/) or Proxmox.
|
||||||
|
|
||||||
|
Commands to attach Vitastor image as a VDUSE device:
|
||||||
|
|
||||||
|
```
|
||||||
|
modprobe vduse virtio-vdpa
|
||||||
|
qemu-storage-daemon --daemonize --blockdev '{"node-name":"test1","driver":"vitastor",\
|
||||||
|
"etcd-host":"192.168.7.2:2379/v3","image":"testosd1","cache":{"direct":true,"no-flush":false},"discard":"unmap"}' \
|
||||||
|
--export vduse-blk,id=test1,node-name=test1,name=test1,num-queues=16,queue-size=128,writable=true
|
||||||
|
vdpa dev add name test1 mgmtdev vduse
|
||||||
|
```
|
||||||
|
|
||||||
|
After running these commands /dev/vda device will appear in the system and you'll be able to
|
||||||
|
use it as a normal disk.
|
||||||
|
|
||||||
|
To remove the device:
|
||||||
|
|
||||||
|
```
|
||||||
|
vdpa dev del test1
|
||||||
|
kill <qemu-storage-daemon_process_PID>
|
||||||
|
```
|
||||||
|
|
|
@ -87,3 +87,43 @@ qemu-img rebase -u -b '' testimg.qcow2
|
||||||
Это можно использовать для резервного копирования. Только помните, что экспортировать образ, в который
|
Это можно использовать для резервного копирования. Только помните, что экспортировать образ, в который
|
||||||
в то же время идёт запись, небезопасно - результат чтения не будет целостным. Так что если вы работаете
|
в то же время идёт запись, небезопасно - результат чтения не будет целостным. Так что если вы работаете
|
||||||
с активными виртуальными машинами, экспортируйте только их снимки, но не сам образ.
|
с активными виртуальными машинами, экспортируйте только их снимки, но не сам образ.
|
||||||
|
|
||||||
|
## VDUSE
|
||||||
|
|
||||||
|
В Linux, начиная с версии ядра 5.15, доступен новый интерфейс для подключения виртуальных дисков
|
||||||
|
к системе - VDUSE (vDPA Device in Userspace), а в QEMU, начиная с версии 7.2, есть поддержка
|
||||||
|
экспорта блочных устройств QEMU по этому протоколу через qemu-storage-daemon.
|
||||||
|
|
||||||
|
VDUSE страдает общей проблемой FUSE-подобных интерфейсов в Linux: если пользовательский процесс
|
||||||
|
подвиснет, например, если будет потеряна связь с кластером Vitastor - читающие/пишущие в кластер
|
||||||
|
процессы могут "залипнуть" в состоянии D (непрерываемый сон) и их будет невозможно убить даже
|
||||||
|
через kill -9. В этом случае удалить из системы устройство можно только перезагрузившись.
|
||||||
|
|
||||||
|
С другой стороны, VDUSE быстрее по сравнению с [NBD](nbd.ru.md), поэтому его может
|
||||||
|
быть предпочтительно использовать там, где производительность важнее. Порядок показателей:
|
||||||
|
прямое тестирование через fio - 115000 iops, NBD - 60000 iops, VDUSE - 90000 iops.
|
||||||
|
|
||||||
|
Чтобы использовать VDUSE, вам нужно ядро Linux версии хотя бы 5.15, собранное с поддержкой
|
||||||
|
VDUSE (CONFIG_VIRTIO_VDPA=m и CONFIG_VDPA_USER=m). В ядрах в Debian Linux поддержка пока
|
||||||
|
отключена - если хотите попробовать эту функцию на Debian, поставьте ядро из Ubuntu
|
||||||
|
[kernel-ppa/mainline](https://kernel.ubuntu.com/~kernel-ppa/mainline/) или из Proxmox.
|
||||||
|
|
||||||
|
Команды для подключения виртуального диска через VDUSE:
|
||||||
|
|
||||||
|
```
|
||||||
|
modprobe vduse virtio-vdpa
|
||||||
|
qemu-storage-daemon --daemonize --blockdev '{"node-name":"test1","driver":"vitastor",\
|
||||||
|
"etcd-host":"192.168.7.2:2379/v3","image":"testosd1","cache":{"direct":true,"no-flush":false},"discard":"unmap"}' \
|
||||||
|
--export vduse-blk,id=test1,node-name=test1,name=test1,num-queues=16,queue-size=128,writable=true
|
||||||
|
vdpa dev add name test1 mgmtdev vduse
|
||||||
|
```
|
||||||
|
|
||||||
|
После этого в системе появится устройство /dev/vda, которое можно будет использовать как
|
||||||
|
обычный диск.
|
||||||
|
|
||||||
|
Для удаления устройства из системы:
|
||||||
|
|
||||||
|
```
|
||||||
|
vdpa dev del test1
|
||||||
|
kill <PID_процесса_qemu-storage-daemon>
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue