공식 최소, 권장 사양
이제 하드웨어를 구성할 차례입니다.
일단 FreeNAS의 최소, 권장 사양을 각각 확인해 보도록 하겠습니다.
https://freenas.org/hardware-requirements/
FreeNAS 공식 최소 사양은
- 멀티코어 64비트 CPU. ARM 안됩니다.
- 8Gb 의 부팅 디스크 (USB가 권장됩니다.)
- 8Gb 의 일반 램
- 하나의 이더넷 포트
- 적어도 하나의 하드디스크
권장 사양은 아래와 같습니다. 정확하게 말하면 권장 사양이 아니라 ‘홈 미디어 서버나 작은 규모의 사무실을 위한’ 사양입니다.
- 멀티코어 64비트 CPU
- 16Gb 의 부팅 디스크
- 16Gb 의 일반 램
- 하나의 이더넷 포트
- 적어도 두개의 하드디스크
그 아래에 Business-Class Systems 요구 사양도 있습니다.
- 1~4 개의 엔터프라이즈 수준의 64비트 멀티코어 프로세스 (제온 프로세서와 같은 서버용 CPU를 말합니다.)
- 2개의 미러링된 16Gb 부팅 드라이브
- 32Gb 의 ECC램
- 적어도 4개의 하드 디스크 (엔터프라이즈 SATA/SAS 권장)
- 읽기 가속을 위한 고성능 SSD
- 동기 쓰기 전용 전원 손실 보호 기능이 있는 고 내구성 SSD (SLOG용), 미러링 권장
- 적어도 2개의 1Gb 또는 10Gb의 이더넷 포트
다른 NAS OS에 비해 최소 사양부터 좀 높은 편입니다.
경험에서 나오는 최소, 권장 사양
FreeNAS 서버를 운영하면서 느낀 최소 사양과 권장 사양은 아래와 같습니다.
최소 사양
- PassMark 4000점 이상의 64비트 CPU
- 16Gb 의 일반 램
- 적어도 하나 이상의 1Gbps 이더넷 포트
- 16Gb 크기의 부팅 드라이브
- 시스템 데이터가 저장될 용량 256Gb, TBW 200Tb 이상의 SSD
- 적어도 한개 이상의 데이터 저장용 HDD
권장 사양
- PassMark 7000점 이상의 64비트 CPU
- 32Gb 의 일반 램
- 적어도 하나 이상의 1Gbps 이더넷 포트
- 16Gb 크기의 미러링 된 부팅 드라이브
- 시스템 데이터가 저장될 미러링 된 용량 512Gb, TBW 300Tb 이상의 SSD
- 데이터를 저장할 적어도 2개 이상의 미러링 된 HDD
좀 높은 사양을 요구합니다. 추가 설명을 하도록 하겠습니다.
CPU
먼저 CPU부터입니다. PassMark 4000점이라 한 이유는 프로그램 설치 과정에서 컴파일을 하는 등의 CPU 집약적인 작업을 할 때가 종종 있는데, 그때 CPU성능이 너무 낮으면 답답하기 때문입니다.
또한, ZFS의 특성상 CPU성능이 중요한데, 4000점 정도면 CPU 성능 때문에 속도가 떨어지는 일은 없습니다.
(물론 1Gbps 네트워크 환경에서 말입니다. 10Gbps 는 테스트해보지 않은 관계로, 말씀드리기 곤란합니다.)
또한 이후 소개할 PLEX Media Server의 트랜스코딩을 하기 위해서는 CPU사양이 높아야 합니다. 패스마크 7000점 정도면 2~4명 정도의 동시 트랜스코딩 부하를 견딜 수 있습니다.
RAM
그 다음은 램입니다. FreeNAS 자체가 램을 상당히 요구하는 편이고, 이후 강좌에서 다양한 서비스들을 설치할 예정인데, 16Gb 환경에 여러가지 서비스들이 전부 올라가고 ARC 크기를 3기가로 제한하면 램이 500Mb 정도 남습니다. 8Gb는 턱없이 부족합니다. 아무런 서비스를 올리지 않고 순수하게 파일 서버로만 이용할 것이 아니라면, 16Gb가 실질적인 최소사양입니다. 필자의 경우는 HP Microserver Gen8을 사용하는데, 이 서버의 물리적인 램 한계가 16Gb 이기 때문에 어쩔 수 없이 16Gb로 빡빡하게 사용중입니다. 여러분들은 저 같은 실수를 하지 않으시길 바랍니다.
ECC램 또는 일반램?
ZFS 알아보기 에서 ECC 메모리에 대해 아주 간단하게 다룰 예정이긴 합니다만, 지금 잠시 말씀드리자면 FreeNAS (또는 ZFS 파일 시스템을 쓰는 다른 시스템) 에서 ECC 메모리는 권장사양이지 필수적이지는 않습니다.
사용하였을 경우 데이터 무결성이 보장되고 발생할수 있는 오류를 줄인다는 점에서 확실히 이롭기는 하나, 반드시 ECC메모리를 사용해야 하는 것은 아닙니다.
부팅 디스크
16Gb 부팅 디스크입니다. 크기에 대해서는 별로 설명할 것이 없을 듯 하고, ‘미러링’ 된 부팅 디스크를 이용해야 하는 이유에 대해 설명하겠습니다.
FreeNAS는 USB를 시스템 디스크로 이용합니다. 그리고 부팅이 된 이후에는 사실상 읽기 쓰기를 거의 하지 않습니다. 한다 하여도 몇 시간에 한번씩 몇백 Kb 정도 읽기 쓰기 하는 정도입니다. 실제로, 2018년 7월 부터 2019년 4월까지 부팅 디스크의 전체 사용량은 읽기 265Gb, 쓰기 72Gb 정도입니다. 상당히 낮은 사용량입니다.
이는 FreeNAS가 어플라이언스이기 때문입니다. 그래서 부팅 디스크는 각종 설정과 OS가 저장되는 용도로만 사용됩니다. 그래서 한번 부팅이 되면 거의 사용되지 않습니다.
그런데 미러링이 필요한 이유가 무엇이냐 물으실 수 있습니다. 이는 설정 때문입니다. FreeNAS의 모든 설정 (jail이나 vm, 네트워크, 계정, 시스템 등 온갖 설정)이 부팅 디스크에 저장됩니다. 이 말은 무슨 뜻이냐, USB가 어떤 문제로 인해 고장이 날 시, FreeNAS 구축을 다시 해야 한다는 뜻입니다. 이것을 방지하기 위한 방법으로 설정 파일을 주기적으로 백업하는 것과, 16Gb USB 2개를 이용해 미러링을 하는 방법이 있습니다. 당연히 후자가 더 편하고 저렴합니다.
SSD
다음은 ‘시스템 데이터가 저장될’ SSD 입니다.
왜 SSD가 필요하죠?
‘앞에서 시스템은 USB에 저장된다 해놓고서는 무슨 SSD?’ 라고 생각하실 수 있습니다. 여기서 말하는 시스템은 FreeNAS 자체가 아닌 jail 이나 VM을 의미합니다.
FreeNAS는 어플라이언스입니다. FreeNAS 자체는 NAS를 위한 기능과 jail, VM 등을 돌리기 위한 미리 설치된 프로그램들만이 존재합니다. 그 흔한 토렌트 클라이언트조차 없습니다.
‘그럼 빈 깡통을 어덯게 쓰라는 거죠?’ 그 해답이 바로 jail입니다.
FreeNAS는 FreeNAS 자체에 어떠한 변형을 가하는 것을 엄격히 금지합니다. (심지어 방화벽 설정조차 바꾸는것을 권장하지 않습니다.) 대신 jail이라는 가상화 컨테이너에 원하는 프로그램을 설치 할 수 있도록 해 줍니다.
이 jail은 USB가 아닌, 다른 드라이브 (HDD나 SSD 등) 에 데이터를 저장하고 그 위에서 동작합니다. 이것을 위해 SSD가 필요합니다.
마찬가지로 VM도 VM의 데이터(OS같은)을 SSD 에 저장하고 사용하게 됩니다.
그럼 HDD 쓰면 되지 않나요?
물론 SSD가 아닌 HDD를 사용할 수도 있지만, HDD가 SSD보다 느리다는 점을 생각해보면 그다지 좋은 생각은 아닙니다.
왜 256Gb가 최소 용량인가요?
이런저런 서비스들을 256Gb SSD에 설치하고 나면 대략 90Gb 정도가 남습니다. 충분해 보이지만 그렇지 않습니다. 후술할 것이지만 ZFS는 Copy-On-Write 트랜젝션 모델을 사용합니다. 이 때문에 디스크 사용량을 70% 이하로 유지하는 것을 권장하고 80%를 넘으면 성능이 급격하게 떨어집니다. 거기다 ZFS 알아보기 에서 다룰 스냅샷을 사용하게 되면 여유 용량은 더 줄어듭니다.
그리고 SSD는 용량이 커질수록 수명이 길어진다는것을 감안했을 때, 고용량 SSD는 성능과 안정성 향상에 큰 도움을 주기 때문에 고용량 SSD를 쓰는 것이 좋습니다.
TBW 300Tb
시스템 드라이브로 사용되는 디스크는 부하가 많이 걸립니다. 특히 쓰기 부하가 상당히 큽니다. 끊임없이 1Mb/s 정도의 쓰기 부하가 지속적으로 걸립니다. SSD의 용량에는 아무런 변화가 없는 것으로 보아 임시 파일 종류가 아닐까 싶습니다.
그래서 4주 (1달) 동안의 읽기/쓰기 부하의 총량은 600Gb/3Tb 입니다. 상당히 부하가 심합니다. 즉 서버를 24시간 구동한다고 가정하면 1년에 36Tb 정도의 쓰기 부하가 걸립니다. 5년을 쓸려면 TBW가 적어도 200Tb 는 넘어야 합니다.
수치가 커 보이지만 그다지 높은 수치는 아닙니다. 예를 들어 삼성 860 Pro 256Gb의 경우 사용시간 보증 2000000시간과 TBW 300Tb를 보장합니다.
미러링이 필요한 이유는요?
미러링이 필요한 이유는 안정성 때문입니다. 미러링을 해 놓으면 구축해놓은 시스템이 불시에 확 날아가는 것을 방지할 수 있습니다.
물론 미러링은 선택이긴 합니다만, 안정성을 위해 하는 것을 추천합니다. 그리고 미러링을 하던 안 하던 간에 백업은 필수입니다.
HDD
하드디스크도 마찬가지입니다. 미러링이 되어 있으면 (또는 디스크가 3개 이상이라면 Raidz) 안정성이 높아집니다.
제 서버의 사양
마치면서 제가 현재 사용하고 있는 시스템의 사양을 알려 드리겠습니다.
- CPU : Xeon E3-1265L V2 (패스마크 7403)
- Ram : 8Gb Ecc Unbuffered x2 (16Gb)
- SSD : 미러링 된 삼성 860 Pro 512Gb 2개
- HDD : 16Tb (8Tb x4) 스트라이핑 된 미러링 하드 (Raid10)
- 부팅 디스크 : 미러링 된 샌디스크 32Gb USB 2개
- 로드벨런싱된 2개의 1Gbps 이더넷