[Документация](../../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 --inode --size ` вместо `--image testimg`. vitastor-ublk поддерживает все обычные опции Vitastor, например, `--config_path `, плюс специфичные для 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}} ```