Category (Click)
개발보드 덕질하기

NAS 업그레이드 - TrueNAS로 이사

 차완기 - @12/2/2023, 7:38:00 PM
6년전 쯤 헤놀로지 기반의 자작 NAS를 만든 이후 지금까지 사진, 소스코드 등 개인적인 파일을 저장하는 용도로 사용하고 있었습니다. 21년에는 하드디스크를 4TBx3으로 교체하기도 했었죠.
그러나 올해 초 들어 NAS의 접속이 가끔 끊어지기 시작하더니 어느날 접속이 불가능해지게 되었습니다. NAS가 물리적으로 먼 곳에 위치해 있었고 무엇보다 엄청 긴급하게 필요한 자료가 아니다 보니 “언젠가는 고치지” 하면서 방치해 두고 있었습니다.
맥북, 아이패드, 아이폰 이렇게 애플 기기를 사용하다 보니 iCloud만으로 기기간 파일 공유가 가능했던 것도 한 몫 했죠.
그러던 중 Windows를 사용하는 데스크탑 PC와 맥북간의 파일 공유가 너무나도 불편해 NAS를 다시 살려보기로 했습니다.
우선 NAS를 뜯어 쌓여있던 먼지를 닦아주고 꾸역꾸역 살려서 중요한 데이터를 모두 백업해두었습니다.
이제 몇 가지를 선택해야 했습니다.

OS

앞서 언급했듯이 기존에는 시놀로지의 크랙 버전인 헤놀로지(XPEnology)를 사용하고 있었습니다.
시놀로지의 DSM이 너무나도 편리하고 제 사용 패턴 상 헤놀로지의 제약이 큰 문제가 되지 않았죠. 하지만 업데이트되는 DSM의 버전을 따라갈 때 마다 주의가 필요했고, 구버전으로 두기에는 보안이 걱정되어 이제는 다른 OS로 넘어가기로 했습니다.
그렇게 검색하던 중 유튜브 Linus Tech Tips 채널에서 자주 본 TrueNAS를 사용해보기로 했습니다.
그 중에서도 Debian Linux를 사용하는 SCALE 버전을 선택했습니다. Docker를 활용한 여러 확장을 지원해 여러 용도로 활용하기 좋아보였습니다.

HW 구성

다음으로 하드웨어 구성을 정해보았습니다.

스토리지

기존 NAS는 3개의 4TB HDD와 1개의 SSD, 1개의 부팅 USB로 구성되어 있었습니다.
4 TB HDD - RAID 5 1/3
4 TB HDD - RAID 5 2/3
4 TB HDD - RAID 5 3/3
500 GB SSD - cache
16 GB USB - boot
메인보드의 SATA포트 수가 4개인 데다가 케이스의 핫스왑 베이가 4개 뿐이라 부팅 디스크 대신 USB를 사용했었습니다. 덕분에 USB 고장으로 NAS가 한번 뒤집어지기도 했죠.
TrueNAS는 USB 부팅을 지원하기는 하는데요, USB때문에 NAS가 고장나는 것을 다시는 경험하기 싫어 이번에는 SSD를 부팅 디스크로 사용하기로 했습니다. 시게이트의 서버용 SSD중 가장 적은 용량인 250GB 모델을 선택했습니다.
그럼 문제가 하나 생기죠. “SATA 어디서 가져옴?”
제가 사용중인 메인보드에는 Wi-Fi 모듈을 연결하기 위한 E키 M.2 포트가 있습니다. PCIe를 뽑아낼 수 있는데요, 여기에 PCIe to SATA 모듈을 사용해 2개의 SATA로 바꿔먹을 수 있었습니다.
이걸 활용해 하드를 몇 개 더 연결하기로 했습니다.
컴퓨존, NEXT-802TC (링크)
한편 백업으로는 NAS와 분리된 드라이브인 DAS를 활용하기로 했습니다. 2베이 USB DAS를 구매해 남아도는 아무 하드를 연결하고 Stripe(JBOD)로 구성하면 될 듯 합니다.
마지막으로 캐시 SSD인데요, KB 단위의 소스코드를 자주 읽고 쓰다 보니 지금 그대로 두기로 했습니다. ZFS의 ARC와 함께 사용하면 얼마나 효과가 있을지 기대가 되네요.
최종적으로 정해진 스토리지 구성은 다음과 같습니다.
메인보드 SATA
4 TB HDD - main RAIDZ1 1/3
4 TB HDD - main RAIDZ1 2/3
4 TB HDD - main RAIDZ1 3/3
250 GB SSD - boot
JMB582 PCIe to SATA 모듈
120 GB SSD - main cache(L2ARC)
500 GB SSD - app Stripe
백업용 2베이 USB DAS
? TB HDD - backup Stripe
? TB HDD - backup Stripe

