네트워크 블록 장치

리눅스에서 네트워크 블록 장치(Network block device, NBD)는 한 컴퓨터에서 두 번째 컴퓨터로 블록 장치(일반적으로 하드 디스크 또는 파티션)를 전달하는 데 사용할 수 있는 네트워크 프로토콜이다. 예를 들어, 로컬 컴퓨터는 다른 컴퓨터에 연결된 하드 디스크 드라이브에 액세스할 수 있다.

개요
이 프로토콜은 원래 리눅스 2.1.55용으로 개발되어 1997년에 출시되었다. 2011년에 이 프로토콜은 수정되고 공식적으로 문서화되었으며, 현재 개방형 표준으로 협력적으로 개발되고 있다. 여러 상호운용 가능한 클라이언트와 서버가 있다.

FreeBSD 및 기타 운영 체제용 리눅스 호환 NBD 구현이 있다. '네트워크 블록 장치'라는 용어는 때때로 일반적으로 사용되기도 한다.

기술적으로 네트워크 블록 장치는 서버 부분, 클라이언트 부분 및 그 사이의 네트워크라는 세 가지 구성 요소로 구현된다. 내보낸 장치 노드를 사용하는 클라이언트 컴퓨터에서는 커널 드라이버가 가상 장치를 구현한다. 프로그램이 장치에 액세스하려고 할 때마다 커널 드라이버는 요청을 (클라이언트 부분이 커널에 완전히 구현되지 않은 경우 사용자 공간 프로그램의 도움으로 수행할 수 있음) 물리적으로 데이터가 있는 서버 컴퓨터로 전달한다. 서버 컴퓨터에서는 클라이언트의 요청이 사용자 공간 프로그램에 의해 처리된다.

네트워크 블록 장치 서버는 일반적으로 범용 컴퓨터에서 실행되는 사용자 공간 프로그램으로 구현된다. 네트워크 블록 장치 서버에 특정한 모든 기능은 사용자 공간 프로세스에 상주할 수 있다. 왜냐하면 프로세스가 일반 소켓을 통해 클라이언트와 통신하고 일반적인 파일 시스템 인터페이스를 통해 저장소에 액세스하기 때문이다.

네트워크 블록 장치 클라이언트 모듈은 리눅스를 포함한 유닉스 계열 운영 체제에서 사용할 수 있다.

 대체 프로토콜 
 iSCSI: 많은 리눅스 배포판에 있는 "target-utils" ISCSI 패키지.
 NVMe-oF: TCP, 파이버 채널, RDMA 등을 통해 NVMe 네임스페이스로 블록 장치를 노출하는 동등한 메커니즘으로, 대부분의 운영 체제에 기본 내장되어 있다.
 루프 장치: 유사한 메커니즘이지만 원격 파일 대신 로컬 파일을 사용한다.
 DRBD: 분산 복제 블록 장치(Distributed Replicated Block Device)는 리눅스 플랫폼을 위한 분산 스토리지 시스템이다.
 ATA 오버 이더넷: 이더넷을 통해 ATA 명령을 보낸다.
 USB/IP: IP를 통해 USB 장치에 네트워크 액세스를 제공하는 프로토콜이다.

 각주 

 외부 링크 

 nbdkit은 플러그인 기반 NBD 서버이며, libnbd는 고성능 C 클라이언트이다.
 qemu-nbd qemu 프로젝트의 nbd 도구
 BNBD는 대체 NBD 서버 구현이다.
 xNBD는 리눅스용 또 다른 NBD 서버 프로그램이었다.
 The Network Block Device, 리눅스 저널

분류:컴퓨터 네트워킹
분류:리눅스 커널 특징