WD 14TB 하드를 적출해 보니 나사 구멍의 위치와 개수가 기존 하드와 다르다.

 

고용량 하드들은 플래터 사이즈가 커지면서 측면부 중앙부분 나사홀이 없다.

 

아래와 같은 케이스에서는 하드 측면부 중앙부분 나사홀을 사용해서 고정하기 때문에 문제가 된다.

 

케이스에 5.25베이가 여유가 있다면  5.25베이 3개를 3.5베이 5개를 확보해주는 케이지의 사용도 고려해볼 필요가 있다.

 

  OPENZFS MDADM
타입 파일 시스템 블록 디바이스
Resync 속도 빠름 빠름(bitmap enabled)
정전시 데이터 손실 영향없음(CoW Logging) bitmap으로 대응
AVX지원 미지원 지원
RAID LEVEL 지원 0,1,10,5,6,50,60,raidz3 0,1,10,5,6
RAID LEVEL 변경 불가 가능
ON-LINE EXPANSION
(기존 RAID그룹에 DISK 추가)
미지원 지원
Scrubing 지원 지원
파편화에 의한 속도 저하 10% 여유 공간 권장 defrag 가능

 

MDADM과 ZFS는 엄밀히는 다른 개념이다.

 

MDADM이 파일 시스템 레벨 이전에 추상화된 블록 레벨이라면 ZFS는 파일 시스템이다.

 

파일 시스템에서 RAID까지 지원하는 것이다.

 

ZFS의 장점 널리 알려진 대로 CoW(Copy on Write), scrub을 활용한 데이터 무결성 관리, 파일 시스템 레벨 레이드 지원, SLOG를 이용해 HW RAID의 NV-CACHE를 구현할 수도 있고 PC의 강력한 컴퓨팅 파워를 활용해 HW RAID 대비 압도적인 성능을 낼 수 있다.

 

파일 시스템 상에서 레이드를 구성하므로 리실버링(리빌딩)시에도 필요한 만큼만 작업을 수행하기 때문에 디스크에 채워진 데이터의 양이 적다면 매우 빠르게 수행된다.

 

개인적으로 ZFS의 가장 강력한 장점은 CoW라고 생각한다. CoW로 인해서 쓰기 작업 중에 갑작스러운 정전이 발생한다 해도 쓰기 작업 중이던 데이터의 손실이 발생할 수는 있어도 데이터가 망가지는 일은 발생하지 않는다. 기존 데이터는 갱신되지 않은 채로 남아 있게 된다.

 

ZFS는 강력한 장점이 많은 파일 시스템이지만 홈서버로 사용하기에 몇 가지 문제점도 존재한다.

 

첫 번째 on-line expansion을 지원하지 않는다.

 

HW RAID나 MDADM은 4개의 하드로 구성된 레이드 셋의 용량이 꽉 차게 되면 하드를 하나 새로 추가해서 리빌딩을 거치면 5개의 하드로 구성된 레이드 셋으로 용량을 확장하는 게 가능하다.

 

반면에 ZFS는 이것이 불가능하다. ZFS는 애초에 엔터프라이즈 용도를 가정하고 만들어졌기 때문이다.

 

엔터프라이즈 용도에서는 on-line expansion은 서버의 다운타임을 발생시키게 되므로 처음 셋업 할 때부터 완전한 구성을 갖추는 게 일반적이다.

 

두 번째 용량의 90% 이상을 사용하면 안 된다. 즉, 전체 용량의 10% 정도를 비워 놓는 것을 권장한다.

 

ZFS가 CoW를 채택하면서 발생한 문제로 쓰기 작업 시에 볼륨 전체를 200개 정도의 metaslab으로 나누고 빈 공간을 찾게 된다.

 

이때 빈 공간이 너무 적으면 디스크에 빈 공간을 찾기 위한 과도한 IO를 발생시키는 문제가 존재한다.

 

SSD처럼 Disk Map을 램에 상주시키면 전체 용량의 96%까지 성능 하락 없이 사용할 수 있지만, 10TB당 2~4기가 정도의 메모리가 요구된다고 한다. 

 

https://newbedev.com/zfs-performance-do-i-need-to-keep-free-space-in-a-pool-or-a-file-system

 

