TrueNAS를 사용하다 보면 용량 확장 또는 가용성을 높이기 위해서 HDD를 기존의 pool에 추가하기도 합니다. 용량 확장의 경우 TrueNAS WebUI에서 Add Vdev를 이용하여 확장할 수 있지만, 기존 HDD에 mirroring 같은 경우 WebUI에서 지원하지 않습니다.
그래서 이번에는 기존 HDD를 미러링하여 가용성을 높이는 방법에 대해서 알아보겠습니다.
TrueNAS 서버에 HDD 추가하기
사용하실 HDD를 서버에 추가해 주세요. 새로 추가하는 HDD의 용량의 경우, 미러링 할 Pool에 있는 HDD의 용량보다 같거나 더 커야합니다.
추가하신 후에, TrueNAS WebUI에 로그인 해 주세요.
Storage – Disks로 가셔서 새로 추가한 HDD의 이름이 무엇인지 찾습니다. 오른쪽에 Pool 항목에 N/A가 적힌 Disk들 중에서 찾으시면 됩니다. 저의 경우 ada4였습니다. 이름이 무엇 이였는지 기록해주세요.
TrueNAS SSH 로그인하기
Putty 등을 이용하여 TrueNAS에 SSH로 연결해주세요.
TrueNAS HDD 파티션 만들기
저의 경우 ada4 디스크이므로 /dev/ada4라고 하였습니다. 위에서 찾았던 디스크 이름으로 바꿔주시면 됩니다.
gpart create -s gpt /dev/ada4
새로 추가한 디스크에 GPT 파티션을 만듭니다.
gpart add -i 1 -b 128 -t freebsd-swap -s 2g /dev/ada4
Swap 전용 파티션(2GB)를 만들어줍니다. 만들어진 파티션의 이름은 ada4p1 입니다.
gpart add -i 2 -t freebsd-zfs /dev/ada4
나머지 용량을 모두 한 파티션으로 만들어줍니다. 만들어진 파티션의 이름은 ada4p2 입니다.
GPTID 얻기
zpool status
zpool status 명령어는 현재 pool들의 상태와 각 pool에 해당되어 있는 디스크의 gptid를 표시해줍니다. gptid는 쉽게 말하면 각 디스크들이 가지는 고유한 id로서, TrueNAS는 gptid를 이용하여 HDD를 구분한다고 생각하시면 될 것 같습니다.
명령어를 치고 위로 좀 올려보면, HDD를 추가할 pool의 이름을 찾을 수 있을 텐데, 해당 pool에 속해 있는 디스크의 gptid를 기록해 주세요. gptid는 gptid/c6b95c21-791c-30ec-8abc-10e2be6f007a와 같이 표시될 것인데, gptid는 뒤쪽의 c6b95c21-791c-30ec-8abc-10e2be6f007a 입니다. 얻은 gptid를 기록해 두세요.
이번에는 새롭게 추가할 HDD의 gptid를 얻어보겠습니다.
glabel status
위의 명령어를 치면 TrueNAS에 있는 모든 파티션들이 뜨게 됩니다. 새로 만든 ada4p1과 ada4p2가 제대로 있는지 확인해 주세요. 또한, ada4p2의 gptid를 기록해 주세요. p1이 아닌 p2의 gptid를 기록해 주세요. 저의 경우 62aec51a-817c-11ed-a1fc-10e2ba6f007a였습니다.
zpool attach 하기
기존의 HDD와 새로 추가할 HDD의 gptid를 모두 알았으므로 attach만 남았습니다. HDD를 추가할 pool의 이름을 Data라고 한다면, 명령어는 아래와 같습니다.
zpool attach Data /dev/gptid/[기존 HDD의 gptid] /dev/gptid/[새로운 HDD의 gptid]
저의 경우, 아래와 같습니다.
zpool attach tank /dev/gptid/c6b95c21-791c-30ec-8abc-10e2be6f007a /dev/gptid/62aec51a-817c-11ed-a1fc-10e2ba6f007a
해당 명령어를 실행하시면 새로운 HDD와 기존의 HDD가 미러링 됩니다. 그럼 자동적으로 resilvering을 진행하며, 데이터를 복제하는데 시간이 좀 걸릴테니 그냥 두시면 됩니다.
마치면서
이렇게 기존의 HDD에 새로운 HDD를 미러링하여 서버의 가용성을 높이는 방법에 대해서 알아보았습니다. 미러링은 데이터의 무결성을 높이는 것은 아니니, 미러링을 하여도 백업은 꼭 하시길 바랍니다.