기술 가이드

CentOS에서 DRBD 설치 및 설정 가이드

6 min read 리눅스 업데이트됨 19 Oct 2025
CentOS에서 DRBD 설치 및 설정 가이드
CentOS에서 DRBD 설치 및 설정 가이드

개요

이 튜토리얼은 서버에 DRBD를 설치하고 구성하는 방법을 설명합니다. 먼저 DRBD가 무엇인지와 어떤 용도로 사용되는지 간단히 정의합니다.

DRBD(Distributed Replicated Block Device)는 소프트웨어 기반의 공유-없음(shared-nothing) 복제 스토리지 솔루션입니다. 하드디스크, 파티션, 논리 볼륨 같은 블록 디바이스의 내용을 미러링하여 고가용성(예: 페일오버, 재해 복구) 환경을 구축할 때 사용합니다. 본 문서는 DRBD의 실제 설치·구성·검증·테스트 절차에 초점을 맞춥니다.

중요: 본 가이드는 CentOS/Red Hat/Oracle Linux 6 계열을 기준으로 작성했습니다. 다른 배포판이나 더 최신 커널/DRBD 버전에서는 명령어와 패키지·옵션이 다를 수 있으니 버전 호환성을 먼저 확인하세요.

아키텍처 개요

이 예시에서는 다음과 같은 단순한 2노드 구성으로 진행합니다:

  • 서버 A: 호스트명 OEL641, IP 192.168.43.101, DRBD 디스크: /dev/sdb1, 마운트 폴더: /folderA
  • 서버 B: 호스트명 OEL642, IP 192.168.43.102, DRBD 디스크: /dev/sdb1, 마운트 폴더: /folderB

텍스트 다이어그램:

+———————————–+ +—————————–+ | [ DRBD Server A ] | 192.168.43.101 | 192.168.43.102 | [ DRBD Server B ] | | OEL641 +———————-+———————–+ OEL642 | | folderA | | folderB | +———————————–+ +—————————–+

이 가이드는 /dev/sdb1 같은 빈 블록 디바이스가 준비되어 있다고 가정합니다.

1. 사전 준비

  • 루트 또는 sudo 권한 계정
  • 두 서버 서로 간 SSH 접속(예: scp, ssh 가능)
  • 빈 블록 디바이스(/dev/sdb 또는 유사)
  • 인터넷 연결(패키지 다운로드)

중요: 프로덕션 환경에서는 DRBD 메타데이터 초기화와 파일시스템 생성이 데이터를 모두 지우므로 반드시 백업 후 진행하세요.

2. 설치 단계

시스템을 업데이트하고 DRBD 빌드에 필요한 종속 패키지를 설치합니다. 두 서버에서 동일하게 수행하세요.

yum -y update   
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel

위 명령 실행 결과(패키지 상태 출력)는 원문 예시와 동일한 출력 블록으로 제공됩니다.

빌드를 위한 RPM 디렉터리 구조를 생성합니다:

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

DRBD 소스와 drbd-utils를 다운로드합니다:

wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz

아카이브를 해제하고 컴파일·패키징합니다(원문과 동일한 순서 사용).

tar -zxvf drbd-8.4.7-1.tar.gz  
tar -zxvf drbd-utils-latest.tar.gz

DRBD 커널 모듈(RPM) 빌드:

cd drbd-8.4.7-1   
# make km-rpm

빌드가 성공하면 /root/rpmbuild/RPMS/i686(또는 x86_64)에 RPM 파일들이 생성됩니다. drbd-utils도 마찬가지로 빌드합니다:

cd ..  
cd drbd-utils-8.9.6   
./configure   
make rpm

생성된 RPM들을 설치합니다(아키텍처에 따라 파일명이 다를 수 있습니다):

cd /root/rpmbuild/RPMS/i686  
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*

위 작업을 두 서버 모두에서 동일하게 수행합니다.

중요: 만약 배포판이 64비트(x86_64)라면 rpm 경로와 패키지 이름이 i686 대신 x86_64로 나타납니다.

3. 검증 단계

이제 OEL641(서버 A)에서 호스트명과 DRBD 모듈 상태를 확인합니다.

uname -n
OEL641

DRBD 커널 모듈을 로드하고 lsmod로 확인합니다:

modprobe drbd  
lsmod |grep drbd
drbd 341783 0  
libcrc32c 841 1 drbd

다음으로 파티션을 생성합니다. 예제에서는 /dev/sdb를 사용하여 /dev/sdb1 파티션을 만듭니다. fdisk를 사용한 단계는 원문 코드 블록을 그대로 따라하세요:

fdisk -l

(출력 블록 생략 — 원문 참조)

fdisk /dev/sdb

(fdisk 상호작용 출력 블록 포함)