그럼에도 불구하고 홈서버에서 MDADM가지는 장점은 on-line expansion이 가능하다는 점이다. 처음에 필요한 만큼만 디스크를 준비했다가 더 필요해지면 그때마다 디스크를 추가하면서 용량을 확장하는 게 가능하다.

 

MDADM은 비록 ZFS처럼 강력한 기능을 제공하지는 못하지만 20년 넘게 개발이 진행되어 크리티컬한 문제를 발생시키지 않는 안정적인 수준에 도달한 툴이다.

 

MDADM 역시 정전시에 데이터 손실에 대해서 bitmap을 통해 대응하고 있고 on-line expansion이 가능한 MDADM이 홈서버에서는 더 적합하다고 생각한다.

 

MDADM 역시 cron 스크립트로 1달에 한번씩  scrubbing으로 데이터 무결성을 확인한다.

 

또한, MDADM은 AVX를 지원해서 RAID 연산에 들어가는 CPU파워를 더욱더 줄여준다.

 

MDADM은 블록디바이스의 역할을 수행하고 레이드 셋 위에 별도의 파일시스템을 올려서 사용해야 한다.

 

2cpu 커뮤니티에 물어보니 EXT4같은 저널링 파일 시스템으로도 100TB 이상의 시스템을 운영한다고 한다.

나스에 RAID를 구성할 때 전용 레이드 카드를 이용하는 HW RAID와 SW RAID 사이에서 고민이 되어서 서로 비교 정리해 보았다.

 

HW RAID

장점

BBU와 NV-CACHE가 있으면 갑작스러운 정전에서 데이터 손실에 면역이 될 수 있다.

패리티 연산을 레이드 카드의 프로세서가 담당하므로 CPU에 부담을 주지 않는다.

GUI나 WEB기반의 관리 프로그램이 제공된다.

 

단점

BBU나 NV-CACHE가 없는 경우 레이드 카드 캐시 메모리에 저장된 데이터는 손실된다.

통상적으로 8 포트까지 제공된다. 16 포트도 있으나 구하기 어렵다.

BBU와 NV-CACHE모듈을 구하기 어렵다.

레이드 카드 고장 시에는 동일한 회사의 대체품이 필요하다.

 

SW RAID(MDADM)

장점

HBA카드 고장 시에 회사에 관계없이 HBA카드만 교체해주면 된다.

레이드 셋을 구성하는 디스크 카운트에 제한이 없다(그러나 통상적으로 8개 정도를 추천한다)

SW이므로 수시로 업데이트가 가능하기에 HW 방식에 비해 가용성이 좋다.

정전 시 데이터 손실의 위험에서 BBU없는 HW RAID 보다 안전하다.

Resync 속도가 빠르다.

 

단점

패리티 계산에 CPU 파워가 필요하나 현대의 CPU에는 거의 부담이 없다.

mdadm 커맨드를 다룰 줄 알아야 한다.

 

정리해보자면 HW RAID는 BBU가 있다면 정전 시에 수십 분, NV-CACHE까지 있다면 수개월에 걸쳐서 데이터를 보호할 수 있어서 데이터 손실의 위험성을 최소화할 수 있는 장점이 있다.

 

그러나 홈서버에 사용하는 레이드 카드는 대부분 교체되는 노후 서버에서 적출한 중고 레이드 카드를 사용하게 되는데 이런 경우 소모품인 BBU, NV-CACHE 없이 판매되는 경우가 많다. BBU 없는 HW RAID 카드는 데이터 손실 가능성 측면에서 SW RAID에 비해 좋은 점은 없다. 전용 UI를 제공받을 있고 CPU 파워를 아낄 수 있다는 정도의 장점이 있을 뿐이다.

 

게다가 정전에 대한 대비는 10만 원 내외의 UPS만으로도 서버 정상 종료를 위한 시간을 충분히 확보할 수 있다.

 

반면에 SW RAID의 장점은 프로그램을 다룰 줄 안다면 튜닝을 통해서 하드웨어 레이드보다 압도적인 성능을 만들어 낼 수 있다. 아무래도 레이드 카드에 달려 있는 CPU보다는 PC의 CPU 성능이 압도적이기 때문이다.

 

SW RAID는 정전시 데이터 손실에서 BBU 없는 HW RAID 방식보다 안전하다.

