bxm's IT Story

Linux - RAID 구축 본문

서버/Linux

Linux - RAID 구축

bxmsta9ram 2021. 10. 27. 09:25

## Linear RAID 와 RAID 0~5 ##

  두 방식 모두 최소 2개 이상의 HDD가 필요하다. 1개의 볼륨을 사용한다는 점은 같으나 저장 방식은 차이가 난다.

Liner - 각 HDD 용량이 달라도 100% 공간활용을 한다.
RAID 0 - Striping 방식
RAID 1 - Mirroring 방식
RAID 2 - Strip의 크기를 매우 작게 설정하고, 오류 검출 및 정정을 할 수 있으나 제한적이다.따라서 신뢰성이 떨어진다.
RAID 3,4 - 하나의 드라이브에 패리티 정보를 저장하고, 나머지 드라이브들 사이에 데이터를 작은 단위로 분산한다.
- 패리티 정보가 기록된 디스크의 병목현상으로 인하여 느려질 수 있는 단점이 있다.

RAID 3 : 데이터를 비트단위로 분산하지만,
RAID 4 :      "      블록단위로 분산한다.

- 따라서 용량이 큰 데이터 저장은 RAID 4가 유리하다.
RAID 5 - 패리티 정보를 모든 디스크에 분산저장하여 병목현상을 줄였다. 최소한 3개 이상의 하드디스크가 있어야만
  구성이 가능하며, 대개는 5개 이상의 하드디스크로 구성한다.
- 각 행의 홀 또는 짝수 패리티를 적용하므로 하나의 HDD가 고장나도 복구가 가능하다.
- 그러나 2개 이상의 HDD가 고장날 경우 연속된 2개으 ㅣ비트가 고장나게 되므로 1차원 패리티로는 잡아낼 수
  없다.

## 실습환경 구축 (HDD 추가) ##

CentOS]

2GB 짜리 HDD 1개 생성.


cd ./dev

ls -l | grep sd

sda는 주 HDD(여기선 25GB), sd(b~j)는 새로 추가한 HDD

bc 리니어
- 그냥 엮는것임. 속도가 늘어나지 않음
de 스트라이프
- 속도가 2배임, 둘 중에 하나가 망가지면 망함.
fg 미러링
- 속도 그대로, 둘 중에 하나가 망가져도 복구 가능.
hij RAID 5
- 하나는 패리티 비트로 사용하기에 n-1배 속도.
- 둘 중에 하나가 망가져도 복구 가능 (2개 망가지면 복구 불가)

## HDD가 추가되었으면 fdisk를 수행해야 한다. (B~J까지 파티션 전부 나누기!! 귀찮...) ##  - n명령어

fdisk sdb

 

fdisk sdc

 

fdisk sdd

 

fdisk sde

 

fdisk sdf

 

fdisk sdg

 

fdisk sdh

 

fdisk sdi

 

fdisk sdj


## RAID는 System ID가 RAID 형식이어야 하므로 고쳐줘야 한다. ##  -  t 명령어

fdisk sdb

 

fdisk sdc

 

fdisk sdd

 

fdisk sde

 

fdisk sdf

 

fdisk sdg

 

fdisk sdh

 

fdisk sdi

 

fdisk sdj


## System ID 확인 (RAID 형식인지 확인) ##

fdisk -l

 

ls -l | grep sd

// 이제 주 파티션이 생길 것이다. ~1



## Linear 방식 ##

mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1

// 하드디스크 2개(sdb1,sdc1)를 리니어 방식으로 md9라는 이름으로 묶겠다.

 

mdadm --detail --scan

// 생성되었는지 확인.

제대로 생성이 되었다!!!!

 

// 디테일하게 내용 확인해보기.

mdadm --detail /dev/md9


## 루트 디렉토리에 raidLinear 디렉토리 생성하기

cd /

mkdir /raid

 

 

## 파티션 2개를 묶었기 때문에 포맷해야함.

mkfs -t ext4 /dev/md9

 

## 포맷까지 했으면 이제 마운트를 하자.

mount /dev/md9 /raidLinear

df -h



## RAID-0 (스트라이프) 방식 ##

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

// 하드디스크 2개(sdd1,sde1)를 level=0(스트라이프) 방식인 md0이라는 이름으로 묶자.

 

mdadm --detail --scan

 

mdadm --detail /dev/md0

RAID 0 방식으로 묶었다.

 

 

## 포맷

mkfs -t ext4 /dev/md0

 

## 마운트(디렉토리 생성 && 해당 디렉토리에 마운트해라)

mkdir /raid0 && mount /dev/md0 /raid0



## RAID-1 (미러링) 방식 ##

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1

// 하드디스크 2개(sdf1,sdg1)를 level=1(미러링) 방식인 md1이라는 이름으로 묶자.

 

mdadm --detail --scan

 

mdadm --detail /dev/md1

 

## 포맷

mkfs -t ext4 /dev/md1

 

## 디렉토리 생성 및 마운트

mkdir /raid1 && mount /dev/md1 /raid1

df -h



## RAID-5 방식 ##

mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1

// 하드디스크 3개(sdh1,sdi1,sdj1)를 level=5 방식인 md5이라는 이름으로 묶자.

 

mdadm --detail --scan

 

mdadm --detail /dev/md5

 

## 포맷

mkfs -t ext4 /dev/md5

 

## 디렉토리 생성 및 마운트

mkdir /raid5 && mount /dev/md5 /raid5

df -h


## 이제 raid5에 test라는 파일을 만들고, shutdown 한 뒤에 SCSI0:10(sdj)을 제거해보자.

cd /raid5

touch test

ls -l

 

vi /etc/fstab     (이거 추가 안해주면 부팅시 에러난다.)

 

yum -y install mdadm

 

shutdown -h now

RAID5 파티션 중 하나인 HDD10을 제거하고 다시 시작해보기.

 

df -h

마운트 된 것은 살아있다.

 

mdadm --detail /dev/md5

마지막 하드디스크가 죽은 것을 확인할 수 있다. 하지만 마운트는 살아있다!! 그럼 아까 만든 test파일 찾아보기.

 

ll /raid5


## RAID5에서 삭제한 하드디스크(sdj1) 복구 ##

shutdown -h now

 

//fdisk /dev/sdj   를 통해서 파티션 나누고, 이름 fd로 변경 그대로 다시 해주기.

 

 

mdadm --stop /dev/md5

// RAID5가 실행중이면, 디스크 추가가 불가능하기에 RAID5를 정지한다. 하지만 현재 마운트 상태이기 때문에\   정지가 되지 않는것을 확인할 수 있다.

 

umount /dev/md5

df -h

 

mdadm --stop /dev/md5

RAID5 STOP!!


## RAID5에 새로 추가한 하드디스크(sdj1) 다시 추가해서 묶어주기 ##

mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1

생성 완료.

 

mdadm --detail /dev/md5

 

mount /dev/md5 /raid5

마운트 성공~

 

ll /raid5

끝 !