마찬가지로 OEL642에서도 동일하게 파티션을 생성합니다.

4. DRBD 리소스 파일 구성

두 서버에서 동일한 DRBD 리소스 정의 파일을 생성해야 합니다. /etc/drbd.d/s1.res 파일을 만듭니다:

cd /etc/drbd.d/  
vi s1.res

파일 내용(예시):

resource s1 {  
on OEL641 {  
device /dev/drbd1;  
disk /dev/sdb1;  
address 192.168.43.101:7799;  
meta-disk internal;  
}  
on OEL642 {  
device /dev/drbd1;  
disk /dev/sdb1;  
address 192.168.43.102:7799;  
meta-disk internal;  
}  
}

파일을 두 번째 서버로 복사합니다:

scp /etc/drbd.d/s1.res root@OEL642:/etc/drbd.d/s1.res

메타데이터를 생성합니다(두 서버에서 각각 실행):

drbdadm create-md s1

출력 예시는 원문을 참고하세요. s1은 리소스 이름입니다.

5. DRBD 서비스 시작 및 동기화

OEL641에서 DRBD 상태를 확인하고 서비스를 시작합니다:

/etc/init.d/drbd status

[root@OEL641 ~]# /etc/init.d/drbd start

초기 시작 시 DRBD 스크립트는 피어를 기다립니다. OEL642에서도 동일하게 서비스 시작을 실행해야 양쪽이 연결되어 동기화가 진행됩니다.

양쪽이 연결되면 상태 확인:

/etc/init.d/drbd status

예시 상태(원문 참조)에서는 OEL641이 Primary, OEL642가 Secondary가 되도록 초기화를 수행합니다:

drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status

상태가 “Primary/Secondary”로 바뀌고 동기화가 진행되면 데이터가 복제됩니다(초기 동기화는 시간이 소요될 수 있음).

6. DRBD 테스트

Primary 노드(OEL641)에서 DRBD 디바이스에 파일시스템을 만들고 마운트하여 테스트 파일을 생성합니다(Primary에서만 mkfs 수행).

mkfs.ext3 /dev/drbd1
mkdir /folderA  
mount /dev/drbd1 /folderA  
df -h

파일 생성:

dd if=/dev/zero of=/folderA/testfile bs=1M count=30
ls -lh /folderA

결과: /folderA/testfile(약 30MB) 생성.

이제 Primary를 Secondary로 전환하고 다른 노드에서 Primary로 올려 복제된 파일을 확인합니다:

umount /folderA  
drdadm secondary s1

OEL642에서:

mkdir /folderB  
drdadm primary s1  
mount /dev/drbd1 /folderB  
ls -lh /folderB

복제된 파일이 /folderB에서 보이면 성공입니다.

문제 해결(트러블슈팅) 및 주의사항

중요: DRBD와 관련된 주요 실패 시나리오와 해결책을 정리합니다.

  • 네트워크 연결 문제: 두 노드 간 포트(기본 7799)가 방화벽에 의해 차단되면 연결되지 않습니다. 방화벽 규칙을 확인하고 포트를 허용하세요.
  • 호스트명 불일치: 리소스 파일의 on 은 uname -n의 결과와 일치해야 합니다. 일치하지 않으면 DRBD가 리소스를 바인딩하지 못합니다.
  • 메타데이터 초기화 위험: drbdadm create-md는 대상 디스크의 기존 데이터를 삭제합니다. 실수로 실행하지 않도록 확인하세요.
  • 서로 다른 디스크 크기: 양쪽 블록 장치 크기가 일치하지 않으면 sync 오류 또는 용량 부족 문제가 발생합니다.
  • 커널 모듈 버전 불일치: DRBD 커널 모듈이 커널 버전과 호환되어야 합니다. 커널 업데이트 후 DRBD 모듈을 재빌드해야 할 수 있습니다.

진단 명령 요약:

/etc/init.d/drbd status
cat /proc/drbd
dmesg | tail
ss -tunlp | grep 7799
ping 

대안 및 확장 접근법

  • 배포판 패키지 이용: 소스 빌드 대신 배포판 제공 DRBD 패키지(혹은 Linbit의 공식 저장소)를 사용하면 빌드/의존성 관리가 쉬워집니다.
  • DRBD + Pacemaker: DRBD를 Pacemaker와 함께 사용하면 자동 장애 조치(HA)를 구성할 수 있습니다.
  • 파일 레벨 복제: DRBD가 블록 레벨 복제이므로 파일 단위 복제(rsync, DRBD의 대체로 GlusterFS, Ceph 등)와 요구사항에 따라 선택하세요.

운영 관점의 점검표 (역할별)

