95 lines
3.9 KiB
Markdown
95 lines
3.9 KiB
Markdown
[Документация](../../README-ru.md#документация) → Использование → ublk
|
||
|
||
-----
|
||
|
||
[Read in English](ublk.en.md)
|
||
|
||
# UBLK
|
||
|
||
[ublk](https://docs.kernel.org/block/ublk.html) - это новый Linux-интерфейс на основе io_uring
|
||
для реализации блочных устройств в пространстве пользователя, доступный, начиная с Linux 6.0.
|
||
|
||
ublk тоже копирует память (т.е. не является zero-copy), но всё равно на данный момент является
|
||
самым быстрым интерфейсом ядерного блочного устройства и обгоняет и [NBD](nbd.ru.md), и [VDUSE](qemu.ru.md#vduse).
|
||
Также он позволяет оживлять устройства, у которых умер сервер (процесс-обработчик vitastor-ublk).
|
||
|
||
Поддерживаются следующие команды:
|
||
|
||
- [map](#map)
|
||
- [unmap](#unmap)
|
||
- [ls](#ls)
|
||
|
||
## map
|
||
|
||
Чтобы создать локальное блочное устройство для образа, выполните команду:
|
||
|
||
```
|
||
vitastor-ublk map [/dev/ublkbN] --image testimg
|
||
```
|
||
|
||
Команда напечатает название блочного устройства вида /dev/ublkb0, которое потом можно
|
||
будет использовать как обычный диск.
|
||
|
||
Для обращения по номеру инода, аналогично другим командам, можно использовать опции
|
||
`--pool <POOL> --inode <INODE> --size <SIZE>` вместо `--image testimg`.
|
||
|
||
vitastor-ublk поддерживает все обычные опции Vitastor, например, `--config_path <path_to_config>`,
|
||
плюс специфичные для ublk:
|
||
|
||
* `--recover` \
|
||
Восстановить ранее подключённое устройство, у которого умер обработчик.
|
||
* `--queue_depth 256` \
|
||
Максимальная глубина очереди устройства.
|
||
* `--max_io_size 1M` \
|
||
Максимальный размер запроса ввода-вывода для устройства. По умолчанию: `max(1 MB, блок данных пула * число частей данных EC)`.
|
||
* `--readonly` \
|
||
Подключить устройство в режиме только для чтения.
|
||
* `--hdd` \
|
||
Пометить устройство как вращающийся жёсткий диск (флаг rotational).
|
||
* `--logfile /path/to/log/file.txt` \
|
||
Писать сообщения о процессе работы в заданный файл, вместо пропуска их
|
||
при фоновом режиме запуска или печати на стандартный вывод при запуске
|
||
в консоли с `--foreground 1`.
|
||
* `--dev_num N` \
|
||
Использовать заданное устройство `/dev/ublkbN` вместо автоматического подбора.
|
||
* `--foreground 1` \
|
||
Не уводить процесс в фоновый режим.
|
||
|
||
Обратите внимание, что опции `ublk_queue_depth` и `ublk_max_io_size` можно
|
||
также задавать в `/etc/vitastor/vitastor.conf` или в другом файле конфигурации,
|
||
заданном опцией `--config_path`.
|
||
|
||
## unmap
|
||
|
||
Для отключения устройства выполните:
|
||
|
||
```
|
||
vitastor-ublk unmap /dev/ublkb0
|
||
```
|
||
|
||
## ls
|
||
|
||
```
|
||
vitastor-ublk ls [--json]
|
||
```
|
||
|
||
Вывести подключённые устройства.
|
||
|
||
Пример вывода в обычном формате:
|
||
|
||
```
|
||
/dev/ublkb0
|
||
image: bench
|
||
pid: 584536
|
||
|
||
/dev/ublkb1
|
||
image: bench1
|
||
pid: 584546
|
||
```
|
||
|
||
Пример вывода в JSON-формате:
|
||
|
||
```
|
||
{"/dev/ublkb0": {"image": "bench", "pid": 584536}, "/dev/ublkb1": {"image": "bench1", "pid": 584546}}
|
||
```
|