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개) 사용하는 거 추천 드립니다.
핫-스페어는 디스크 장애가 발생했을 때 교체용으로만 사용됩니다. 일상적인 상태에서는 데이터 저장용으로 사용되지 않습니다. 그래서 전반적으로 스토리지 비용이 상승하는 요인이기도 합니다.
비용적인 측면 고려해서 적절하게 설정해서 사용하시기 바랍니다.