개요
얼마 전 올렸던 글에서 Proxmox에서 TrueNAS를 ZFS over iSCSI스토리지로 연결하여 헤놀로지(Xpenology)를 구성하는 법을 설명한 적이 있습니다.
TrueNAS의 ZFS를 이용해 헤놀로지 안전하게 사용하기
개요헤놀로지(xpenology)는 가정용 NAS를 구축하려는 분들에게 가장 먼저 고려되는 OS중 하나입니다. 잘 만들어진 시놀로지 생태계를 사용할 수 있고, 사용자 친화적인 UI로 학습 곡선도 다른 NAS OS에
worklazy.net
윗 글은 Proxmox를 이용해 다수의 VM을 편리하게 관리하면서도 헤놀로지를 구성하고 싶은 경우에 적합한 경우이고, 이번 글은 네이티브 TrueNAS위에 헤놀로지를 VM으로 구성하는 방법입니다. 사실상 TrueNAS에서 VM을 굴리는 글인 셈이죠. 기존의 방법과 비교 시 가장 큰 차이는 호스트 OS가 TrueNAS라는 것과 네트워크 스토리지가 아닌 로컬 스토리지이기 때문에 내부망 속도의 영향이 적다는 점입니다.
다만, TrueNAS는 Proxmox의 qm disk import와 같이 .img파일을 편리하게 Zvol로 변환할 수 있는 명령어가 없습니다. 그리고 img파일을 다이렉트로 읽어 디스크처럼 사용할 수도 없습니다(당연). 그래서 헤놀로지 부트로더를 TrueNAS에서 사용할 수 있도록 변환하는 과정과 함께, 헤놀로지를 만든 후 해당 Zvol을 관리하는 방법을 함께 설명하겠습니다.
제 생각으론, 도커를 운용할 소수의 vm외에 딱히 필요한게 없으신 분은 이 환경이 제일 안전할거라고 믿어 의심치 않습니다.
TrueNAS 네트워크 브릿지 구성
이 글을 따라하기 전, TrueNAS의 Network탭에서 NIC상태를 확인하고 브릿지(br0, br1, ...)가 구성되어 있지 않다면, 아래 글을 참조해 브릿지를 먼저 구성하는 것을 추천합니다. 브릿지 없이 ens, enp등으로 시작하는 NIC를 다이렉트로 사용 시, 헤놀로지와 TrueNAS간 통신이 불가능합니다.
TrueNAS 네트워크 가상브릿지 구성하기
개요네트워크 브릿지는 다양한 용도로 사용되지만 보통은 bond를 구성하고 그 위에 브릿지를 구성해 사용하게 됩니다.그런데, TrueNAS를 처음 설치하면 NIC에 바로 DHCP를 잡아주도록 구성되어있기
worklazy.net
TrueNAS에 헤놀로지 VM 설치환경 구성하기
부트로더 이미지 준비
먼저 부트로더 이미지를 준비하겠습니다. 이번에도 역시 화정큐삼님의 xTCRP를 사용할 예정입니다. 깃허브에서 img.gz파일을 다운받아 압축을 해제한 뒤, SSH나 삼바 공유 등을 이용해 img파일을 TrueNAS에 올려줍니다.
예제 글에서는 'pds'스토리지 하위의 'iso' dataset에 업로드했기 때문에 경로가 아래처럼 됩니다.
/mnt/pds/iso/tinycore-redpill.v1.2.0.0.xtcrp.img

부트로더 Zvol 구성
제일 먼저 업로드한 부트로더 이미지와 동일한 크기의 Zvol을 생성한 뒤 dd를 이용해 데이터를 씌워줘야 합니다. 화정큐삼님의 부트로더는 전체 파티션 크기가 2기가이기 때문에 2기가의 Zvol을 생성합니다. Zvol name과 Size for this zvol외에는 크게 신경쓸 부분이 없습니다.
저는 'pds'스토리지 풀 하위 경로 'proxmox' dataset에 생성했습니다.


이제 SSH로 TrueNAS에 접속해 root로 전환한 후, dd명령어를 이용해 img파일의 내부 내용을 새로 생성한 Zvol에 복사합니다. 이전 글에서도 말씀드렸듯, Zvol의 경로는 /dev/zvol/{pool}/{dataset}/{zvol}입니다.
따라서 이 경우는 /dev/zvol/pds/proxmox/xtcrp가 됨을 알 수 있으므로, 아래와 같이 입력하면 됩니다.
dd if=/mnt/pds/iso/tinycore-redpill.v1.2.0.0.xtcrp.img of=/dev/zvol/pds/proxmox/xtcrp bs=8M status=progress
그러면 아래처럼 길지 않은 시간이 지난 후, 쓰기가 완료 됩니다.

