DRBD

**분산 복제 블록 장치**(Distributed Replicated Block Device, **DRBD**)는 리눅스 플랫폼을 위한 분산 복제 스토리지 시스템이다. 여러 호스트 간에 블록 장치를 미러링하여 호스트 시스템의 애플리케이션에 투명하게 작동한다. 이 복제는 하드 드라이브, 파티션, RAID 설정 또는 논리 볼륨과 같은 모든 유형의 블록 장치를 포함할 수 있다.

DRBD는 커널 드라이버, 여러 사용자 공간 관리 애플리케이션 및 일부 셸 스크립트로 구현된다. DRBD는 전통적으로 고가용성 (HA) 컴퓨터 클러스터에 사용되지만, DRBD 버전 9부터는 클라우드 통합에 중점을 둔 더 큰 소프트웨어 정의 스토리지 풀을 만드는 데도 사용할 수 있다.

DRBD 소프트웨어는 자유 소프트웨어이며 GNU 일반 공중 사용 허가서 버전 2의 조건에 따라 배포된다.

DRBD는 리소그 오픈 소스 스택 이니셔티브의 일부이다.

## 작동 방식
DRBD는 참여 클러스터 노드의 기존 로컬 블록 장치 위에 논리적 블록 장치 (일반적으로 `/dev/drbdX`로 명명되며, 여기서 X는 장치 부번호임)를 계층화한다. 기본 노드에 대한 쓰기는 하위 레벨 블록 장치로 전송되고 동시에 보조 노드(들)로 전파된다. 그러면 보조 노드(들)는 데이터를 해당 하위 레벨 블록 장치로 전송한다. 읽기 균형 조정이 구성되지 않는 한 모든 읽기 I/O는 로컬에서 수행된다.

기본 노드가 실패하면 클러스터 관리 프로세스가 보조 노드를 기본 상태로 승격시킨다. 이 전환은 파일 시스템 검사 또는 저널 재생을 통해 DRBD 위에 쌓인 파일 시스템의 무결성 검증을 필요로 할 수 있다. 실패한 이전 기본 노드가 돌아오면, 장치 데이터 재동기화 후 시스템은 이를 다시 기본 레벨로 올릴 수 있다 (또는 올리지 않을 수 있다). DRBD의 동기화 알고리즘은 전체 장치가 아닌 중단 중에 변경된 블록만 재동기화하면 되므로 효율적이다.

DRBD는 다른 클러스터 관리 프레임워크와 통합되지만, Pacemaker 또는 Heartbeat 클러스터 리소스 관리자와 함께 배포되는 경우가 많다. 가상화 솔루션인 Xen과 통합되며, 리눅스 LVM 스택 아래와 위 모두에서 사용될 수 있다.

DRBD는 부하분산 구성을 허용하여 두 노드 모두 공유 스토리지 시맨틱으로 특정 DRBD에 읽기/쓰기 모드로 액세스할 수 있도록 한다. 다중 기본(다중 읽기/쓰기 노드) 구성에는 분산 잠금 관리자의 사용이 필요하다.

2018년부터 DRBD는 블록 스토리지 관리 소프트웨어 LINSTOR에서도 다른 노드 간의 복제를 위해, 그리고 사용자 및 애플리케이션에 블록 스토리지 장치를 제공하기 위해 활용될 수 있다.

## 공유 클러스터 스토리지 비교
기존 컴퓨터 클러스터 시스템은 일반적으로 클러스터 리소스에서 사용되는 데이터를 위해 어떤 종류의 공유 스토리지를 사용한다. 이 접근 방식에는 DRBD가 상쇄하는 데 도움이 될 수 있는 여러 가지 단점이 있다.
* 공유 스토리지 리소스는 일반적으로 스토리지 에어리어 네트워크를 통해 또는 네트워크 결합 스토리지 서버에서 액세스해야 하므로 읽기 I/O에서 일부 오버헤드가 발생한다. DRBD에서는 모든 읽기 작업이 로컬에서 수행되므로 그 오버헤드가 줄어든다.
* 공유 스토리지는 일반적으로 비싸고 더 많은 공간(2U 이상)과 전력을 소비한다. DRBD는 2개의 머신만으로 HA 설정을 허용한다.
* 공유 스토리지는 반드시 고가용성인 것은 아니다. 예를 들어, 여러 가상화 호스트에서 액세스하는 단일 스토리지 에어리어 네트워크는 공유 스토리지로 간주되지만 스토리지 레벨에서 고가용성으로 간주되지는 않는다. 이 단일 스토리지 에어리어 네트워크가 실패하면 클러스터 내의 어떤 호스트도 공유 스토리지에 액세스할 수 없다. DRBD는 공유되면서도 고가용성인 스토리지 대상을 허용한다.

