네트워크 블록 장치

Network block device
Network Block Device 클라이언트와 서버 간의 초기화 / 핸드셰이크의 16진수

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

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

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

기술적으로, 네트워크 블록 장치는 서버 부분, 클라이언트 부분, 그리고 그들 사이의 네트워크라는 세 가지 요소에 의해 실현된다.디바이스 노드인 클라이언트 시스템에서 커널 드라이버가 디바이스를 제어한다.프로그램이 디바이스에 액세스하려고 할 때마다 커널 드라이버는 요청을 전달한다(클라이언트 부분이 커널에서 완전히 구현되지 않은 경우 사용자 공간 프로그램의 도움을 받아 수행할 수 있음). 데이터는 물리적으로 존재하는 서버 머신에 전달한다.서버 시스템에서 클라이언트의 요청은 userspace 프로그램에 의해 처리된다.

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

네트워크 블록 장치 클라이언트 모듈은 Linux와 Bitrig를 포함한 Unix 유사 운영 체제에서 사용할 수 있다.[2]서버는 사용자 공간 프로그램이기 때문에 잠재적으로 모든 Unix와 유사한 플랫폼에서 실행될 수 있다. 예를 들어, NBD의 서버 부분은 Solaris에 포팅되어 있다.[3]

대체 프로토콜

  • iSCSI: 많은 Linux 배포에서 "target-utils" 패키지.
  • NVMe-oF: 대부분의 운영 체제에 네이티브인 TCP, Fibre Channel, RDMA 및 &c를 통해 NVMe 네임스페이스로 블록 디바이스를 노출하는 동등한 메커니즘
  • 루프 장치: 유사한 메커니즘이지만 원격 파일 대신 로컬 파일을 사용함
  • DRBD: 분산 복제 블록 디바이스는 Linux 플랫폼용 분산 스토리지 시스템임
  • ATA over Ethernet: 이더넷을 통해 ATA 명령 전송
  • USB/IP: IP를 통해 USB 장치에 대한 네트워크 액세스를 제공하는 프로토콜.[4][5]

외부 링크

참조

  1. ^ "The Network Block Device Linux Journal".
  2. ^ Patrick Wildt (2015-04-23). "NBD: Implement Network Block Device support". Bitrig.
  3. ^ Miroslav Kripac (2005-01-21). "Implementing Oracle Real Application Clusters Using Network Block Device Technology". Masaryk University. Retrieved 2016-11-22.
  4. ^ "Documentation/usb/usbip_protocol.txt". kernel.org. 2016-03-21. Retrieved 2017-04-09.
  5. ^ "USB over IP tunnel". OpenWrt. 2016-06-17. Retrieved 2017-04-09.