RAID (Redundant Array of Inexpensive Disks)
- 장애요인 최대로 제거한 고성능 무 정지 저장장치
- 여러 개의 disk를 하나의 가상 disk로 구성, 대용량 저장 장치 구축 가능
- 다수의 disk에 data를 분할, 병렬 전송해 전송 속도 향상
- Hardware RAID 와 Software RAID로 구분 ( Test 환경은 Software 구성에 해당 )
- RAID는 Level 이 존재하며, 각 Level 마다 기능이 다르다.
- CentOS 7.x 에서는 Raid 0 , 1 , 5 , 6 , 1+0 번을 제공 한다.
레이드로 묶일 하드디스크의 속도와 용량이 같아야한다.
Hardware RAID 란?
Server에 별도의 Raid Controller를 장착하여 물리적인 Raid구성을 의미한다,
Software RAID에 비해 안정적이고, 속도가 빠르다.
Software RAID 란?
기본 OS에 내장되어있는 Raid를 이용하는 것을 말하며, Hardware RAID에 비해 성능이 떨어진다.
Raid Level 0 ( Stripe Volume )
- 둘 이상의 디스크 내의(최대 32개) 빈 공간을 하나의 볼륨으로 결합- Stripe 볼륨에 데이터 쓰기 발생 시 64kb 블록으로 나뉘어져 배열된 모든 디스크에 균등 분산
- 성능은 향상되나 리스크도 증가
- 디스크의 수에 따라 성능 향상
Raid Level 1 ( Mirror Volume )
- 디스크 짝수 개 필요
- 기존의 단순 볼륨을 Mirroring
- 내결함성 제공 성능향상은 없음
- 사용 가능 디스크의 용량 = [ 총 디스크 용량 / 2 ]
Raid Level 5 ( Stripe With Parity )
- 디스크 최소 3개 이상 필요
- 추가 디스크 하나만으로 내결함성
- 오류 검사를 위해 parity bit 사용
- 사용 가능 디스크 용량 = (총 디스크 용량 - 디스크 하나 용량 )
Raid Level 6 ( 중복 패리티 )
- 디스크 최소 4개 이상 필요
- Raid5의 단점인 2개 이상의 HDD가 Fail 하더라도 복구 가능
- 오류 검사를 위해 중복 parity bit 사용
- 사용 가능 디스크 용량 = (총 디스크 용량 - 디스크 두개 용량 )
Raid Level 1 + 0
- 디스크 최소 4개 이상 필요
- Raid 1번 구성 후 Raid 0번으로 재 구성하는 형태
- 신뢰성과 성능은 우수 하지만, 효율적인 측면이 떨어짐
- 사용 가능 디스크의 용량 = [ 총 디스크 용량 / 2 ]
raid 구성
1. mdadm 패키지 설치
2. 디스크 파티션 생성
3. Raid 장치파일 생성
4. Raid 구성
5. mdadm 설정파일 생성
6. Raid 장치 포맷
7. Raid 장치 마운트 / 오토 마운트
raid 0 (sdb,sdc)
파티션생성
fdisk 메뉴 t 사용해서 레이드 타입으로 변경
장치파일 생성
현재 RAID구성 시 RAID에 관한 장치 파일이 없으므로 장치 파일을 수동으로 생성
b : 블록디바이스
9 0 : 장치파일을 구분하는 메이저번호 마이너번호
Raid 0 구성
위에서 생성한 장치 파일에 Raid 0의 정보를 입력 한다
정보 입력 후 확인
정보 입력 후 확인하게 되면, 입력 된 정보를 토대로 장치의 UUID값 등이 표시되는 것을 확인
mdadm 설정파일 생성
종종 장치파일명이 바뀌는걸 방지하기위해 설정파일로 생성해놓음(오토마운트 설정해놨는데 이름 바뀌면 안됨)
Raid 장치 포맷
Raid 장치 마운트
raid 1(sdb, sdc, sdd)
Raid 장치파일 생성
Raid 1 구성
mdadm 설정파일 생성
Raid 구성 후 확인
Raid 장치 포맷
Raid 장치 마운트
Raid 장치 오토마운트
Raid 1 복구 확인
일부러 고장내기
실제 업무에서는 HDD가 제거되는 일은 거의 없고 대부분 HDD에 문제가 발생하는 상태이다, 이때 장치의 상태를 Failed 상태라 말한다.
sdb에 문제가 생겨 Failed상태이라고 가정하고
#mdadm /dev/md1 -r /dev/sdc1
(Failed 장치 MD장치에서 제거 명령어, 하지만 여기서는 강제로 물리적으로 제거하기때문에 쓸 필요가 없다.)
sdb 물리적으로 강제로 제거
그럼 sdc 가 sdb로 바뀜 (sdc이름이 sdb로 바뀜)
그럼 sdd 가 sdc로 바뀜 (sdd이름이 sdc로 바뀜)
sdd가 사라진것처럼 보이지만 sdc와 sdd의 이름이 바뀐것
확인해보면 하나가 removed 볼 수 있다.
복구할 디스크 추가
state > spare rebuilding 이후
state > active sync 복구 된것 확인
raid 5(sdb, sdc, sdd, sde, sdf(복구))
# mknod /dev/md5 b 9 5
# mdadm --create /dev/md5 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
(4개 raid 5로 구성)
# mdadm --detail --scan
# mdadm --query --detail /dev/md5
# mkfs.xfs /dev/md5
# mkdir /raid5
# mount /dev/md5 /raid5
# mdadm --detail --scan > /etc/mdadm.conf
# vi /etc/fstab
# reboot (Auto Mount 확인 )
일부러 고장내기
#mdadm /dev/md1 -r /dev/sdb1
(Failed 장치 MD장치에서 제거 명령어, 하지만 여기서는 강제로 물리적으로 제거하기때문에 쓸 필요가 없다.)
sdb 물리적으로 강제로 제거
#umount /dev/md5
# mdadm /dev/md5 --add /dev/sde1(원래 sdf이지만 하나 없어져서 sde)
# mdadm --query --detail /dev/md5(다시 활성화 되었는지 확인)
# mount /dev/md5 /raid5
# mdadm --detail --scan > /etc/mdadm.conf
raid 6(sdb, sdc, sdd, sde, sdf(복구), sdg(복구))
# mknod /dev/md6 b 9 6
# mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# mdadm --detail --scan
# mdadm --query --detail /dev/md6
# mkfs.xfs /dev/md6
# mkdir /raid6
# mount /dev/md6 /raid6
# mdadm --detail --scan > /etc/mdadm.conf
# vi /etc/fstab
# reboot (Auto Mount 확인 )
일부러 고장내기
sdb,sdc 물리적으로 강제로 제거
#umount /dev/md6
# mdadm /dev/md6 --add /dev/sdd1
# mdadm /dev/md6 --add /dev/sde1
# mdadm --query --detail /dev/md5(다시 활성화 되었는지 확인)
# mount /dev/md6 /raid6
# mdadm --detail --scan > /etc/mdadm.conf
raid 10(sdb, sdc, sdd, sde, sdf(복구), sdg(복구))
# mknod /dev/md10 b 9 10
# mdadm --create /dev/md6 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# mdadm --detail --scan
# mdadm --query --detail /dev/md10
sdb1, sdd1 < set-A
sdc1, sde1 < set-B
# mkfs.xfs /dev/md10
# mkdir /raid10
# mount /dev/md10 /raid10
# mdadm --detail --scan > /etc/mdadm.conf
# vi /etc/fstab
# reboot (Auto Mount 확인 )
일부러 고장내기
Raid 1 , Raid 5 , Raid 6 같은 경우에는 HDD를 제거하여도 부팅이 가능하지만, Raid 0 , Raid 1+0은 불가능 하다.
Set으로 묶인 HDD 2개를 동시에 Failed 하면 안 된다
/dev/sdb , /dev/sde 를 Failed
# mdadm /dev/md10 -f /dev/sdb1 /dev/sde1 (일부러 고장내기)
# mdadm --query --detail /dev/md10
#umount /dev/md6
# mdadm /dev/md10 -r /dev/sdb1 /dev/sde1 (지우고)
# mdadm --query --detail /dev/md10
# mdadm /dev/md10 --add /dev/sdf1 /dev/sdg1 (복구 디스크 추가)
# mdadm --query --detail /dev/md10
# mount /dev/md10 /raid10
# mdadm --detail --scan > /etc/mdadm.conf
raid 해제
Raid 장치 마운트 해제
# umount /dev/md0
md 장치 삭제
# mdadm -S /dev/md0
Partition superblock 초기화
# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdc1
md 장치에서 사용한 Partition superblock 초기화
vi /etc/fstab 편집
# vi /etc/fstab
오토마운트 해제
'[Linux]' 카테고리의 다른 글
[Linux] 리눅스 backup (0) | 2022.05.31 |
---|---|
[Linux] 리눅스 압축 (Tar, Gzip, Bzip) (0) | 2022.05.31 |
[Linux] 리눅스 LVM (0) | 2022.05.30 |
[Linux] 리눅스 오토마운트 (0) | 2022.05.27 |
[Linux] 리눅스 DISK / File System (fdisk, lsblk, blkid, mkfs, df) (0) | 2022.05.26 |