forked from vitalif/vitastor
Add qemu-storage-daemon to documentation
parent
3bcf276d4d
commit
fbf0263625
|
@ -34,6 +34,20 @@ qemu-system-x86_64 -enable-kvm -m 1024 \
|
||||||
-vnc 0.0.0.0:0
|
-vnc 0.0.0.0:0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
With a separate I/O thread:
|
||||||
|
|
||||||
|
```
|
||||||
|
qemu-system-x86_64 -enable-kvm -m 1024 \
|
||||||
|
-object iothread,id=vitastor1 \
|
||||||
|
-blockdev '{"node-name":"drive-virtio-disk0","driver":"vitastor","image":"debian9",
|
||||||
|
"cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-device 'virtio-blk-pci,iothread=vitastor1,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,
|
||||||
|
id=virtio-disk0,bootindex=1,write-cache=off' \
|
||||||
|
-vnc 0.0.0.0:0
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also specify inode ID, pool and size manually instead of `:image=<IMAGE>` option: `:pool=<POOL>:inode=<INODE>:size=<SIZE>`.
|
||||||
|
|
||||||
## qemu-img
|
## qemu-img
|
||||||
|
|
||||||
For qemu-img, you should use `vitastor:etcd_host=<HOST>:image=<IMAGE>` as filename.
|
For qemu-img, you should use `vitastor:etcd_host=<HOST>:image=<IMAGE>` as filename.
|
||||||
|
@ -84,6 +98,29 @@ This can be used for backups. Just note that exporting an image that is currentl
|
||||||
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.
|
||||||
|
|
||||||
|
## vhost-user-blk
|
||||||
|
|
||||||
|
QEMU, starting with 6.0, includes support for attaching disks via a separate
|
||||||
|
userspace worker process, called `vhost-user-blk`. It usually has slightly (20-30 us)
|
||||||
|
lower latency.
|
||||||
|
|
||||||
|
Example commands to use it with Vitastor:
|
||||||
|
|
||||||
|
```
|
||||||
|
qemu-storage-daemon \
|
||||||
|
--daemonize \
|
||||||
|
--blockdev '{"node-name":"drive-virtio-disk1","driver":"vitastor","image":"testosd1","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--export type=vhost-user-blk,id=vitastor1,node-name=drive-virtio-disk1,addr.type=unix,addr.path=/run/vitastor1-user-blk.sock,writable=on,num-queues=1
|
||||||
|
|
||||||
|
qemu-system-x86_64 -enable-kvm -m 2048 -M accel=kvm,memory-backend=mem \
|
||||||
|
-object memory-backend-memfd,id=mem,size=2G,share=on \
|
||||||
|
-chardev socket,id=vitastor1,reconnect=1,path=/run/vitastor1-user-blk.sock \
|
||||||
|
-device vhost-user-blk-pci,chardev=vitastor1,num-queues=1,config-wce=off \
|
||||||
|
-vnc 0.0.0.0:0
|
||||||
|
```
|
||||||
|
|
||||||
|
memfd memory-backend is crucial, vhost-user-blk does not work without it.
|
||||||
|
|
||||||
## VDUSE
|
## VDUSE
|
||||||
|
|
||||||
Linux kernel, starting with version 5.15, supports a new interface for attaching virtual disks
|
Linux kernel, starting with version 5.15, supports a new interface for attaching virtual disks
|
||||||
|
|
|
@ -36,6 +36,18 @@ qemu-system-x86_64 -enable-kvm -m 1024 \
|
||||||
-vnc 0.0.0.0:0
|
-vnc 0.0.0.0:0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
С отдельным потоком ввода-вывода:
|
||||||
|
|
||||||
|
```
|
||||||
|
qemu-system-x86_64 -enable-kvm -m 1024 \
|
||||||
|
-object iothread,id=vitastor1 \
|
||||||
|
-blockdev '{"node-name":"drive-virtio-disk0","driver":"vitastor","image":"debian9",
|
||||||
|
"cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
-device 'virtio-blk-pci,iothread=vitastor1,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,
|
||||||
|
id=virtio-disk0,bootindex=1,write-cache=off' \
|
||||||
|
-vnc 0.0.0.0:0
|
||||||
|
```
|
||||||
|
|
||||||
Вместо `:image=<IMAGE>` также можно указывать номер инода, пул и размер: `:pool=<POOL>:inode=<INODE>:size=<SIZE>`.
|
Вместо `:image=<IMAGE>` также можно указывать номер инода, пул и размер: `:pool=<POOL>:inode=<INODE>:size=<SIZE>`.
|
||||||
|
|
||||||
## qemu-img
|
## qemu-img
|
||||||
|
@ -88,6 +100,29 @@ qemu-img rebase -u -b '' testimg.qcow2
|
||||||
в то же время идёт запись, небезопасно - результат чтения не будет целостным. Так что если вы работаете
|
в то же время идёт запись, небезопасно - результат чтения не будет целостным. Так что если вы работаете
|
||||||
с активными виртуальными машинами, экспортируйте только их снимки, но не сам образ.
|
с активными виртуальными машинами, экспортируйте только их снимки, но не сам образ.
|
||||||
|
|
||||||
|
## vhost-user-blk
|
||||||
|
|
||||||
|
QEMU, начиная с 6.0, позволяет подключать диски через отдельный рабочий процесс.
|
||||||
|
Этот метод подключения называется `vhost-user-blk` и обычно имеет чуть меньшую
|
||||||
|
задержку (ниже на 20-30 микросекунд, чем при обычном методе).
|
||||||
|
|
||||||
|
Пример команд для использования vhost-user-blk с Vitastor:
|
||||||
|
|
||||||
|
```
|
||||||
|
qemu-storage-daemon \
|
||||||
|
--daemonize \
|
||||||
|
--blockdev '{"node-name":"drive-virtio-disk1","driver":"vitastor","image":"testosd1","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
|
||||||
|
--export type=vhost-user-blk,id=vitastor1,node-name=drive-virtio-disk1,addr.type=unix,addr.path=/run/vitastor1-user-blk.sock,writable=on,num-queues=1
|
||||||
|
|
||||||
|
qemu-system-x86_64 -enable-kvm -m 2048 -M accel=kvm,memory-backend=mem \
|
||||||
|
-object memory-backend-memfd,id=mem,size=2G,share=on \
|
||||||
|
-chardev socket,id=vitastor1,reconnect=1,path=/run/vitastor1-user-blk.sock \
|
||||||
|
-device vhost-user-blk-pci,chardev=vitastor1,num-queues=1,config-wce=off \
|
||||||
|
-vnc 0.0.0.0:0
|
||||||
|
```
|
||||||
|
|
||||||
|
Здесь критична опция memory-backend-memfd, vhost-user-blk без неё не работает.
|
||||||
|
|
||||||
## VDUSE
|
## VDUSE
|
||||||
|
|
||||||
В Linux, начиная с версии ядра 5.15, доступен новый интерфейс для подключения виртуальных дисков
|
В Linux, начиная с версии ядра 5.15, доступен новый интерфейс для подключения виртуальных дисков
|
||||||
|
|
Loading…
Reference in New Issue