차완기 - @9/8/2024, 11:17:00 AM
홈랩의 NAS에는 총 4개의 하드 베이가 있습니다.
3개의 베이에는 HDD를 연결해 RAIDZ1으로 구성하고, 나머지 하나는 SSD 하나를 꽂아두고 딱히 사용하고 있지 않았는데요, 최근 들어 이게 아깝다는 생각이 들어 리퍼비시 받은 하드로 채워주기로 했습니다. 많은 저장 공간이 필요한 것이 아니기 때문에 RAIDZ2로 변경하기로 했습니다.
그런데 문제가 하나 있었으니,, 바로 ZFS는 레이드 유형 변경이 불가능한 것이었습니다. (물론 레이드에 하드 한장 추가도 불가능하고요 ㅋㅋ) 작업 다하고 나니 TrueNAS 24.10에서 지원하기 시작함 ㅋㅋㅋㅋㅋ
다행히도 사용중인 공간이 얼마 되지 않아 추가하려 하는 4TB 하드에 들어가, 이 하드를 활용해 마이그레이션을 진행하기로 했습니다.
임시 풀 생성
모든 서비스 정지
HDD 하나를 이용해 stripe 데이터 풀 생성 (temp 풀)
Replication task 생성 및 복제 (main→temp)
temp 풀에 replication task 생성 (main → temp)
varofla@VarOfLa:~$ rsync -av --dry-run /mnt/main/main_dataset/ /mnt/temp/main_dataset/
sending incremental file list
sent 817,691 bytes received 2,934 bytes 547,083.33 bytes/sec
total size is 667,092,296,809 speedup is 812,907.60 (DRY RUN)
Bash
복사
rsync dry-run 이용해 복제 정상 여부 확인
기존 풀 삭제, 재생성
그러고 보니 RAIDZ2를 구성할 4TB 하드에 데이터를 임시 보관하고 있어, 임시로 백업에 사용하던 하드 하나를 뽑아다가 레이드에 활용했습니다.
•
4TB HDD 1 : unused → temp 데이터풀 (stripe)
•
4TB HDD 2 : main (RAIDZ1) → new main (RAIDZ2)
•
4TB HDD 3 : main (RAIDZ1) → new main (RAIDZ2)
•
4TB HDD 4 : main (RAIDZ1) → new main (RAIDZ2)
•
3TB HDD 1 : backup (mirror) → new main (RAIDZ2)
•
3TB HDD 2 : backup (mirror) → backup (mirror, degraded)
ZFS 에러 무엇???
데이터 복원 (temp→main)
varofla@VarOfLa:~$ rsync -av --dry-run /mnt/temp/main_dataset/ /mnt/main/main_dataset/
sending incremental file list
sent 817,691 bytes received 2,934 bytes 24,496.27 bytes/sec
total size is 667,092,296,809 speedup is 812,907.60 (DRY RUN)
Bash
복사
rsync dry-run 이용해 복제 정상 여부 확인
디스크 교체
4TB 하드와 3TB 하드를 교체하고, 각 데이터풀에서 resilver를 진행했습니다.
•
4TB HDD 1 : unused → temp 데이터풀 (stripe) → new main (RAIDZ2, resilver)
•
4TB HDD 2 : main (RAIDZ1) → new main (RAIDZ2)
•
4TB HDD 3 : main (RAIDZ1) → new main (RAIDZ2)
•
4TB HDD 4 : main (RAIDZ1) → new main (RAIDZ2)
•
3TB HDD 1 : backup (mirror) → new main (RAIDZ2) → backup (mirror, resilver)
•
3TB HDD 2 : backup (mirror) → backup (mirror, degraded) → backup (mirror)
서비스 정상화
varofla@VarOfLa:~$ sudo zfs get readonly
NAME PROPERTY VALUE SOURCE
main/homeassistant_backup readonly on local
# ...
varofla@VarOfLa:~$ sudo zfs set readonly=off main/homeassistant_backup
varofla@VarOfLa:~$ sudo zfs get readonly
NAME PROPERTY VALUE SOURCE
main/homeassistant_backup readonly - local
Bash
복사
SMB를 켰더니 읽기 전용으로 표시되었습니다. 복제를 할 때 읽기 전용으로 데이터셋이 만들어진 것 같네요.
데이터셋의 readonly를 꺼주어 해결했습니다.