Руководство администратора Network Block Device
Network Block Device (NBD) отвечает за серверную часть протокола сетевого блочного устройства. Протокол предоставляет доступ к томам SDS как к обычным блочным устройствам.
Список доступных действий
NBD_OPT_EXPORT_NAME — идентифицирует том и тип аренды в формате volume_id[:lease_type];
NBD_OPT_GO/NBD_OPT_INFO — содержит информацию о томе в виде отдельных инфо-запросов, включая описание тома в формате shard_id:volume_id:lease_type:use_count и размер блока;
NBD_OPT_LIST — отображает список идентификаторов томов, подключенных к серверу на данный момент;
NBD_OPT_ABORT — разрыв соединения на этапе обмена опциями;
NBD_CMD_READ — чтение;
NBD_CMD_WRITE — запись;
NBD_CMD_TRIM — трим;
NBD_CMD_DISC — разрыв сессии, soft disconnect;
NBD_CMD_FLUSH — сброс кэша.
Опции командной строки
Доступные опции командной строки:
nbd_server --helpA multi-sharded NBD server to proxy client requests to SDS volumes through libclient backend NBD Server options:-h [ --help ] show help message--help-seastar show help message about seastar options--help-loggers print a list of logger names and exit--log-to-file arg (=1) redirect log output to the file--log-level arg (=info) log level: [trace, debug, info, warn, error]--log-dir arg (=/var/log/storage) path to directory where log files will be located--log-buf-cnt arg (=30) number of internal logger buffers (min 1)--log-buf-size-mb arg (=1) size (in MB) of logger buffer (min 1)--log-compress-level arg (=3) compression level for zstd algo--log-rotate-file-cnt arg (=20) number of files for rotation--log-rotate-file-size-mb arg (=128) file size (in MB) when rotation should happen (0 - no threshold)--config arg (=/etc/storage/nbdd/nbd.conf) Path to NBD server config file--seastar-config arg (=/etc/storage/nbdd/seastar.conf) Path to Seastar config file--host-config arg (=/etc/storage/host.yml) SDS cluster config--membership arg (=/etc/storage/mds_list.yml) MDS server list--open-timeout-sec arg (=10) Volume opened and ready timeout in seconds--cs-rpc-timeout-sec arg (=60) CS RPC request timeout in seconds--port arg (=10809) NBD port to use--ip arg (=0.0.0.0) IP to listen to incoming connections--use-tcp arg (=0) Use TCP connection--socket-path arg (=/var/run/storage/nbdd/nbd_unix_domain.socket) Unix domain socket for incoming connections--sequential arg (=0) Handle requests sequentially--prom-ip arg (=0.0.0.0) ip of Prometheus endpoint--prom-port arg (=9991) port of Prometheus endpoint
Стандартные опции фрэймворка Seastar и логирования
По умолчанию сервер запускается на всех доступных шардах. Чтобы запустить сервер на одном шарде и перенаправить логирование на стандартный вывод, используйте команду:
$ nbd_server -c 1 --log-to-file 0
Большинство опций продублированы в соответствующих конфигурационных файлах. Эти файлы имеют приоритет над опциями, переданными через командную строку. Расположение конфигурационных файлов следует нормам, принятым в проекте SDS. При установке NBD-сервера из пакета недостающие файлы и папки будут созданы автоматически.
Использование вместе со стандартным NBD-клиентом
Для проверки работоспособности сервера воспользуйтесь стандартным NBD-клиентом. В приведеннм ниже примере предполагается, что SDS-кластер уже развернут, в нем созданы два тома с идентификаторами 99c84d46befcb876 и aecfbdcd70800d70.
Установите NBD-клиент из пакетов дистрибутива:
apt install nbd-clientЗагрузите модуль ядра nbd.ko:
modprobe nbdЗапустите сервер через loopback:
nbd_server --use-tcp 1 --log-to-file 0Подключитесь к томам:
nbd-client --nonetlink --name=99c84d46befcb876 127.0.0.1 /dev/nbd0nbd-client --no-optgo --nonetlink --name=aecfbdcd70800d70:LEASE_EXCLUSIVE 127.0.0.1 /dev/nbd1Где:
nonetlink — опция означает, что пользователь не будет использовать интерфейс netlink вместо стандартного ioctl;
no-optgo— опция запрещает пользователю использовать NBD_OPT_GO протокола NBD для фазы установления соединения.
В случае успеха клиент выведет размер подключенного тома:
Negotiation: ..size = 16384MBbs=512, sz=17179869184 bytes
Теперь с подключенными устройствами можно работать как с обычными блочными. Например, создать на них разделы и файловую систему или запустить Fio:
fio --filename=/dev/nbd0 --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=8 --runtime=120 --numjobs=1 --time_based --group_reporting --name=throughput-test-job --eta-newline=1
Устройство можно отключить от сервера командой nbd-client -d /dev/nbd0.
Получение информации по томам
Для получения списка подключенных томов воспользуйтесь стандартным NBD-клиентом. Пример TCP-сессии:
nbd-client --nonetlink -l 127.0.0.1
Стандартный клиент не поддерживает информационные опции. Для получения более подробной информации установите утилиту nbdinfo командой apt install libnbd-bin.
Аналогичный nbd-client запрос в nbdinfo:
$ nbdinfo nbd://localhost --listprotocol: newstyle-fixed without TLS, using simple packetsexport="0x99c84d46befcb876":export-size: 17179869184 (16G)uri: nbd://localhost:10809/0x99c84d46befcb876is_rotational: falseis_read_only: falsecan_cache: falsecan_df: falsecan_fast_zero: falsecan_flush: truecan_fua: falsecan_multi_conn: falsecan_trim: truecan_zero: falseblock_size_minimum: 4096block_size_preferred: 4096block_size_maximum: 1048576export="0xaecfbdcd70800d70":export-size: 17179869184 (16G)uri: nbd://localhost:10809/0xaecfbdcd70800d70is_rotational: falseis_read_only: falsecan_cache: falsecan_df: falsecan_fast_zero: falsecan_flush: truecan_fua: falsecan_multi_conn: falsecan_trim: truecan_zero: falseblock_size_minimum: 4096block_size_preferred: 4096block_size_maximum: 1048576
При необходимости можно получить более подробную информацию по отдельному тому:
nbdinfo nbd://localhost/99c84d46befcb876protocol: newstyle-fixed without TLS, using simple packets export="0x99c84d46befcb876":description: 0:0x99c84d46befcb876:LEASE_SHARED_RW:1export-size: 17179869184 (16G)content: datauri: nbd://localhost:10809/99c84d46befcb876is_rotational: falseis_read_only: falsecan_cache: falsecan_df: falsecan_fast_zero: falsecan_flush: truecan_fua: falsecan_multi_conn: falsecan_trim: truecan_zero: falseblock_size_minimum: 4096block_size_preferred: 4096block_size_maximum: 1048576
Запуск NBD-сервиса и включение автозапуска
Параметры запуска считываются из конфигурационных файлов /etc/storage/nbdd/nbd.conf и /etc/storage/nbdd/seastar.conf.
Запуск сервиса и включение автозапуска:
systemctl start storage-nbdd.servicesystemctl enable storage-nbdd.service
Остановка сервиса:
systemctl stop storage-nbdd.service
Проверка состояния сервиса:
systemctl is-active storage-nbdd.service