Где описан формат блочного сетевого устройства?

Какой формат протокола сетевого блочного устройства? Утверждается, что это просто, но я не могу найти какие-либо RFC или подобные вещи, которые описывают то, что клиент и сервер должны отправить.

2 ответа

Нашел себя. Похоже, вот документ: https://github.com/yoe/nbd/blob/master/doc/proto.md. Не все так просто...

Кроме того, существует простой сервер на основе Python: http://lists.canonical.org/pipermail/kragen-hacks/2004-May/000397.html

Кроме того, точный формат связи клиента NBD и сервера NBD можно кратко описать следующим образом:

Клиент: клиентский компонент NBD настраивает локальное блочное устройство как /dev/nbdX. Запросы, отправленные на это устройство, отправляются через сокет на серверную часть, реализованную в пользовательском пространстве. Клиент можно настроить с помощью утилиты пользовательского пространства под названием nbd-client [1].

Сервер: Сервер реализует обработчики пользовательского пространства для запросов, отправленных клиентом. NBD может использовать сокеты домена Unix вместо сетевых сокетов, чтобы исключить накладные расходы на управление соединениями. Кроме того, для увеличения производительности можно использовать многоконнектное соединение за счет введенного параллелизма в серверной части [1]. Существуют высокопроизводительные серверные реализации с поддержкой плагинов, такие как nbdkit или nbd-server.

В дополнение к более раннему полезному ответу, в котором упоминается proto.md , ниже приведены еще несколько полезных ресурсов, которые могут помочь более подробно понять функции клиента и сервера.

Ссылки и ресурсы:

[1] BUSE: заблокировать устройство в пространстве пользователя

[2] Журнал Network Block Device-Linux

[3] BDUS: реализация блочных устройств в пользовательском пространстве

Другие вопросы по тегам