단점은 다른 노드를 통해 쓰기를 라우팅하는 것보다 공유 스토리지 장치에 직접 쓰기를 하는 데 더 적은 시간이 걸린다는 것이다.

## RAID-1과의 비교

DRBD는 두 저장 장치에 데이터 복사본을 포함하여 하나가 실패하면 다른 장치의 데이터를 사용할 수 있다는 점에서 RAID-1과 표면적으로 유사하다. 그러나 RAID 및 네트워크 RAID와는 매우 다른 방식으로 작동한다.

RAID에서 중복성은 스토리지를 사용하는 애플리케이션에 투명한 계층에 존재한다. 두 개의 저장 장치가 있지만 애플리케이션 인스턴스는 하나뿐이며 애플리케이션은 여러 복사본을 알지 못한다. 애플리케이션이 읽을 때 RAID 계층은 읽을 저장 장치를 선택한다. 저장 장치가 실패하면 RAID 계층은 애플리케이션 인스턴스가 실패를 알지 못한 채 다른 장치를 읽도록 선택한다.

이와 대조적으로 DRBD에는 두 개의 애플리케이션 인스턴스가 있으며 각 인스턴스는 두 저장 장치 중 하나에서만 읽을 수 있다. 저장 장치 중 하나가 실패하면 해당 장치에 연결된 애플리케이션 인스턴스는 더 이상 데이터를 읽을 수 없다. 결과적으로 해당 경우 해당 애플리케이션 인스턴스는 종료되고 생존한 데이터 복사본에 연결된 다른 애플리케이션 인스턴스가 인계한다.

반대로 RAID에서 단일 애플리케이션 인스턴스가 실패하면 두 저장 장치의 정보는 사실상 사용할 수 없지만 DRBD에서는 다른 애플리케이션 인스턴스가 인계할 수 있다.

## 응용
리눅스 커널의 블록 계층 내에서 작동하는 DRBD는 본질적으로 워크로드에 구애받지 않는다. DRBD는 다음의 기반으로 사용될 수 있다.
* 일반적인 파일 시스템 (이것이 정석적인 예시이다),
* GFS2 또는 OCFS2와 같은 공유 디스크 파일 시스템,
* 다른 논리 블록 장치 (예를 들어 LVM에서 사용되는 것과 같이),
* 블록 장치에 직접 액세스해야 하는 모든 애플리케이션.

DRBD 기반 클러스터는 종종 파일 서버, 관계형 데이터베이스 (예: MySQL), 및 기타 여러 워크로드에 동기식 복제 및 고가용성을 추가하는 데 사용된다.

## 리눅스 커널 포함
DRBD의 저자들은 2007년 7월에 DRBD를 표준 kernel.org 버전의 리눅스 커널에 포함될 가능성을 위해 리눅스 커널 커뮤니티에 제출했다. 긴 검토와 여러 논의 끝에 리누스 토르발스는 DRBD를 공식 리눅스 커널의 일부로 포함시키는 데 동의했다. DRBD는 2009년 12월 8일 리눅스 커널 버전 2.6.33의 "병합 기간" 동안 병합되었다.

## 같이 보기
* 고가용성 저장소
* 고가용성 클러스터
* 디스크 미러링

## 각주

## 외부 링크

* 
* LINBIT
* High-Availability Linux project web site 

분류:소프트웨어 저장 매체