Storage – ZFS Hot-spare

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개) 사용하는 거 추천 드립니다.

핫-스페어는 디스크 장애가 발생했을 때 교체용으로만 사용됩니다. 일상적인 상태에서는 데이터 저장용으로 사용되지 않습니다. 그래서 전반적으로 스토리지 비용이 상승하는 요인이기도 합니다.

비용적인 측면 고려해서 적절하게 설정해서 사용하시기 바랍니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

Storage – ZFS 소개

ZFS는 Zettabyte File System의 약자입니다. Zetta요? 스토리지 용량 얘기할 때 테라(tera)는 많이 들어 봤을겁니다.이것부터 한번 살펴보면… 대략 이렇게…
Read More

03.10 BTRFS

Proxmox VE 8.1.3 매뉴얼을 DeepL를 이용해서 기계번역하고, 살짝 교정했습니다.https://pve.proxmox.com/pve-docs/pve-admin-guide.html 경고: BTRFS 통합은 현재 Proxmox VE의 기술 미리보기입니다. BTRFS는…