엔지니어 생활을 하다 보면 새벽 3시에 삐삐(요즘은 스마트폰 알림이겠지만)가 울리는 경험을 하게 됩니다. 대부분 하드웨어 장애, 그중에서도 디스크 장애(Disk Failure)가 범인인 경우가 많습니다.
오늘은 DEGRADED 상태의 풀을 안전하게 복구하는 절차를 다룹니다. 특히 물리 디스크를 제거하기 전 확인 절차를 소홀히 하면 멀쩡한 디스크를 뽑는 대형 사고가 터질 수 있습니다.
핵심 개념: Resilvering (리실버링)
💡 Resilvering이란?
기존 RAID의 'Rebuild'와 유사하지만 훨씬 똑똑합니다. 전체 디스크를 블록 단위로 무식하게 복사하는 것이 아니라, 실제 데이터가 있는 메타데이터와 블록만 추적하여 복구합니다.
작업 절차 (Workflow)
-
장애 확인:
zpool status -x로 문제 있는 풀과 디스크를 확인합니다. -
물리 디스크 식별 (중요!):
논리적인 이름(c1t2d0)만 보고 디스크를 뽑으면 안 됩니다. 반드시 시리얼 넘버를 대조하세요.
# iostat -En# diskinfo -
OS 레벨 제거 (Unconfigure):
Hot-swap을 지원하더라도 OS에서 장치를 제거해 주는 것이 안전합니다.
# cfgadm -al
# cfgadm -c unconfigure c1::dsk/c1t2d0 -
물리적 교체: 디스크를 교체하고
cfgadm -c configure로 새 디스크를 인식시킵니다. -
ZFS 교체 명령:
zpool replace [pool명] [옛_디스크] [새_디스크]수행