- 24개의 4TB HGST 드라이브로 만든 71 TiB ZFS NAS가 10년 넘게 운용됐고, 마더보드와 전원공급장치는 교체됐지만 드라이브 고장은 아직 없었음
- 10년 동안 드라이브 누적 동작 시간은 약 6000시간에 그쳤으며, 필요할 때만 원격으로 켜는 방식이 전력 비용을 크게 낮춤
- HN에서는 24개 드라이브가 10년간 모두 무고장일 확률이 생각보다 높다는 의견이 나와, 전원을 자주 꺼둔 덕분이라고 단정하기는 어려움
- ZFS는 운영체제 변경 후에도 풀을 문제없이 다시 가져왔고, 연 몇 회 실행한 zpool scrub에서도 체크섬 오류가 한 번도 발견되지 않았음
- 소음, 네트워크, UPS, 백업, 교체 계획은 모두 전력·비용·위험 수용 사이의 절충으로 운영됐으며, 같은 용량은 향후 6~8개 드라이브 RAIDZ2로도 가능함
10년 넘게 버틴 71 TiB ZFS NAS
- 24개의 4TB 드라이브로 구성한 4U 71 TiB ZFS NAS가 10년 넘게 계속 사용되고 있음
- 현재 시스템은 두 번째 마더보드와 두 번째 전원공급장치를 사용 중임
- 드라이브 고장은 아직 한 번도 없었음
- 4TB HGST 드라이브의 누적 동작 시간은 약 6000시간으로, 10년 기준 약 250일치 동작 시간에 해당함
필요할 때만 켜는 전원 운용
- NAS는 기본적으로 꺼져 있고, 필요할 때만 원격으로 켬
- 전원 켜기 흐름은 다음과 같음
- 스크립트로 IoT 전원 멀티탭을 켬
- BMC(Baseboard Management Controller) 부팅이 끝나면 IPMI로 NAS 본체를 켬
- 대안으로 Wake-on-LAN도 사용할 수 있었음
- 사용이 끝나면 작은 스크립트로 서버를 끄고, 몇 초 기다린 뒤 벽면 전원을 끔
- 서버만 끄고 마더보드와 BMC 전원을 남겨두면 약 7W가 계속 소모되어 이 방식은 피했음
- 다른 서비스는 Raspberry Pi 4나 대기 전력이 훨씬 낮은 서버에서 실행하기 때문에, 큰 NAS를 상시 가동할 필요가 없었음
- 주된 동기는 전기요금 절감이며, 하드드라이브 수명에도 좋아 보인다고 판단함
- 다만 HN에서는 24개 드라이브가 10년간 무고장일 확률이 예상보다 높다는 의견이 나와, 이 결과를 전원 차단 운용 덕분으로 단정하기 어려움
- 이전 NAS도 20개의 1TB Samsung Spinpoint F1 드라이브로 약 5년간 운용하면서 드라이브 고장이 없었음
드라이브보다 먼저 문제를 낸 부품들
- 드라이브는 멀쩡했지만, 몇 년 전 마더보드는 교체해야 했음
- 고장 증상은 BIOS 진입이 불가능하고 가끔 부팅에 실패하는 형태였음
- CMOS 배터리 제거 같은 기본 조치를 시도했지만 해결되지 않았음
- 같은 마더보드가 Ebay에서 적당한 가격에 판매 중이어서 큰 문제 없이 교체함
- 같은 보드가 필요했던 이유는 서버가 PCIe 슬롯 4개를 사용했기 때문임
- 구성은 HBA 3개와 10Gbit NIC 1개였음
- 전원공급장치는 부팅 시 모든 드라이브가 동시에 스핀업되며 몇 초 동안 약 600W를 끌어 쓰는 조건을 겪었음
- 전원공급장치는 750W 정격이고 12V 레일도 충분한 전력을 낼 수 있었던 것으로 기억하지만, 부팅 때 가끔 차단됐음
ZFS 운용과 scrub 결과
- ZFS는 수년간 문제없이 동작했음
- 운영체제를 여러 번 바꿨지만, 새 OS 설치 후 기존 풀을 다시 가져오는 데 문제가 없었음
- 새 스토리지 서버를 만든다면 다시 ZFS를 사용할 생각임
- zpool scrub은 1년에 몇 번 실행함
- scrub 1회 완료에는 약 20시간이 걸림
- scrub 중 전력 사용량이 커서, 동적 전기요금제에서 전기가 싼 날 실행함
- 지금까지 scrub에서 체크섬 오류는 한 번도 발견되지 않았음
- 모든 드라이브를 합쳐 1페타바이트가 넘는 데이터를 읽었을 것으로 보지만, ZFS가 복구에 개입해야 하는 상황은 없었음
드라이브 오류와 조용한 데이터 손상
- 드라이브 고장은 주로 두 가지 형태로 나뉨
- 드라이브가 아예 감지되지 않는 전체 고장
- 읽기·쓰기 실패나 불량 섹터
- 세 번째 형태인 조용한 데이터 손상은 매우 드물다고 봄
- 디스크가 손상된 데이터를 전달했음을 스스로 알지 못하는 경우
- SATA 연결에서 체크섬 오류를 감지하지 못하는 경우
- 낮은 수준의 체크섬 검사가 많기 때문에 이 위험은 매우 작다고 봄
- 조용한 데이터 손상은 실제 위험이지만, 주거 환경보다는 데이터센터처럼 규모가 큰 환경에서 더 신경 쓸 문제로 봄
- ZFS는 Linux나 FreeBSD에 익숙한 사용자라면 배워볼 가치가 있으며, 배우기 아주 어렵지는 않음
조용한 NAS를 위한 팬 제어
- 이 NAS는 NAS치고는 매우 조용한 편임
- 섀시에는 24개 드라이브 베이를 식히는 튼튼한 12V 팬 3개가 들어 있음
- 기본 속도로 돌면 매우 시끄럽지만, 낮은 RPM에서는 꽤 조용하고 대부분의 상황에서 충분한 공기 흐름을 제공함
- 낮은 속도만으로는 드라이브 읽기·쓰기 중 온도가 결국 올라갔음
- 사용한 Supermicro 마더보드는 Linux에서 모든 팬 헤더를 제어할 수 있었음
- 가장 뜨거운 드라이브 온도에 따라 팬 속도를 조절하는 스크립트를 만들었음
- 수학 관련 서브레딧에서 조용하면서도 드라이브를 식히는 데 맞는 알고리듬을 물었고, PID 제어기를 추천받음
- Python으로 PID 제어 코드를 작성하고 예제 코드를 가져와 파라미터를 조정했음
- 이 스크립트는 수년간 잘 동작했고 드라이브 온도를 40°C 이하로 유지함
- 기본 공기 흐름이 적어 HBA와 네트워크 카드 등 PCIe 카드 4개를 식히기 위한 추가 팬도 필요했음
네트워크 구성의 변화
- 초기에는 쿼드 포트 기가비트 네트워크 컨트롤러와 네트워크 본딩을 사용했음
- 이 구성으로 여러 시스템 간 약 450MB/s 전송 속도를 얻음
- UTP 케이블이 너무 많이 필요해 이후 저렴한 Infiniband 카드로 변경함
- Infiniband 구성에서는 시스템 간 약 700MB/s에 도달할 수 있었음
- Ubuntu에서 Debian으로 돌아가기로 하면서 Infiniband 카드가 더 이상 동작하지 않았고, 원인을 해결하지 못함
- 이후 중고 10Gbit Ethernet 카드를 구입했고, 지금까지 문제없이 동작 중임
UPS, 백업, 위험 수용
- 한동안 정전 시 정상 종료를 위해 큰 UPS를 사용했음
- UPS가 서버 전력 사용량 외에 10W 이상을 추가로 사용한다는 점을 확인하고 제거함
- 전원 문제로 시스템을 잃을 위험은 수용하기로 했음
- 가장 중요한 데이터는 세 번 백업함
- 서버에 저장된 많은 데이터는 백업할 만큼 중요하지 않다고 봄
- 드라이브 고장으로 인한 데이터 손실은 교체 하드웨어와 ZFS에 의존함
- 그 보호가 충분하지 않으면 손실을 감수하는 조건으로 10년간 운용해 왔음
더 작은 구성으로도 가능한 다음 세대
- 현재 별도의 향후 스토리지 계획은 없음
- 처음 이 서버를 만든 이유는 저장공간 부족 때문에 데이터를 계속 옮기고 싶지 않았기 때문이며, 지금도 공간은 충분히 남아 있음
- 예비 마더보드, CPU, 메모리, HBA 카드가 있어 고장이 나도 시스템을 되살릴 가능성이 높음
- 하드드라이브 용량이 크게 늘었기 때문에, 언젠가는 24베이 섀시를 더 작은 폼팩터로 바꿀 수도 있음
- 동일한 수준의 중복 저장공간은 6~8개 하드드라이브와 RAIDZ2, 즉 RAID 6 수준 중복성으로 만들 수 있음
- 스토리지는 여전히 비싸다고 봄
- 또 다른 가능성은 앞으로 몇 년 안에 시스템이 결국 고장 나고, 교체하지 않으면서 스토리지 취미가 끝나는 것임