관리자 (시스템 운영자):

  • 루트 권한 확인
  • 네트워크(포트 7799) 및 방화벽 규칙 확인
  • 양쪽 노드의 시간 동기화(NTP) 확인
  • /dev/sdb 크기 및 파티션 일치 확인

개발자/배포 담당자:

  • DRBD 리소스 파일(s1.res) 검토
  • 서비스 재시작 시 애플리케이션의 파일 잠금/마운트 정책 확인

보안 담당자:

  • DRBD 제어 트래픽을 전용 네트워크로 분리 권장
  • SSH 키 교환 및 루트 사용 제한

체크리스트: 배포 전 확인 사항

  • DRBD 패키지 빌드/설치 완료(양측)
  • /etc/drbd.d/s1.res의 호스트명·IP 일치
  • drbdadm create-md를 수행할 디스크 백업 완료
  • 방화벽에서 7799 허용 또는 전용 네트워크 구성
  • 초기 동기화 시간 예측 및 유지보수 윈도우 확보

간단한 운영 SOP(핵심 명령 모음)

  • 상태 확인: /etc/init.d/drbd status 또는 cat /proc/drbd
  • 메타데이터 생성: drbdadm create-md
  • Primary로 전환: drbdadm primary (또는 –overwrite-data-of-peer로 강제)
  • Secondary로 전환: drbdadm secondary
  • 로그 확인: dmesg | tail, /var/log/messages

의사결정 흐름 (Mermaid)

다음 다이어그램은 DRBD 노드 전환/문제 해결의 기본 흐름을 간단히 나타냅니다.

flowchart TD
  A[노드 부팅] --> B{DRBD 드라이버 로드됨?}
  B -- 아니오 --> C[modprobe drbd 및 로그 확인]
  B -- 예 --> D{피어 연결됨?}
  D -- 아니오 --> E[네트워크/방화벽 확인]
  D -- 예 --> F{리소스 상태 확인}
  F -- Primary 없음 --> G[drbdadm --overwrite-data-of-peer primary s1]
  F -- Primary 존재 --> H[필요시 전환: drbdadm primary/secondary]
  G --> H
  E --> D

용어 1줄 요약(글로서리)

  • DRBD: 블록 장치 레벨에서 두 노드 간 데이터를 실시간으로 복제하는 소프트웨어 미러링.
  • Primary: 마운트되어 쓰기가 가능한 DRBD 측 노드.
  • Secondary: 일반적으로 마운트되지 않고 동기화만 수신하는 노드.

보안 및 규정 고려 사항

  • 데이터가 민감하거나 규제 대상일 경우 전송 중 암호화(TLS/IPsec)를 적용하거나 DRBD 전용 네트워크를 사용하세요.
  • DRBD 자체는 데이터 전송 암호화를 기본 제공하지 않습니다. 암호화가 필요하면 네트워크 계층에서 처리하세요.

마이그레이션 및 호환성 팁

  • 커널 업그레이드 후에는 DRBD 커널 모듈을 재컴파일해야 할 경우가 많습니다.
  • DRBD 메이저 버전 간에는 메타데이터 포맷이 달라 마이그레이션 전략을 사전 수립해야 합니다.

요약

  • DRBD는 고가용성 환경에서 블록장치 미러링을 제공하는 강력한 도구입니다.
  • 본 가이드는 CentOS/Oracle Linux 6 기준으로 소스 빌드→설치→구성→동기화→테스트까지의 전체 흐름을 다룹니다.
  • 주요 주의사항: 메타데이터 초기화는 데이터 삭제이며, 호스트명·네트워크·디스크 크기 일치가 핵심입니다.

중요: 실제 운영 환경에서는 테스트 환경에서 절차를 충분히 검증한 뒤 프로덕션에 적용하세요.

감사합니다. 문제 해결이 필요하면 상태 출력(/etc/init.d/drbd status, cat /proc/drbd), dmesg, 네트워크 상태를 함께 제공하면 원인 파악이 빠릅니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

IPFire에 스마트카드(CCID)·OpenSC 통합 가이드
네트워크

IPFire에 스마트카드(CCID)·OpenSC 통합 가이드

CentOS 7에 OTRS 5 설치 및 구성
서버 가이드

CentOS 7에 OTRS 5 설치 및 구성

Netflix 다운로드 방법: 모든 기기에서 오프라인 시청
사용자 가이드

Netflix 다운로드 방법: 모든 기기에서 오프라인 시청

Amazon Prime Video 계속 시청 항목 삭제 가이드
가이드

Amazon Prime Video 계속 시청 항목 삭제 가이드

실전 Wi‑Fi 신호 강화 가이드
네트워크

실전 Wi‑Fi 신호 강화 가이드

Windows 10 Miracast 설정 및 사용법
가이드

Windows 10 Miracast 설정 및 사용법