고성능 자작나스 구축하기 - 조립 및 설치
Last updated: May 9, 2022
올해 새로 구축해본 나스 제작 과정을 설명하고자 한다.
구축 계기

사용중인 DS713+
현재 사용하고 있는 나스는 Synology 사의 DS713+ 모델이다. 해당 모델은 13년도에 출시하였다. (뒤 두 자리 숫자가 출시 연도를 의미하고, 앞 숫자는 최대 확장 시 베이 수를 뜻함) 9년이라는 시간이 지나다 보니 아무래도 사용하는 데 한계가 온 것 같았다. 웹 UI 로그인하는 데는 30초 이상이 소요되고, 몇 년 전에 1GB RAM을 4GB로 업그레이드를 한 후 그나마 쓸 만하다고 생각했지만 아무래도 어떤 작업이든 하기만 하면 CPU 로드율이 99%를 찍어버리는 장치를 사용하는 건 더 이상 힘들다고 판단하였다.

RAM에 비해 여유롭지 못한 CPU 사용량
기존 나스는 3TB 하드 2개를 이용해서 RAID-1으로 구축해놓은 상태였고, 용량이 400GB밖에 남지 않았기에 여러모로 나스를 바꿔야겠다고 생각했다.
제품 알아보기
기존에 Synology 회사의 제품을 사용하고 있었기에 업그레이드도 Synology 회사 제품으로 하면 좋다고 처음엔 생각을 하였다. 그래서 같은 모델의 최신 버전을 확인해 보았다.


가격은 60만 원 정도였고, CPU는 Intel Celeron J4125, RAM은 기본 2GB를 제공하고 4GB를 추가로 설치 가능하다. 물론 Synology의 DSM 소프트웨어는 편리하고, 나스의 가격은 대부분 소프트웨어 값이라고는 해도, 해당 하드웨어 스펙 대비 가격이 너무 높다고 생각했다. 나중에 구매 후 몇 년 지나서 또 CPU 때문에 문제가 발생할 것 같았다.
QNAP 도 Synology 제품을 알아보면서 찾아보았지만, 역시나 위와 같은 이유로 마음에 들지 않았다. (QNAP은 가격이 더 사악하다!)
나스에 대해 열심히 검색을 하다 보니 때마침 유튜브에도 여러 영상들이 추천으로 올라왔는데, 영상들을 보니 여러 회사에서 나오는 완제품들 동일 가격 대비 훌륭한 성능의 나스를 구축할 수 있다는 걸 알게 되었다. (링크)
따라서 완제품은 사지 않고 직접 원하는 부품을 사서 구축하기로 하였다.
자작 나스 구성
CPU
CPU가 이번에 나스를 바꾸는 가장 큰 원인이다. 따라서 업그레이드가 용이하게끔 AMD 사의 CPU를 사용할 예정이다. 때마침 사용하지 않는 Ryzen 3 3300X가 있어서 그걸 사용하기로 했다.
역시나 기존에 구매하고자 한 제품과 비교를 안 해볼 수가 없는데, 검색 결과 벤치는 만족스러웠다.

Synology 20년도 모델 CPU와 3300X의 비교
저 정도로 만족을 하냐고 물어볼 수 있는데, 사실 추후에 만족스럽지 못하면 CPU만 업그레이드하면 해결된다. 원하는 부품만 업그레이드할 수 있다는 게 자작 나스의 큰 장점 중 하나이니 문제 될 건 없다.
RAM
추후에 나스 소프트웨어 선택 설명 단계에서 추가적으로 설명할 예정이지만, 이번 나스는 ZFS로 구축할 예정이고, RAM은 캐싱 레이어로 사용될 예정이기에 많으면 많을수록 성능이 좋다. 따라서 16GB x 2로 구매하였다. 또한 ZFS를 사용했을 때 RAM에서 적은 확률이지만 bit flip이 만약에라도 일어나게 되면 데이터가 손상된 상태로 저장 및 백업이 되기 때문에 이를 완벽하게 보완해 줄 수 있는 ECC RAM을 선택했다.
구글이나 커뮤니티에 검색을 해보면 ZFS 시스템에서는 ECC RAM은 무조건 필수다, 아니다로 갑론을박인데, ZFS에서의 ECC RAM 여부가 과하게 과장되어 퍼진 것 같다는 느낌이 들었다.
정리하자면 ZFS에서 ECC RAM은 강력히 권장되지만, 필수는 아니다. 최악의 상황을 고려했을 때 ZFS에서 bit flip이 일어나서 data corruption이 발생하고 pool 이 손상되었을 시 복구가 거의 불가능하기 때문에 그런 문제를 사전에 방지하기 위해서 강력히 권장한다고 한다. (pool이 망가지면 pool에 속하는 하드들에 있는 자료는 전부 복구가 힘들다) 애초에 ZFS는 엔터프라이즈에서 자주 사용하는 시스템인데, 보통 엔터프라이즈에서는 해당 시스템이 손상되었을 때를 대비해 백업 서버를 두어 복구를 하지, 따로 하드 내 자료가 손상되었다고 해당 자료 복구 프로그램을 돈과 시간을 투자해서 돌리지 않기 때문에 복구 솔루션이 잘 없고 가격적으로도 메리트가 없다고 한다.
하지만 직접 처음 구축하는 나스인 만큼 추후에 자료가 다 날아가는 불상사를 없애기 위해 Unbuffered ECC RAM을 골랐다. (Registered RAM은 서버용 보드에서만 인식된다) 필수가 아니기에, 그냥 일반 RAM을 산다고 해서 시스템이 고장 난다거나 문제가 생긴다는 건 아니니, 너무 걱정 안해도 된다.

