TrueNAS SCALE
AMD데네브 16GB(ECC) LSI SAS HBA(6G) 하드랙6BAY 뭔가 백업장치 겸해서 만들어놓은 녀석입니다. nvme며 고속의 저장 장치들이 많지만 나이많은 인간이라 하드디스크를 아직 애정 하나 봅니다. 용량대비 저렴하기도 하고요.
4TB SAS(X4) 하드 디스크를 사용해오다. 14TB 하드디스크로 이번에 교환을 했습니다. 오래전부터 핫스왑이 지원 가능한 하드랙이 장착된 장치를 선호해서 LSI-HBA(6G) it mode로 되어있는 확장카드를 구해서 이용 중입니다.
전에 하드웨어 raid 시스템을 잠시 써본 적이 있어서 시간이 엄청나게 오래 걸릴 것으로 생각했는데 4개의 디스크를 교환하는데 저장량이 많지 않아서인지 하나당 2시간 반이 걸리지 않았던 것 같습니다.
물론 CLI에서도 가능하겠지만 써본적이 없는 관계로 관리 웹상에서 진행했습니다.
전용 장비들은 문제가 생기면 오프라인된 하드디스크를 LED를 통해 표시해주는 장비들도 있다고 들었습니다만 그 정도까지는 아니라서 하드디스크의 시리얼과 하드랙 위치를 미리 적어놓은 메모를 만들었습니다.
로그인후
Storage manage Devices로 들어가면 해당 레이드셋에 연결된 장치들이 보입니다.
장치를 선택하면 여러가지 선택항목이 있고 처음 Offline을 눌러 하드디스크를 연결해서 해제합니다.
선택한 디스크 상태가 오프라인이라고 표시가 됩니다.
분리후 하드디스크를 연결합니다. 재장착을하고 인식을 조금 기다린 후 마지막의 replace 누루면 인식된 새기기가 보입니다.
선택한후 진행 시키면 바로 되지는 않고 Detach를 선택하고 눌러줘야 Resilvering을 시작했습니다.
하드랙이 아니라면 오프라인하고 전원을 끄고 하나씩 교환하는 비슷한 과정을 거치면 될 것 같습니다.
이렇게 교환을 마쳤습니다..
영상들 도 있어서 따로 자세히는 언급 하지 않고 이렇게 글을 올리는 이유는 목적인용량의 확장입니다.
이런식으로 교환을 하고 마지막하드디스크의 리실버링때 그냥 확장이 되었습니다.
그래서 살펴보니 openzfs 에서
zpool get auto expand (풀 이름) 하면 해당 풀의 값을 알 수 있는데 이 값이 on으로 되어있다며 자동확장입니다.
sudo zpool set autoexpand=on (풀이름) 활성화
그리고 과거에 쓰던 하드디스크가 512B 교환한게 4K하드디스크였는데도 이상이 없었습니다.
그리고 처음으로 쉘로 접속해서 과거처럼 /etc/fstab을 열었더니
cat /etc/fstab
boot-pool/grub /boot/grub zfs relatime,defaults 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=100m 0 0
설정한 풀의 마운트 정보가 없어서 한동안 고민을 했습니다. 그래서 찾아보니 일반적으로 /etc/fstab를 사용할수도있고 ZFS 자체 설정을 사용한다고 합니다.
zfs get mountpoint 데이터셋 마운트 확인
zfs list 마운트된 볼륨 확인
1.삼성 840 ssd 120G 2. exos x16 14TB
fio --name=test --size=1G --rw=randrw --rwmixread=70 --bs=4k --numjobs=4 --runtime=60 --group_reporting
test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
-
--rw=randrw: 랜덤 읽기/쓰기 테스트 -
--rwmixread=70: 읽기 70%, 쓰기 30% 비율 -
--bs=4k: 블록 크기 4KB -
--numjobs=4: 4개의 병렬 작업 수행 -
--runtime=60: 60초 동안 테스트
1. SSD
Starting 4 processes
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
Jobs: 4 (f=4): [m(4)][100.0%][r=10.9MiB/s,w=4756KiB/s][r=2777,w=1189 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=10883: Mon Mar 24 01:19:41 2025
read: IOPS=2784, BW=10.9MiB/s (11.4MB/s)(653MiB/60002msec)
clat (usec): min=4, max=24960, avg=693.59, stdev=867.57
lat (usec): min=4, max=24962, avg=694.34, stdev=867.83
clat percentiles (usec):
| 1.00th=[ 9], 5.00th=[ 17], 10.00th=[ 20], 20.00th=[ 97],
| 30.00th=[ 121], 40.00th=[ 135], 50.00th=[ 147], 60.00th=[ 169],
| 70.00th=[ 1549], 80.00th=[ 1909], 90.00th=[ 2040], 95.00th=[ 2180],
| 99.00th=[ 2343], 99.50th=[ 2442], 99.90th=[ 2573], 99.95th=[ 2638],
| 99.99th=[ 3228]
bw ( KiB/s): min= 6360, max=93464, per=100.00%, avg=11156.03, stdev=2152.19, samples=476
iops : min= 1590, max=23366, avg=2789.03, stdev=538.05, samples=476
write: IOPS=1200, BW=4803KiB/s (4918kB/s)(281MiB/60002msec); 0 zone resets
clat (usec): min=11, max=12462, avg=1691.87, stdev=587.56
lat (usec): min=11, max=12463, avg=1693.10, stdev=587.90
clat percentiles (usec):
| 1.00th=[ 24], 5.00th=[ 145], 10.00th=[ 676], 20.00th=[ 1483],
| 30.00th=[ 1663], 40.00th=[ 1762], 50.00th=[ 1844], 60.00th=[ 1942],
| 70.00th=[ 2008], 80.00th=[ 2073], 90.00th=[ 2212], 95.00th=[ 2278],
| 99.00th=[ 2474], 99.50th=[ 2540], 99.90th=[ 2671], 99.95th=[ 2900],
| 99.99th=[ 4293]
bw ( KiB/s): min= 3064, max=41776, per=100.00%, avg=4810.96, stdev=958.23, samples=476
iops : min= 766, max=10444, avg=1202.74, stdev=239.56, samples=476
lat (usec) : 10=1.31%, 20=6.25%, 50=4.73%, 100=2.37%, 250=35.01%
lat (usec) : 500=0.69%, 750=0.36%, 1000=0.48%
lat (msec) : 2=30.66%, 4=18.13%, 10=0.01%, 20=0.01%, 50=0.01%
cpu : usr=1.30%, sys=15.60%, ctx=120758, majf=9, minf=54
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=167071,72050,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=10.9MiB/s (11.4MB/s), 10.9MiB/s-10.9MiB/s (11.4MB/s-11.4MB/s), io=653MiB (684MB), run=60002-60002msec
WRITE: bw=4803KiB/s (4918kB/s), 4803KiB/s-4803KiB/s (4918kB/s-4918kB/s), io=281MiB (295MB), run=60002-60002msec
2. 14TB (x4)
Starting 4 processes
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
test: Laying out IO file (1 file / 1024MiB)
Jobs: 4 (f=4): [m(4)][100.0%][r=38.0MiB/s,w=16.2MiB/s][r=9720,w=4150 IOPS][eta 00m:00s]
test: (groupid=0, jobs=4): err= 0: pid=11048: Mon Mar 24 01:24:58 2025
read: IOPS=8199, BW=32.0MiB/s (33.6MB/s)(1922MiB/60001msec)
clat (usec): min=3, max=18849, avg=93.09, stdev=109.94
lat (usec): min=3, max=18850, avg=93.41, stdev=110.08
clat percentiles (usec):
| 1.00th=[ 6], 5.00th=[ 7], 10.00th=[ 9], 20.00th=[ 17],
| 30.00th=[ 63], 40.00th=[ 76], 50.00th=[ 87], 60.00th=[ 99],
| 70.00th=[ 115], 80.00th=[ 133], 90.00th=[ 163], 95.00th=[ 192],
| 99.00th=[ 343], 99.50th=[ 586], 99.90th=[ 1254], 99.95th=[ 1631],
| 99.99th=[ 2999]
bw ( KiB/s): min=24644, max=83647, per=100.00%, avg=32798.15, stdev=2013.43, samples=476
iops : min= 6161, max=20910, avg=8199.45, stdev=503.32, samples=476
write: IOPS=3522, BW=13.8MiB/s (14.4MB/s)(826MiB/60001msec); 0 zone resets
clat (usec): min=9, max=16029, avg=904.63, stdev=355.61
lat (usec): min=9, max=16029, avg=905.17, stdev=355.68
clat percentiles (usec):
| 1.00th=[ 112], 5.00th=[ 208], 10.00th=[ 482], 20.00th=[ 668],
| 30.00th=[ 775], 40.00th=[ 857], 50.00th=[ 930], 60.00th=[ 1004],
| 70.00th=[ 1074], 80.00th=[ 1139], 90.00th=[ 1237], 95.00th=[ 1336],
| 99.00th=[ 1827], 99.50th=[ 2147], 99.90th=[ 3097], 99.95th=[ 3621],
| 99.99th=[ 6325]
bw ( KiB/s): min=11528, max=36829, per=100.00%, avg=14093.39, stdev=864.19, samples=476
iops : min= 2882, max= 9206, avg=3523.25, stdev=215.99, samples=476
lat (usec) : 4=0.01%, 10=9.32%, 20=5.93%, 50=2.95%, 100=24.71%
lat (usec) : 250=27.29%, 500=2.58%, 750=5.10%, 1000=10.00%
lat (msec) : 2=11.89%, 4=0.22%, 10=0.01%, 20=0.01%
cpu : usr=1.80%, sys=29.92%, ctx=220139, majf=0, minf=48
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=491986,211380,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=32.0MiB/s (33.6MB/s), 32.0MiB/s-32.0MiB/s (33.6MB/s-33.6MB/s), io=1922MiB (2015MB), run=60001-60001msec
WRITE: bw=13.8MiB/s (14.4MB/s), 13.8MiB/s-13.8MiB/s (14.4MB/s-14.4MB/s), io=826MiB (866MB), run=60001-60001msec
요사이 nvme와는 비교할 껌딱지도 안되지만 만족합니다.. 삽질을예상했는데 잘되어서 올려봅니다.
하나가 문제가 생겼을경우 과거 같은 경우동일한 용량의 동일한 속도(문제생기는 여지를 줄이기위해) 동일한 모델 심지어는 동일한 펌웨어버전 으로 구성된 기기를 여분으로 가지고있다가 한개가 죽으면 그걸 교환하는 식이고 더많은 갯수의 하드디스를 사용할때는 다양한 모드로 한번에 두개 3개까지 문제가 생겨도 버틸수있게 설정이되어있고 수십개의 하드디스크중에는 설정중에 여분으로 설정을해놓으면 문제가 생기면 알아서 복구하는 식입니다. 바로 끝나는것이 아니로 다시 시스템을 구축하는 시간이 아주 오래 걸립니다. 그럴수밖에 없는것이 하드디스크는 보통 읽기 이백몇십메가에서 쓰기 백몇십메가정도되는것이 보통입니다.
그러나 캐쉬가 달려있는 raid카드들이 과거 수백메가 수기가만 달린 모델들도 값비싼것들이였는데
잘아는것은 아니지만 그런것을 시스템의 시피유와 메모리를 적극적으로 이용하면서 구현되어있는 파일시스템입니다. 따라서 소비자가 준비할것은 고가의 캐쉬가 달린 raid카드가 아닌 그냥 기기를 인식시킬수있는 고대역의 HBA 같은 연결할 인터페이스와 적당한 시피유 그리고 안전성을 위해 ECC메모리 물론 크면좋습니다. 실제 4TB x4 제 시스템에는 다양한 제조사의 하드디스와 sas sata가 혼용되어 있었지만 문제없이 작동되었습니다.. 심지어 리실버링과정에서 성능은 떨어졌지만 다른 서비스를 꺼야한다던가하는문제도 없었습니다.
장점은 4TB 하드만으로 구성된 시스템이있다면 복구용으로 4TB 이상의 하드디스크를 준비하면되고 물론 혼용되어 용량이 확장되지는 않고 구성된 개수를 큰 동일 용량의 하드 디스크로 전부교체를 하면 별다른 작업없이 바로 확장이된다는게 저에게는 충격이였습니다. 그리고 레이드로 구성하면 물리하드 디스크의 단일성능은 보잘것없지만 한꺼번에 여러하드에서 읽고 나눠쓰기때문에 대역폭이 커진다는 장점이있습니다 실제 쓰기 읽기 속도 향상을기대할수있습니다..
물론 편한 오토미션같은 녀석은 아닙니다만. 레이드카드마다 CLI에서 명령을 줄줄이 쓰던것을 옛날 구경했던저로서는 간만에 좀더 깊이 알아보고싶은 녀석이였습니다.
엔터프라이즈 용으로 설계 되었습니다.
EMC
Netapp
ZFS
대략 이런 부류입니다.
파일관리
하드관리
전송관리
Snapshop 관리 등
데이터와 하드를 전문적으로 관리 해줍니다.
메모리와 강력한 CPU를 요구합니다.. 그러면서 스스로 거대한 레이드 컨트롤러가 되버입니다.
컴퓨터가 아니라 본체 전체가 거대한 레이드 컨트롤러가 되요.
그래서 성능이 막강해집니다.
한번도 100명~1000명 서비스
동시접속 20~100명..
이런 서비스 하는 서버죠.
주로 중소기업 에서 많이 사용합니다.
이에 비하면 시놀로지는 가정용
14TB 4개로 스케일업 하셨다는 말씀이신가요?
트루나스에서 데이터 손상 없이 디스크를 한개씩 교체하면 용량 증설이 가능한거군요?