데이터 Zvol 생성
실제로 헤놀로지에서 디스크로 사용될 Zvol을 생성할 차례입니다. 디스크 용량은 스토리지 풀이 허락하는 한 자유롭게 설정하시면 되며, 이번 방법도 역시 용량 부족 시 얼마든지 Zvol확장이 가능하므로 첫 설치 때 용량을 얼마나 설정해야 하는지 고민할 필요는 없습니다.
최신 DSM모델들은 파일 시스템 선택지에 ext4보다 BTRFS가 권장되므로 block size는 16KiB 그대로 두어도 문제 없습니다.
만일 Thin Provisioning(이미지 용량만큼 할당하지 않고 쓰는만큼 늘어나는 방식)을 사용하고 싶다면 Sparse를 체크하면 됩니다.
TrueNAS의 사양이 좀 괜찮다 싶으면 Compression Level을 zstd-fast나 zstd로 올리는 것을 추천합니다. I/O가 발생할 때마다 CPU가동률이 높아지긴 하는데, DSM에서 사용되는 용량보다 Zvol이 차지하는 용량이 확실히 적습니다. 이는 추후 아래에서 설명할 Snapshot 시에 장점으로 다가옵니다.
저는 'pds' 스토리지 풀 하위경로의 'proxmox' dataset에 Xpenology라는 Zvol을 생성했고, Thin Provisioning상태입니다.


TrueNAS에 헤놀로지 VM 설치하기
헤놀로지 VM 생성
Virtualization탭으로 이동해 가상머신을 생성합니다.
Operating System
- Guest Operating System : Linux
- Name : 자유
- Boot Method : UEFI나 Legacy BIOS나 무관 (이 글에서는 Legacy BIOS 선택)
- Start on Boot : TrueNAS 부팅 시 바로 함께 구동될 것인지 여부
- Enable Display : 디스플레이 사용 여부(체크)
- Bind : 특정 IP대역(NIC)에서만 접근가능하도록 구성할지 여부(0.0.0.0 - 모두 접근)
- Password : VNC접근 시 사용할 비밀번호, 자유

CPU And Memory
- Virtual CPUs : 코어나 스레드가 아닌 가상CPU의 갯수, 어지간하면 1 권장
- Cores : 가상 코어 개수
- Threads : 가상 스레드 개수
- (Cores = 4, Threads = 8이면 4코어 8스레드)
- Optional Cpu Set : CPU의 코어에서 사용할 코어번호를 직접 지정
- Pin vcpus : Optional CPU Set에서 구성한 가상논리코어 개수와 VM에 할당한 가상논리코어 개수가 일치하면 1:1로 코어를 매칭
- Optional CPU Set과 Pin vcpus는 VM의 성능을 끌어올릴 수는 있으나, Host나 다른 VM에서 해당 코어를 같이 사용하기 어렵게 만들고, 이 기능은 주로 GPU를 패스스루하여 고강도의 작업을 하는 VM을 위한 것이므로 대체로 구성하지 않는 것을 권장.
- CPU Mode : Host Passthrough
- Custom은 특정 CPU모델을 에뮬레이션 하는 기능, Host Model은 Host CPU와 동일한 CPU를 에뮬레이션 하는 것으로 헤놀로지 구성에는 딱히 필요하지 않음.
- Memory Size : 헤놀로지에 할당할 메모리
- Minimum Memory Size : VM이 보유할 최소한도 메모리(Host가 뺏어가지 못함)
- 개인의 사양에 따라 구성하면 되며, 호스트인 TrueNAS가 ARC를 공격적으로 사용해서 헤놀로지에 문제가 생긴다면 구성하는 것을 추천
- Optional NUMA Nodeset : 호스트의 CPU가 2개 이상이고 각 CPU에 할당된 영역의 메모리가 있을 때, 이를 지정하는 것, 보통의 경우 사용할 일 없음

Disks
- Use existing disk image 체크
- Select Disk Type : AHCI
- Select Existing Zvol : 위에서 구성한 부트로더 Zvol

Network Interfaces
- Adapter Type : VirtIO
- Mac Address : 자유 (혹은 전백코드 사용 시 수정)
- Mac Address를 이용해 라우터에서 고정IP를 미리 지정해놓으면 편함
- Attach NIC : 헤놀로지가 네트워크 및 인터넷 접근 시 사용할 NIC(브릿지 권장)
- Trust Guest Filters : 체크해제

