コンテンツにスキップ

Network block device

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Network Block Deviceクライアントとサーバー間の初期化・ハンドシェイクの16進ダンプ

Linux上で、Network Block Device (ネットワークブロックデバイス; NBD)とは、ブロックデバイス(典型的には、ハードディスクやパーティション)を、 あるマシンからもう1台のマシンへ提供するのに使われるネットワークプロトコルである。 例えば、あるローカルマシンから、他のコンピューターに接続されたハードディスクドライブにアクセスすることができる。


Overview

[編集]

概要

[編集]

このプロトコルは、元々はLinux 2.1.55用に開発され、1997年にリリースされた。[1] 2011年にプロトコルは改訂され、正式に文書化された。 現在は複数の開発者が協力して開発するオープン標準として開発されている。 相互運用可能な複数のクライアントとサーバーが存在している。

Linuxと互換性のあるNDBの実装は、FreeBSDやその他のオペレーティングシステムに存在している。 「network block device (ネットワークブロックデバイス)」という用語は、より広い技術を指すのに使われることがある。

技術的には、ネットワークブロックデバイスは3つの部分から構成される。 3つの部分とは、サーバーとクライアント、それらの間のネットワークである。 クライアントマシン上では、エクスポートされたデバイスノードを利用し、カーネルドライバーが仮想デバイスを実装する。 プログラムがそのデバイスにアクセスしようとすると、カーネルドライバーがリクエストを実際に物理的にデータを保管しているサーバーマシンへと送る (クライアントがカーネル内部で全て実装されていない場合には、ユーザースペースのプログラムの助けも必要となる)。 サーバーマシンでは、クライアントからのリクエストはユーザースペースのプログラムによって処理される。

ネットワークブロックデバイスサーバーは、典型的には汎用コンピューター上のユーザースペースのプログラムとして実装される。 ネットワークブロックデバイスサーバーに特有の機能は、全てユーザースペースのプロセスで実現できる。 そのプロセスは、一般的なソケットでクライアントと通信し、一般的なファイルシステムのインターフェイスでストレージへのアクセスを行うためである。

ネットワークブロックデバイスモジュールは、Linuxを含むUnix系オペレーティングシステムで利用可能である。


類似するプロトコル

[編集]
  • iSCSI: 多くのLinuxディストリビューションで「target-utils」というiSCSIパッケージを利用可能である。
  • NVMe-oF: 同じ仕組みで、ブロックデバイスをNVMe名前空間として、TCPやFibre Channel、RDMAなどの上で見えるようにする。多くのオペレーティングシステムで利用可能である。
  • ループデバイス: 類似の仕組みだが、リモートでなくローカルのファイルシステムを利用する。
  • DRBD: Distributed Replicated Block DeviceはLinuxプラットフォーム用の分散ストレージシステム。
  • ATA over Ethernet: イーサネット上でATAコマンドを送る。
  • USB/IP: IP上でUSBデバイスにネットワーク経由でアクセスできるようにするプロトコル。[2][3]

脚注

[編集]
  1. ^ The Network Block Device | Linux Journal”. 2025年11月2日閲覧。
  2. ^ Documentation/usb/usbip_protocol.txt”. kernel.org (2016年3月21日). 2017年4月9日閲覧。
  3. ^ USB over IP tunnel”. OpenWrt (2016年6月17日). 2017年4月9日閲覧。

外部サイト

[編集]
  • Network Block Device - GitHub
  • nbdkitはプラグイン式のNBDサーバーであり、libnbdは高機能なC言語によりクライアント実装である。
  • qemu-nbdは、Qemuプロジェクトによるnbd用ツールである。
  • BNBDは、NBDサーバーの実装の1つである。
  • xNBDは、Linux用のNBDサーバーの実装の1つである。
  • The Network Block Device: the Linux Journalの記事。