RAID 구성하다 보면 핫-스페어(Hot-Spare)라는 용어가 등장합니다.
자동차 중에는 타이어 펑크 났을 때 사용하기 위해 여분의 임시 타이어를 갖고 있는 경우가 있습니다. 보통 트렁크 바닥에 숨어 있거나, 대형 SUV의 경우 뒷문에 달려있기도 합니다.
이 여분의 타이어를 “스페어(spare) 타이어”라고 부릅니다.

여분의 디스크를 핫-스페어라고 핫(hot)자를 붙인 이유는 언제든 사용할 수 있게 다른 디스크 처럼 시스템에 연결된 상태이기 때문입니다. 즉, 전원이 연결되어 있고, 그렇다 보니 따뜻해져서 핫을 붙여서 핫-스페어라고 부르는 것입니다.
CLI로 핫-스페어 추가
ZFS 메뉴에 보면 디스크 장애를 대비한 핫-스페어(hot-spare) 설정할 수 있는 메뉴가 없습니다. 아쉽지만 Proxmox Ve는 Web UI를 통해서는 Create 할 때도, 하고 난 이후에도 핫-스페어를 구성할 수 없습니다. CLI를 이용해야 합니다.
(그림)
(1) 제일 먼저 lsblk -f
와 같은 명령어를 이용해서 사용하지 않는 디스크를 확인합니다.
이 예의 경우는 sdd ~ sdm 까지는 zfsmember라고 표시되고 있고, 그 오른쪽에 풀 이름인 RAID10 도 표시되어 있습니다. 즉 RAID10 풀에서 사용 중이란 의미입니다.
그리고 제일 아래에 sdn과 sdo 는 아무런 내용이 없습니다. 즉, 미사용 상태입니다.
root@pve-01:~# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
├─sda2 vfat FAT32 C929-554D
└─sda3 LVM2_member LVM2 001 omxaHv-WeGr-ZnB2-FvNE-pLGr-mv1T-DMizMT
├─pve-swap swap 1 82e368ff-5198-4f65-b06b-702b956abcb6 [SWAP]
├─pve-root ext4 1.0 f0f6c32e-e039-4d53-9c7d-0c6823940ce9 20.8G 65% /
├─pve-data_tmeta
│ └─pve-data-tpool
│ ├─pve-data
│ ├─pve-vm--100--disk--1
│ ├─pve-vm--100--disk--0
│ ├─pve-vm--100--disk--2
│ ├─pve-vm--101--disk--0
│ ├─pve-vm--101--disk--1
│ ├─pve-vm--101--disk--2
│ ├─pve-vm--104--disk--0
│ └─pve-vm--104--disk--1
└─pve-data_tdata
└─pve-data-tpool
├─pve-data
├─pve-vm--100--disk--1
├─pve-vm--100--disk--0
├─pve-vm--100--disk--2
├─pve-vm--101--disk--0
├─pve-vm--101--disk--1
├─pve-vm--101--disk--2
├─pve-vm--104--disk--0
└─pve-vm--104--disk--1
sdb
sdc
sdd
├─sdd1 zfs_member 5000 RAID10 11981632663234930270
└─sdd9
sde
├─sde1 zfs_member 5000 RAID10 11981632663234930270
└─sde9
sdf
├─sdf1 zfs_member 5000 RAID10 11981632663234930270
└─sdf9
sdg
├─sdg1 zfs_member 5000 RAID10 11981632663234930270
└─sdg9
sdh
├─sdh1 zfs_member 5000 RAID10 11981632663234930270
└─sdh9
sdi
├─sdi1 zfs_member 5000 RAID10 11981632663234930270
└─sdi9
sdj
├─sdj1 zfs_member 5000 RAID10 11981632663234930270
└─sdj9
sdk
├─sdk1 zfs_member 5000 RAID10 11981632663234930270
└─sdk9
sdl
├─sdl1 zfs_member 5000 RAID10 11981632663234930270
└─sdl9
sdm
├─sdm1 zfs_member 5000 RAID10 11981632663234930270
└─sdm9
sdn
sdo
root@pve-01:~#
(2) zpool status
명령으로 ZFS 풀의 상태를 확인합니다. 풀(pool)의 이름, 현재 ONLINE 상태로 이상 없는지 등을 확인합니다.
root@pve-01:~# zpool status
pool: RAID10
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
RAID10 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdm ONLINE 0 0 0
sdl ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
mirror-3 ONLINE 0 0 0
sdh ONLINE 0 0 0
sdi ONLINE 0 0 0
mirror-4 ONLINE 0 0 0
sdj ONLINE 0 0 0
sdk ONLINE 0 0 0
errors: No known data errors
root@pve-01:~#
(3) zpool add
명령으로 RAID10
풀에 스페어(spare)로 /dev/sdn과 /dev/sdo를 추가(add) 합니다. 그리고 zpool status
명령으로 다시 확인해보면, spares라는 항목이 추가된 것을 알 수 있습니다.
root@pve-01:~# zpool add RAID10 spare /dev/sdn /dev/sdo
root@pve-01:~# zpool status
pool: RAID10
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
RAID10 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdm ONLINE 0 0 0
sdl ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
mirror-3 ONLINE 0 0 0
sdh ONLINE 0 0 0
sdi ONLINE 0 0 0
mirror-4 ONLINE 0 0 0
sdj ONLINE 0 0 0
sdk ONLINE 0 0 0
spares
sdn AVAIL
sdo AVAIL
errors: No known data errors
root@pve-01:~#
꼭 추천하는 핫-스페어
RAID 방식으로 구성해서 사용한다면 핫-스페어 사용하는 것을 추천 드립니다. 그래야 잠든 사이에 디스크 장애가 발생하더라도, 자동으로 리빌드되면서 추가적인 디스크 장애에 대응할 수 있는 상태가 되기 때문입니다.
핫-스페어 수는 최소 1개 이상, 또는 패리티 수 만큼(예를 들어 RAIDZ1이면 1개, RAIDZ2면 2개, RAIDZ3이면 3개) 사용하는 거 추천 드립니다.
핫-스페어는 디스크 장애가 발생했을 때 교체용으로만 사용됩니다. 일상적인 상태에서는 데이터 저장용으로 사용되지 않습니다. 그래서 전반적으로 스토리지 비용이 상승하는 요인이기도 합니다.
비용적인 측면 고려해서 적절하게 설정해서 사용하시기 바랍니다.