Installation Media
아무것도 선택하지 않고 넘어갑니다.
GPU
흔히 알고 있는 'GPU Passthrough'입니다. TrueNAS호스트에 GPU가 있고, 이를 온전히 헤놀로지에 할당하려면 여기서 넘겨주면 됩니다. 단, 헤놀로지에서 그래픽카드를 사용할 일이 Plex등의 미디어 스트리밍의 트랜스코딩이나 서베일런스 스테이션을 제외하면 큰 사용처가 없기 때문에, GPU는 호스트에서 Apps를 통해 사용하는 것이 좀 더 효율이 좋습니다.

Confirm Options
Save를 클릭해 VM을 생성합니다. 근데 아직 데이터용으로 사용할 Zvol이 빠져있기 때문에 시작은 하면 안됩니다.

데이터용 Zvol 추가
생성된 VM의 Devices버튼을 클릭합니다.

우측 상단의 Add버튼을 클릭한 뒤, Type을 Disk로 변경해서 데이터용 Zvol을 넣어 줍니다.


헤놀로지 VM 시작 및 Display 접근
Start버튼을 클릭하면 VM이 시작됩니다.

해당 VM의 화면을 보는 방법은 2가지인데,
첫째는 Display버튼을 클릭해 TrueNAS에서 제공하는 SPICE를 이용하는 방법입니다. 별도의 프로그램 설치 등이 필요없다는 장점이 있지만, 종종 화면이 깨지는 경우가 있습니다.


두 번째는 Virt Viewer를 설치해 주소를 입력하는 방식입니다. 링크를 타고 조금 내려가면 x86과 x64를 선택해서 설치할 수 있고 프로그램 이름은 Remote Viewer입니다.


클립보드 공유가 기본적으로 지원되는 등 실사용은 이쪽이 편합니다.
입력할 주소는 spice://{TrueNAS IP}:{Display Port} 입니다.



콘솔 로그는 Serial Shell을 통해 볼 수 있습니다.



헤놀로지 부트로더 빌드 및 실사용
xTCRP는 menu.sh를 직접 입력해 로더빌드 과정을 거쳐야 합니다. 워낙 잘 만들어진 부트로더이기 때문에 엔터만 몇 번 치고나면 알아서 빌드됩니다.




로더 빌드 후에는 정상적으로 부팅되는 것을 확인할 수 있고,


별 문제가 없다면 DSM설정페이지로 넘어갈 수 있습니다.




스토리지 풀은 Basic으로 구성하시면 됩니다(JBOD는 추후 설명드릴 방법으로 용량 확장이 불가능합니다). 소프트레이드는 호스트인 TrueNAS에서 모두 수행하고 있으므로 헤놀로지는 단일 풀로 최대 가용 용량을 사용하시면 되기 때문입니다.

디스크 이미지 관리
파티션 확장
기존 글과 마찬가지로 작업 수행 전 Snapshot을 꼭 찍어주세요.
헤놀로지를 종료한 뒤, TrueNAS의 Dataset탭에서 데이터 Zvol을 찾아 Edit Zvol을 클릭합니다.
그리고 이미지 크기를 바로 수정해 줍니다. 예시 글에서는 1TiB를 2TiB로 증가시켰습니다.


이후는 기존 글과 동일한 절차를 따라갑니다.
Proxmox에서 TrueNAS의 ZFS를 이용해 헤놀로지 안전하게 사용하기
개요헤놀로지(xpenology)는 가정용 NAS를 구축하려는 분들에게 가장 먼저 고려되는 OS중 하나입니다. 잘 만들어진 시놀로지 생태계를 사용할 수 있고, 사용자 친화적인 UI로 학습 곡선도 다른 NAS OS에
worklazy.net
SSH로 TrueNAS에서 아래와 같이 입력합니다.
sudo parted /dev/zvol/pds/proxmox/Xpenology
p를 입력해 파티션 테이블을 보고 resizepart 3 100%를 입력해 3번 파티션을 최대 크기로 늘려 줍니다.


이후, 경우가 2가지로 나뉘는데,
헤놀로지 부팅 후 저장소 관리자에서 '지금 확장'이 표시되는 경우

그냥 클릭해서 진행하시면 됩니다.


헤놀로지 부팅 후 저장소 관리자에서 아래처럼 '지금 확장'이 표시되지 않는 경우
먼저 헤놀로지의 SSH를 활성화 한뒤, SSH로 접속해 root계정으로 전환합니다.

