3.9 KiB
Документация → Использование → ublk
UBLK
ublk - это новый Linux-интерфейс на основе io_uring для реализации блочных устройств в пространстве пользователя, доступный, начиная с Linux 6.0.
ublk тоже копирует память (т.е. не является zero-copy), но всё равно на данный момент является самым быстрым интерфейсом ядерного блочного устройства и обгоняет и NBD, и VDUSE. Также он позволяет оживлять устройства, у которых умер сервер (процесс-обработчик vitastor-ublk).
Поддерживаются следующие команды:
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}}