ネットワークブロックデバイス - 百科事典
Linuxにおいて、ネットワークブロックデバイス(NBD)は、ブロックデバイス(通常はハードディスクやパーティション)を一つのマシンから別のマシンに転送できるネットワークプロトコルです。例えば、ローカルマシンは別のコンピュータに接続されたハードディスクドライブにアクセスできます。
概要
このプロトコルはもともとLinux 2.1.55用に開発され、1997年にリリースされました。2011年にプロトコルが改訂され、公式に文書化され、今は協力型オープン標準として開発されています。いくつかの互換性のあるクライアントとサーバがあります。
FreeBSDや他のオペレーティングシステム用のLinux互換のNBD実装があります。ネットワークブロックデバイスという用語は時として汎用語としても使用されます。
技術的には、ネットワークブロックデバイスはサーバ部分、クライアント部分、その間のネットワークの3つのコンポーネントで実現されています。クライアントマシンでは、エクスポートされたデバイスノードを使用し、カーネルドライバーが仮想デバイスを実装します。プログラムがデバイスにアクセスしようとするたびに、カーネルドライバーはクライアント部分がカーネルに完全に実装されていない場合でもユーザースペースプログラムの助けを借りて、データが物理的に存在するサーバマシンにリクエストを転送します。サーバマシンでは、クライアントからのリクエストはユーザースペースプログラムによって処理されます。
ネットワークブロックデバイスサーバは、通常は一般的なコンピュータ上で動作するユーザースペースプログラムとして実装されます。ネットワークブロックデバイスサーバに特有の全機能は、プロセスがクライアントと従来のソケットを通じて通信し、従来のファイルシステムインターフェースを通じてストレージにアクセスするユーザースペースプロセスに収められています。
ネットワークブロックデバイスクライアントモジュールは、Linuxを含むUnixライクなオペレーティングシステムで利用可能です。
代替プロトコル
iSCSI: 多くのLinuxディストリビューション上の"target-utils" iscsiパッケージ
NVMe-oF: ネットワーク上でNVMeネームスペースとしてブロックデバイスを公開する同等のメカニズム、TCP、Fibre Channel、RDMAなど、ほとんどのオペレーティングシステムにネイティブ
Loopデバイス: 同じようなメカニズムですが、リモートのファイルではなくローカルのファイルを使用
DRBD: Linuxプラットフォーム用の分散レプリケーションブロックデバイス
ATA over Ethernet: Ethernetを通じてATAコマンドを送信
USB/IP: IPを通じてUSBデバイスにネットワークアクセスを提供するプロトコル
参考文献
外部リンク
Network Block Device on GitHub
nbdkit: プラグインベースのNBDサーバとlibnbd: 高性能のCクライアント
qemu-nbd: qemuプロジェクトのnbdツール
BNBD: 代替のNBDサーバ実装
xNBD: Linux用の別のNBDサーバプログラム
The Network Block Device, the Linux Journal