df -h를 수행해보면 /volume1은 아직 1테라(확장 전)에 불과합니다.

cat /proc/mdstat 명령을 통해 데이터 디스크 레이드를 찾습니다.

md2를 확인했으니 아래 명령어를 입력합니다.
mdadm --grow /dev/md2 --size=max

여기까지 잘 완료했다면, 헤놀로지를 한 번 재부팅 한 후, 저장소 관리자에서 '지금 확장'을 진행하면 됩니다.



스냅샷을 통한 데이터 복원
이 과정은 기존 글과 완전히 동일하므로 링크로 대체하겠습니다.
Proxmox에서 TrueNAS의 ZFS를 이용해 헤놀로지 안전하게 사용하기
개요헤놀로지(xpenology)는 가정용 NAS를 구축하려는 분들에게 가장 먼저 고려되는 OS중 하나입니다. 잘 만들어진 시놀로지 생태계를 사용할 수 있고, 사용자 친화적인 UI로 학습 곡선도 다른 NAS OS에
worklazy.net
다른 Dataset으로 Zvol 이동
TrueNAS의 Replication을 사용하면 됩니다. Replication은 이동할 Zvol의 Snapshot을 찍은 뒤 이를 다른 경로로 전송하는 기능입니다.
먼저 이동할 Dataset에 동일한 용량의 Zvol을 생성합니다.
예시로는 'media' 스토리지 하위 경로에 생성했습니다.


헤놀로지를 종료한 뒤, Datasets탭에서 Zvol을 클릭하고 Manage Replication Tasks를 클릭합니다.

우측 상단의 Add를 클릭합니다.

Source Location과 Destination Location 모두 On this System을 선택한 뒤, Source는 원본 Zvol을, Destination은 위에서 생성한 Zvol을 클릭합니다.
Recursive는 해당 Zvol의 스냅샷까지 모조리 복제할 것인지 묻는 것이고, Recplicate Custom Snapshots는 스케쥴 외에 사용자가 직접 생성한 Snapshot까지 복제할 것인지를 묻는 옵션입니다.

Next를 클릭한 뒤 Run Once를 클릭하고 Save를 클릭하면 작업이 시작되었음을 알려줍니다.


아래와 같이 작업이 진행중임을 보여줍니다.

잠시 후에 확인해 보면 아래와 같이 Finished문구와 함께 Snapshot을 잘 전송했음을 알려줍니다.

용량도 증가했음을 알 수 있습니다.

이제 Virtualization탭에서 VM의 Disk를 해당 Zvol로 교체한 뒤 부팅시켜주면 됩니다.


작동이 잘 되는 것을 확인한 뒤, 원본 Zvol을 삭제해주시면 Zvol이동작업이 완료됩니다.
헤놀로지 복제(Clone)하기
현재 상태 복제하기
현재(Now) 헤놀로지를 복제하려 한다면 간단히 Clone버튼을 눌러 실행할 수 있습니다.


이 과정을 통해 TrueNAS가 알아서 현재 상태의 Snapshot을 찍고, 마운트한 뒤, 새 VM에 연결하고 Display Port까지 구성해 줍니다. 이 방법을 이용해 VM을 자주 Clone해두고 필요 시 백업본으로 사용할 수도 있습니다.


그러나 이 상태로 부팅하면 기존에 사용하던 DSM의 시리얼 번호와 MAC스푸핑이 그대로 적용되어 동일 네트워크 내 충돌이 예상되므로, 로더빌드 과정만 한 번 거쳐서 시리얼과 MAC주소만 반영되도록 해주면 됩니다.
특정 시점 복제하기(Clone to New Dataset)
기존 글은 Proxmox와 TrueNAS를 iSCSI로 연결하다보니 Snapshot을 마운트 한 뒤 iSCSI Share도 같이 구성해줘야 한다는 귀차니즘(?)이 있었습니다.
그러나 지금은, 원하는 시점의 Snapshot을 Clone to New Dataset기능을 통해 마운트 한 뒤, 이걸로 VM을 생성하면 끝납니다.

Zvol을 마운트했으면 이를 이용해 VM을 생성해 줍니다.






