В Linux сетевое блочное устройство (NBD) — это сетевой протокол , который можно использовать для пересылки блочного устройства (обычно жесткого диска или раздела) с одной машины на другую. Например, локальная машина может получить доступ к жесткому диску , подключенному к другому компьютеру.
Первоначально протокол был разработан для Linux 2.1.55 и выпущен в 1997 году. [1] В 2011 году протокол был пересмотрен, официально задокументирован и теперь разрабатывается как совместный открытый стандарт . Существует несколько совместимых клиентов и серверов.
Существуют Linux-совместимые реализации NBD для FreeBSD и других операционных систем. Термин «сетевое блочное устройство» иногда также используется в общем смысле.
Технически сетевое блочное устройство реализуется тремя компонентами: серверной частью, клиентской частью и сетью между ними. На клиентской машине, на которой находится узел устройства, драйвер ядра управляет устройством. Всякий раз, когда программа пытается получить доступ к устройству, драйвер ядра пересылает запрос (если клиентская часть не полностью реализована в ядре, это можно сделать с помощью программы пользовательского пространства ) на серверную машину, на которой физически находятся данные. На серверной машине запросы от клиента обрабатываются программой пользовательского пространства.
Сетевые серверы блочных устройств обычно реализуются как программа пользовательского пространства, работающая на компьютере общего назначения. Все функции, характерные для сетевых серверов блочных устройств, могут находиться в процессе пользовательского пространства, поскольку процесс взаимодействует с клиентом через обычные сокеты и получает доступ к хранилищу через обычный интерфейс файловой системы .
Клиентский модуль сетевого блочного устройства доступен в Unix-подобных операционных системах, включая Linux.