다행히도 CPU랑 사려고 하는 보드에서도 ECC를 지원한다.
HDD
3TB에서 업그레이드하는 거라 2배 정도만 더 늘리면 좋겠다고 생각을 하였고, 백업용도 필요하니 4TB x 4 개를 구매하기로 했다. 4개 하드 중에 2개는 백업용으로 돌릴 예정이기에 실제로 사용 가능한 용량은 약 7TB 정도 될 것이다.
기존 하드는 나스 전용인 WD Red를 사용하였다. 이번에는 쿨하게 데이터 센터 전용 WD Ultrastar 제품을 구입하였다. (하드 불량률 제일 낮은 HGST가 사실 WD의 자회사!?)
M/B
사실 어떤 크기의 시스템을 구축하냐에 따라 메인보드의 선택지는 다양해진다. 나스이니 작게 ITX 시스템을 구축해도 좋고, 그냥 일반 M-ATX 크기로 구축해도 상관없으면 그것 또한 좋다. ITX 메인보드들은 아무래도 조금 가격적으로 더 부담이 되어 그냥 데스크탑용 M-ATX로 구매를 하였다. 3300X 가 AM4 소켓이니 추후에 업그레이드할 가능성을 염두에 두어 중급인 B550을 선택했다. 물론 ECC 지원 여부도 확인을 하였고, 현재 구축하고 있는 나스에서 일어날 병목 현상은 당연하게도 네트워크 대역폭일 텐데, 추후에 집 네트워크 대역폭을 올렸을 때를 대비하여 이더넷 포트도 2.5Gbps를 지원하는 메인보드로 선택을 하였다.
그 외에 나머지 부품들은 예산, 소음, 열 관리 등 여러 항목들을 고려하여 맞추었다. 이 부분은 일반 조립식 컴퓨터 맞추는 부분과 다른게 없기 때문에 넘어가겠다.
나스 소프트웨어
자작 나스를 구축할 때 가장 중요한 부분이다. 자작 나스를 구축하는 사람들을 위해 여러 오픈소스 및 클로즈 소스 소프트웨어들이 존재한다.
- TrueNAS
- OpenMediaVault
- Xpenology
- Unraid
각 소프트웨어별로 장단점이 있었고, 각자 매력적인 장점들을 가지고 있어서 가장 선택하기 어려운 부분이었다. 간단하게 정리해 보자면,