ZFS는 CoW구조여서 근본적으로 데이터 손실에서 자유로운 장점이 있고, MDRAID도 bitmap으로 데이터 손실의 위험성을 줄여주는 내부 로직을 갖추고 있다.

 

그리고 레이드 카드 고장 시에도 동일회사의 제품을 찾아야 하는 수고로움에서 벗어나서 HBA카드 고장에 더 유연하게 대처할 수 있다.

 

또한, 잠시 하드를 분리했다 다시 연결해서 resync 해야 하는 경우에 HW RAID는 디스크 전체를 리빌딩하는 만큼의 시간이 걸리지만 ZFS와 bimap이 켜진 MDRAID는 필요한 부분만 resync가 진행되므로 순식간에 완료되는 장점도 있다.

 

SW RAID는 포트의 제한도 없다. 16개의 포트를 지원하는 HW RAID 카드도 있지만 구하기 어렵다. 반면에 SW RAID는 10개든 20개든 포트만 확보되어 있으면 제한이 없다. 물론 RAID-6라 하더라도 10개 이상의 어레이 구성은 추천하지 않는다.

 

이상의 이유로 SW RAID가 더 적합하다고 결론을 내렸다.

RAID-5는 1개의 디스크를 패리티로 할당하고 RAID-6는 2개의 디스크를 패리티용으로 할당하게 된다.

 

10개 이하의 하드로 사용하는 홈 NAS에서 입장에서는 하드디스크 1개라도 절약할 수 있는 RAID-5가 매력적이다.

 

RAID-5는 1개의 디스크 고장에 대해서 대비할 수 있는 방식이다.

 

한 개의 디스크가 고장 나서 RAID SET이 Degraded 되었을 때 고장 난 디스크를 교체해서 리빌딩하는 24시간 동안에만 추가적인 고장이 없다면 안정적으로 운영할 수 있다.

 

문제는 여기에는 URE(Uncorrectable Error)가 고려되어 있지 않다는 데에 있다.

 

디스크에 기록된 데이터는 영원불멸하지 않으며 가만히 두더라도 자연 방사능 등의 영향으로 인해 비트가 뒤집히는 현상이 발생할 수 있다. 즉, 고장이 아니어도 데이터가 손상될 확률을 URE라고 한다.

 

보통 하드디스크의 스펙시트에는 엔터프라이즈급은 1e-15, 컨슈머급은 1e-14 이하의 URE를 갖는다고 되어 있다.

 

어디까지나 꺽쇠(<)가 붙어있는 이하라는 수치이고 제조사에는 보수적인 값을 제시하기 때문에 실제 URE는 훨씬 적을 가능성이 높다고는 하나 최악의 상황을 가정한다면 제조사의 제공하는 수치를 믿어야 한다.

 

URE가 1e-14라는 의미는 12.5TB당 1bit의 에러가 발생하다.

 

14TB 디스크 5개를 RAID-5로 구성할 경우 1개의 디스크에서 고장이 발생하고 남은 4개의 디스크를 이용해서 리빌딩을 수행하게 된다. 데이터의 총량이 56TB(14TBx4)이므로 이론적으로 4~5bit에 에러가 발생하게 된다.

 

즉, RAID-5에 어레이에 저장되어 있는 데이터의 극히 일부는 복구할 수 없는 없게 되는 것이다. 특히나 에러가 발생한 부분이 레이드 셋이나 파일시스템의 중요한 메타데이터일 경우에는 리빌딩에 실패하거나 파일 시스템이 깨질 수도 있는 최악의 사태가 발생할 수 있다.

 

반면에 RAID-6에서는 패리티를 제공해주는 여분의 디스크가 하나 더 남아 있기 때문에 URE에 대한 대처가 가능해지게 된다.

 

 

위의 표는 RAID-5와 RAID-6에 대하여 URE와 DRIVE COUNT에 따른 리빌딩 실패확률을 계산해 본 것이다.

 

URE가 커질수록 실패확률이 높아지고 DRIVE COUNT가 커질수록 역시 리빌딩 실패 확률이 커진다.

 

URE가 1E-14일 때 RAID-5의 데이터 손실 확률이 급증하므로 20TB이상의 레이드 어레이에서는 RAID-5보다는 RAID-6를 사용하는 것이 적합하다.

+ Recent posts