위의 경우와 마찬가지로 로더빌드만 한 번 다시 수행해서 S/N 및 MAC주소만 변경되도록 반영해주면 됩니다.
2가지 경우 모두 부트로더용 Zvol에 dd를 수행하는 귀찮은 과정을 제외하기 위해 스냅샷을 활용한 것으로, 개의치 않다면 부트로더는 새로 dd로 만드는 것이 더 깔끔하긴 합니다.
마무리
원래 저는 3.5인치 4베이 1U서버로 헤놀로지를 오래 운용했었습니다. 근데 충격적이게도 업데이트를 한 것도 아니고, 부트로더USB에 문제가 생긴 것도 아니고, 그냥 재부팅만 했을 뿐인데, 디스크 내부 파티션이 날아가버려 DSM무한 설치에 빠진 적이 있습니다. 그 전에도 두어번의 데이터 유실을 겪긴 했지만, 그건 헤놀로지를 이용하면서 발생할 수 있다고 생각했던 문제라 억울하진 않았는데, 이건 정말 억울하더군요.
어찌저찌 부팅을 시켰더니 DSM이 배드섹터 한 개도 없는 디스크를 지목하며 불량이라고 해서 교체까지 해주었지만, 결말은 디스크 3개의 동시 파티션 증발이었습니다. 그렇게 날아간 데이터에는 제가 그 동안 회사생활하면서 커리어용으로 모은 자료들과, 이직하면서 작성했던 이력서, 현 와이프와의 연애시절 꽁냥댔던 통화녹음 등이 포함되어 있었습니다...
이 일을 겪고 나서 헤놀로지를 네이티브로 구성하는 것을 포기했고, 가상화로 운영할 때도 절대로 HBA카드를 통째로 패스스루해주지 않았습니다. 아주 제한적으로 이용했죠. 그러다가 그냥 TrueNAS로 이전해서 정착하게 되었습니다.
TrueNAS의 RaidZ는 헤놀로지의 불안정성과는 다르게 확실히 안전성이 보장된 소프트레이드입니다. 이렇게 구성된 스토리지 풀 위에 헤놀로지를 구성하고 ZFS의 Snapshot을 통해 간단한 문제는 바로 복구할 수 있도록 구성한다면, 헤놀로지의 불안전성을 많이 상쇄할 수 있을 거라 생각해 글을 작성하게 되었습니다.
물론 TrueNAS자체가 스토리지 솔루션이기 때문에 이 위에 헤놀로지를 구성하는 건 자원의 낭비이고, 의미 없는 짓이긴 합니다. 그렇기 때문에, 이 글은 가상화든, 네이티브이든, 헤놀로지를 이용해 NAS를 구축하는 것이 주목적인 분들에게 적합할 것이라 생각합니다. 네이티브 헤놀로지를 설치할 거라면, 네이티브 TrueNAS를 설치한 뒤, 하드디스크를 싹 모아 하나의 ZFS Pool과 Dataset을 구성하고 여기에 헤놀로지를 올리면 되는 것이죠.
의문의 파티션 증발 외에도, DSM버전의 롤백, 패키지 꼬임, 알 수 없는 버그나 자잘한 데이터 유실로부터 ZFS의 보호를 받을 수 있게 되니까요.
관련 글
2025.01.31 - [TrueNAS] - TrueNAS 네트워크 가상브릿지 구성하기
TrueNAS 네트워크 가상브릿지 구성하기
개요네트워크 브릿지는 다양한 용도로 사용되지만 보통은 bond를 구성하고 그 위에 브릿지를 구성해 사용하게 됩니다.그런데, TrueNAS를 처음 설치하면 NIC에 바로 DHCP를 잡아주도록 구성되어있기
worklazy.net
2025.01.23 - [TrueNAS] - Proxmox에서 TrueNAS의 ZFS를 이용해 헤놀로지 안전하게 사용하기
TrueNAS의 ZFS를 이용해 헤놀로지 안전하게 사용하기
개요헤놀로지(xpenology)는 가정용 NAS를 구축하려는 분들에게 가장 먼저 고려되는 OS중 하나입니다. 잘 만들어진 시놀로지 생태계를 사용할 수 있고, 사용자 친화적인 UI로 학습 곡선도 다른 NAS OS에
worklazy.net
2025.01.23 - [Proxmox] - Proxmox에서 TrueNAS로 ZFS over iSCSI 연결하기
Proxmox에서 TrueNAS로 ZFS over iSCSI 연결하기
개요Proxmox의 ZFS over iSCSI 스토리지는 ZFS 파일시스템과 iSCSI기능을 갖춘 시스템과 연동하여 스토리지를 구성하는 방식입니다. 평범한 iSCSI 스토리지와 비교할 때, ZFS를 이용하기 때문에 스냅샷 기
worklazy.net