네트워크

M.2 슬룻 반대편에는 귀여운 1레인짜리 PCIe 2.0이 있습니다.
SATA 확장카드를 설치할까 고민하다가 더 이상 하드를 둘 공간이 없어보여 2.5G 이더넷 카드를 장착하기로 했습니다. 추후 2.5Gbps 스위치를 구매하게 되면 그때 업그레이드할 계획입니다.

TrueNAS 설치&세팅

TrueNAS의 공식 유튜브 영상을 참고해 설치를 진행하였습니다.
설치 과정에서만 모니터, 키보드가 필요했고, 이후 모든 설정은 웹 UI에서 진행되었습니다.
설치가 완료된 후 처음으로 들어간 TrueNAS 웹 UI입니다. 상당히 깔끔하네요.
TrueNAS는 시놀로지와 유사하게 스토리지 풀을 생성하고, 데이터셋이라는 공유 폴더를 만들어 공간을 사용할 수 있도록 되어있었습니다.
테스트 삼아 메인 드라이브를 RAID5에 해당하는 RAIDZ1으로 설정해보았습니다.
시놀로지의 경우 RAID를 생성하게 되면 RAID를 빌딩 하는 과정이 필요했는데, 요건 그런 과정이 없네요. ZFS의 장점인것? 같습니다.

세팅 완료

며칠간 밤 늦게까지 삽질도 하고 NAS도 날려보면서 공부아닌 공부를 했습니다.

데이터셋

위 사진처럼 데이터셋을 설정했습니다.
app 데이터셋 하위에 보면 Docker 컨테이너를 저장하는 ix-applications 이외에도 APP_Configs가 있는데요, Docker에 올라가는 컨테이너들의 Config나 DB를 분리해서 이곳에 저장해 전체 컨테이너를 백업할 필요가 없도록 했습니다.

SMB

로컬에서는 SMB를 사용해 데이터에 접근하도록 했습니다. 이외에도 Home Assistant Backup을 NAS에 하기 위해 NAS용 디렉토리도 하나 파주었습니다.

데이터 보호

데이터 보호와 관련된 기능을 한 페이지에 몰아두어 편리했습니다.

App

TrueNAS SCALE을 선택한 이유이기도 하죠. 여러 앱을 설치해두었습니다.
Nextcloud
설치형 사설 클라우드 플랫폼입니다. 대부분의 자료는 후술할 VPN을 활용해 SMB로 가져오지만 외부에서 파일을 받는다던지 스마트폰-PC간 파일 이동에 활용하기 좋아 설치해두었습니다.
Nginx Proxy Manager(NPM)
Nextcloud와 Home Assistant의 외부 접속을 위한 역방향 프록시, SSL인증서 관리 기능을 지원합니다.
Pi-hole
사설 DNS 서버입니다. Local DNA 기능을 활용해 로컬에서 도메인으로 서버에 접속할 때 공인 IP가 아닌 로컬 IP로 접속하도록 하기 위해 설치했습니다.
광고 목적으로 많이 사용하고는 하는데요, 가끔 들어가지지 않는 사이트가 생기곤 해 광고 제거는 비활성화해두었습니다.
wg-easy
외부에서 NAS의 파일을 가져와야 한다면 VPN을 사용한 후 SMB를 사용하는게 가장 안전한데요, 이를 위해 설치한 VPN APP입니다. 정확히는 Wireguard를 GUI로 제어하도록 도와줍니다.

마무리

여기까지 TrueNAS로 마이그레이션한 과정을 다뤄보았습니다.
시놀로지를 경험해 보았다 보니 UI가 불편하면 어쩌지 걱정을 조금 했는데요, 걱정과는 다르게 익숙해지니 너무나도 편리했습니다.
조만간 서버를 세팅하며 하였던 여러 삽질, 그리고 너무나도 시끄러워 질러버린 통신랙을 꾸미는 과정을 올려보도록 하겠습니다