openzfs vs mdraid 기능 비교

  • openzfs vs mdraid 기능 비교 

얼마전에 기존에 사용하고 있던 software raid 환경에서 DISK 추가 하면서 용량 늘리고 싶어서 찾아 봤다가, 아래 내용 정리 해서 공유 해봅니다. openzfs 와 mdraid 두가지 모두 사용하면서, 나름의 경험을 공유 해봅니다. 각 상황에 따라서, 적당한 software raid를 구성해서 사용하면 될듯 합니다.

openzfs mdraid
AVX지원 no yes
RAID Level 지원 0,1,10,5,6,60,RAIDZ3 0,1,10,5,6
RAID Level 변경
예) RAID6 -> RAID5 변경
no yes
RAID 용량 확장
예) 3TB -> 4TB로 하나씩 전부 교체
yes yes
RAID 용량 확장
예) 기존 RAID 그룹에 DISK 하나 추가
no yes
RAID 용량 확장
예) 1TB x 6장 RAID6 에서, 2장 더 추가 하여, 1TB x 8장으로 확장시
해당없음 Reshape 시간 : 대략 7시간 소요
RAID 용량 확장
예) 기존 RAID6 그룹에 이어서, RAID0 형태로 추가의 RAID6 확장
yes 해당없음
물리적 용량이 다른 Disk를 RAID0 형태로 묶는경우 yes (모든 디스크 용량 사용가능) 제일작은 DISK 사이즈
기준으로 RAID 구성됨
Scrubing 성능 (SATA2 기준) per Disk 1장 40~50MB/sec 100~120MB/sec
1TB Rebuild 시간 (SATA2기준) 2~3 Day 3~4Hours
Dedup 기능 yes no
Compress 기능 yes no
File System 용량 확장 yes yes (ext4, xfs) , zfs도 사용가능
CPU 의존도 High Low (AVX 영향이 있는듯)
설치 zfs-release repo 필요 CentOS 에 기본 포함
메모리 사용의존 특징 zfs 에서 설정한 메모리 한계 사용 OS의 Memory 를 IO Cache 적극 활용
SSD Cache 구성 지원 yes yes(bcache)
KVM Image 공간 효율성 with Dedup 기능 / sparse 파일 기준 100% 가정시 120~150% 용량 사용 (ext4, xfs기준) dedup ratio 에 따라 달라짐

이어서,  mdadm tool 을 사용하여, raid level 변경 및 raid disk 확장 하는 방법 관련해서 정리 해볼려고 합니다.

  • mdraid 의 기존 raid group 에 신규 디스크 추가

raid 상태 확인

root@isbc:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdc[0] sdb[6] sdh[5] sdg[4] sdf[2] sdd[1]
11721060352 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
unused devices: <none> 
root@isbc:~# mdadm -D /dev/md0
/dev/md0:
Raid Level : raid6
Array Size : 11721060352 (11178.07 GiB 12002.37 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
State : clean
Number  Major  Minor  RaidDevice  State
       0       8       32              0              active sync       /dev/sdc
       1       8       48              1              active sync       /dev/sdd
       2       8       80              2              active sync       /dev/sdf
       4       8       96              3              active sync       /dev/sdg
       5       8       112            4              active sync       /dev/sdh
       6       8       16              5              active sync       /dev/sdb

디스크 추가 (spare로 추가됨)

root@isbc:~# mdadm --add /dev/md0 /dev/sda
mdadm: added /dev/sda
root@isbc:~# mdadm --detail /dev/md0
/dev/md0:
Raid Level : raid6
Array Size : 11721060352 (11178.07 GiB 12002.37 GB)
Raid Devices : 6
Total Devices : 7
Persistence : Superblock is persistent
State : clean
Number  Major  Minor  RaidDevice  State
       0       8       32              0              active sync       /dev/sdc
       1       8       48              1              active sync       /dev/sdd
       2       8       80              2              active sync       /dev/sdf
       4       8       96              3              active sync       /dev/sdg
       5       8       112            4              active sync       /dev/sdh
       6       8       16              5              active sync       /dev/sdb
       7       8       0              -                 spare          /dev/sda

RAID 확장

root@isbc:~# mdadm -v --grow --raid-devices=7 /dev/md0
mdadm: Need to backup 10240K of critical section..

RAID Rebuild 작업 진행

root@isbc:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda[7] sdc[0] sdb[6] sdh[5] sdg[4] sdf[2] sdd[1]
11721060352 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
[>....................] reshape = 0.0% (370132/2930265088) finish=4118.1min speed=11857K/sec
unused devices: <none>

root@isbc:~# mdadm --detail /dev/md0
/dev/md0:
Raid Level : raid6
Array Size : 11721060352 (11178.07 GiB 12002.37 GB)
Raid Devices : 7
Total Devices : 7
State : clean, reshaping
Reshape Status : 0% complete
Delta Devices : 1, (6->7)
Number  Major  Minor  RaidDevice  State
       0       8       32              0              active sync       /dev/sdc
       1       8       48              1              active sync       /dev/sdd
       2       8       80              2              active sync       /dev/sdf
       4       8       96              3              active sync       /dev/sdg
       5       8       112            4              active sync       /dev/sdh
       6       8       16              5              active sync       /dev/sdb
       7       8       0              6              active sync       /dev/sda

작업이 끝난후에 RAID 상태 확인

root@isbc:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda[7] sdc[0] sdb[6] sdh[5] sdg[4] sdf[2] sdd[1]
14651325440 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
unused devices: <none>

root@isbc:~# mdadm --detail /dev/md0
/dev/md0:
Raid Level : raid6
Array Size : 14651325440 (13972.59 GiB 15002.96 GB)
Raid Devices : 7
Total Devices : 7
State : clean
Number  Major  Minor  RaidDevice  State
       0       8       32              0              active sync       /dev/sdc
       1       8       48              1              active sync       /dev/sdd
       2       8       80              2              active sync       /dev/sdf
       4       8       96              3              active sync       /dev/sdg
       5       8       112            4              active sync       /dev/sdh
       6       8       16              5              active sync       /dev/sdb
       7       8       0              6              active sync       /dev/sda
  • mdraid 에서 raid level 변경 (4EA Disk RAID6 –> 3EA Disk RAID5 + 1 Spare –> 4EA Disk RAID5)
mdadm --grow /dev/md0 --level=raid5 --raid-devices=3 \
      --backup-file=/root/mdadm-backupfile
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --grow -n 4 /dev/md0
reboot
umount /home/
e2fsck -f /dev/md0 (ext4 일경우, 만약 xfs라면 xfs_growfs 를 사용하면됨)
resize2fs /dev/md0
mount -a
  • Reference site links
    • http://www.ewams.net/?date=2014/03/29&view=Expanding_a_RAID6_volume_with_mdadm
    • https://raid.wiki.kernel.org/index.php/Growing
    • https://www.tjansson.dk/2013/09/migrate-from-raid-6-to-raid-5-with-mdadm/
    • http://chris-hill-tech.blogspot.kr/2015/10/raid-and-ssds-on-linux.html

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.