여기서 나는 TrueNAS를 선택하였다. TrueNAS를 선택한 이유 중 가장 큰 이유는 ZFS를 효과적으로 사용할 수 있어서이다. Unraid도 고민을 많이 했으나, 설치 방식이 USB 부팅형이라 조금 꺼렸고, 물론 서버에 도커 컨테이너를 쉽게 관리할 수 있으면 좋지만, TrueNAS에서도 불가능한 건 아니라서 Unraid는 제외하게 되었다.
cf) ZFS
ZFS는 썬 마이크로시스템즈에서 개발한 파일 시스템이다. 기존에 존재하는 파일 시스템들에 비해 다양하고 독특한 기능을 가지고 있어서 흥미를 끌었는데, 기능들이 정말 훌륭하다.
- SSD 캐시 지원
- 자체 RAID 지원
- 거의 무한대 용량 지원
- 데이터 무결성 - 오류 자동 수정
- 스냅샷
ZFS는 1차적으로 RAM을 ARC (Adaptive Replacement Cache)로 사용한다. 최근에 접근한 파일에 대해 값을 미리 캐싱 해놓고, 사용자가 다시 접근하면 빠르게 값을 가져와서 사용자 입장에서는 반응속도가 빨라지는 이점이 있다. 하지만 일반 저장소들에 비해 RAM은 결코 저렴하지 않고, 시스템에 RAM을 추가하는 데는 한계가 있다. 그래서 ZFS는 2차적으로 SSD에도 캐싱 할 수 있게끔 L2ARC를 지원한다.
스냅샷은 pool에 존재하는 모든 데이터를 어떤 시점에서의 상태를 정적으로 기억해두는 기능이다. 원한다면 언제든지 해당 스냅샷으로 되돌아갈 수 있고, 스냅샷 복원은 몇 분 걸리지 않는다. 스냅샷이라고 용량이 크다고 생각할 수도 있는데, 전체 데이터의 스냅샷 자체가 몇백 바이트밖에 되지 않는다…!
또한 데이터 무결성을 위해 ZFS에는 scrub이라는 기능이 있다. scrub은 pool에 존재하는 모든 데이터와 메타데이터를 해시값을 이용해 검사해서 데이터에 문제가 있는지 확인한 후, 자동으로 복구해 준다.
ZFS에 대한 자세한 설명은 여기서 확인하자.
설치하기
TrueNAS에도 종류가 있는데, TrueNAS CORE 와 TrueNAS Scale 이 있다. CORE는 조금 더 storage에 집중됐고, Scale은 CORE 버전에서 Hypervisor 기능이 추가되었다고 하는데, 아직은 출시된 지 얼마 되지 않아 안정성이 떨어진다는 말을 듣고, CORE을 설치하기로 했다. (TrueNAS 홈페이지)
홈페이지에서 iso 파일을 다운로드하고, USB에 구운 뒤, 조립한 컴퓨터에 꽂고 설치한다. 설치는 5분 정도 소요된다.

Troubleshooting
설치가 다 끝나면 TrueNAS는 알아서 부팅되고, 네트워크 환경을 인식해서 IP를 자동으로 잡기 때문에 (DHCP) 웹에서 바로 접속할 수 있어야 한다. 하지만 집 네트워크를 아무리 살펴봐도 TrueNAS가 인식되지 않았다. 컴퓨터 CLI를 직접 확인해 보니 네트워크를 자동으로 잡지 못하고 있었다.

네트워크 설정을 확인하라고 하는데, 사실 일반 사용자라면 설정할 게 딱히 없다. 네트워크 설정을 확인하던 중에, 황당하게도 TrueNAS가 네트워크 어댑터 자체를 인식하지 않았다는 사실을 알게 되었다. 이는 설치한 메인보드의 네트워크 카드의 드라이버가 OS에서 설치되지 않아서 일어나는 현상인데, 보통 OS를 컴퓨터에 설치하면 알맞은 드라이버를 자동으로 설치하듯, TrueNAS도 마찬가지로 알아서 설치되어야 한다.
드라이버가 왜 설치되지 않았는지 알아보던 중, FreeBSD가 네트워크 카드를 많이 지원하지 않는다는 사실을 알게 되었다. TrueNAS CORE는 FreeBSD 기반이라, FreeBSD에서 미지원하는 하드웨어로는 TrueNAS CORE를 사용할 수 없다.


정말 운 없게도 구입한 메인보드의 이더넷 포트가 FreeBSD에서 지원하지 않는 모델을 사용하고 있었다. 미리 알아보지 못한 실수였다…!
결국은 하드웨어를 잘못 구입하여 TrueNAS CORE를 사용하지 못하게 되었다. 어쩔 수 없이 Linux 기반인 TrueNAS Scale을 설치하기로 변경하였다.
재설치
결국 TrueNAS CORE를 포맷하고 TrueNAS Scale로 재설치를 하게 되었다.

CORE와 큰 차이는 없다. 설치 단계에서 다른 부분은 없기 때문에 그대로 진행한다.
설치가 완료되면 다음과 같은 화면이 뜬다.

라우터에서 서버에 할당된 IP를 확인하여도 되고, 서버를 켰을 때 나오는 화면에 나온 주소로 접속해도 된다.
웹으로 서버를 접속하게 되면 로그인 창이 나오는데, 설치 과정에서 만들었던 root 계정과 비밀번호를 입력해서 로그인한다.

로그인하면 다음과 같은 화면이 나온다.

설치 과정은 이로써 끝이 났다. Storage 탭에 들어가서 하드디스크가 다 인식되었는지 확인하고, pool을 생성하고 필요한 파일 공유 시스템을 활성화하면 저장소로서 바로 사용 가능하다!

시험 삼아 테스트 파일을 하나 전송해 봤는데, 결과는 매우 만족스럽다. 집이 아직 500Mb 인터넷을 사용 중이라서, 사용할 수 있는 대역폭은 다 사용한다고 볼 수 있다.
다음 게시글에서는 모바일에서 NAS 접근 방법 및 TrueNAS Scale 컨테이너를 쉽게 접근할 수 있는 리버시 프록시 설정 방법에 대해서 설명할 예정이다.