RAID의 정의와 개념

RAID(Redundant Array of Independent Disks)는 여러 개의 하드 디스크를 하나로 결합하여 데이터를 보호하고 성능을 향상시키는 기술

 

하드웨어 RAID

하드웨어 제조업체에서 여러 개의 디스크를 연결해 공급하는 장비이다.

소프트웨어 RAID

고가의 하드웨어 RAID의 대안이다. 신뢰성과 속도는 떨어지지만 아주 저렴한 비용으로 조금 더 안전하게 데이터를 저장할수있다.

RAID 레벨

  1. RAID 0: 데이터를 여러 디스크에 분산하여 성능을 향상시키는 것이 주요 목적입니다. 데이터는 여러 디스크에 분산되므로 여러 디스크에서 병렬로 읽고 쓸 수 있습니다. 그러나 RAID 0은 데이터 보호 기능이 없으며 한 디스크의 고장으로 인해 모든 데이터가 손실될 수 있습니다.
  2. RAID 1: 데이터를 여러 디스크에 복제하여 데이터의 안전성을 향상시킵니다. 각 데이터는 동일한 데이터가 복제된 여러 디스크에 저장됩니다. 한 디스크의 고장이 발생하더라도 다른 디스크에 복제된 데이터로부터 데이터를 복구할 수 있습니다.
  3. RAID 5: 데이터를 여러 디스크에 분산하고 패리티 정보를 사용하여 데이터의 안전성을 향상시킵니다. 데이터와 패리티 정보가 여러 디스크에 분산되므로 한 디스크의 고장으로 인해 데이터가 손실되더라도 패리티 정보를 사용하여 데이터를 복구할 수 있습니다.
  4. RAID 6: RAID 5와 유사하지만 두 개의 패리티 정보를 사용하여 데이터의 안전성을 향상시킵니다. 이로써 두 개의 디스크가 동시에 고장나도 데이터를 복구할 수 있습니다.
  5. RAID 10 (RAID 1+0): RAID 1과 RAID 0을 결합한 것으로, 데이터를 미러링하여 안전성을 향상시키고 성능을 향상시키는 것이 주요 목적입니다.

쳇gpt의 설명으로 갈음한다.

 

Linear RAID

2개 이상의 디스크를 1개의 볼륨으로 사용한다. 앞 디스크가 가득차면 다음 디스크를 사용한다.

 

'결함허용을 제공한다'

디스크 중 하나가 고장나더라도 데이터는 손상되지 않는다는 의미

 

RAID 5

디스크 개수 N -1 만큼의 공간을 저장공간으로 활용하고 1은 패리티 정보로 활용한다. HDD가 많아질수록 공간효율성이 좋아진다.

 

RAID 6

2개의 패리티를 사용한다.

 

RAID 만들기 실습 준비

디스크 9개를 추가한다.

2개는 Linear RAID, 2개는 RAID 0, 2개는 RAID 1, 3개는 RAID 5로 구성하는 실습이다.

 

파일 이름은 disk0-1, disk0-2...disk0-10 이다.

SCSI 0:7 장치는 VMware 프로그램에 예약되어 있다.

버스유형은 SCSI

첫번째만 2GB이고, 나머지 8개는 1기1GB이다.

적용

SCSI 로 9개 생성하였다.

ls -l /dev/sd*

현재 2개만 마운트된 상태이다.

책과 달리 새로 만든 하드디스크가 마운트 되지 않았다.
맥용 VMware은  SCSI 하드디스크 지원문제가 있는듯하다
해결방법을 모르기 때문에 SCSI가 아니라 SATA로 변경해서 진행한다.

sdb~sdj까지 9개의 장치가 출력된다.

fdisk /dev/sdb

Command : n ( 새로운 파티션 분할)

Select : p (Primary 파티션 선택)

Partition number : 1 (파티션 번호 1~4중 1번 지정)

First sector : Enter (1개의 파티션이므로 디폴트로)

Last sector : Enter(디폴트값)

Command : t (파일 시스템 유형 선택)

Hex Code : fd (Linux raid autodetect : 유형 번호. L을 입력하면 전체 유형이 출력된다)

레이드 구축을 위해 별도의 파일 시스템 지정이 필요하다. default 는 83(Linux)이다.

Command : p(설정된 내용 확인)

Command : w(설정 저장)

 

sdb~sdj까지 반복한다.

ls /dev/sd*

파티션을 확인한다.

 

VMware를 종료하고 스냅샷을 만들어둔다.

Linerar RAID 구축 실습

fdisk -l /dev/sdb;fdisk -l /dev/sdc

명령으로 파티션을 확인한다.

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

RAID 생성과 RAID 확인

 

mdadm은 Rocky linux에서 RAID 장치를 생성/관리하는 명령이다.

/dev/md9는 사용자가 지정한 이름이다.

--level=linear  Linear RAID로 지정, 0,1 등으로 지정이 가능하다

--raid-devices=2 /dev/sdb1 /dev/sdc1 디스크 2개를 사용한다. 사용할 디스크 이름 지정.

mkfs.ext4 /dev/md9

포맷

mkdir /raidLinear
mount /dev/md9 /raidLinear

디렉터리 생성

마운트

nano /etc/fstab

편집기를 열어 자동 마운트 설정을한다.

/dev/md9     /raidLinear                    ext4    defaults        0 0

마지막줄에 코드 추가.

mdadm --detail /dev/md9

레이드가 제대로 구축되었는지 확인한다. 2개의 장치가 묶여 3GB가 되었다.

 

RAID 0 구축

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

sdd1과 sde1을 레이드0으로 생성

명령 결과 확인

mkfs.ext4 /dev/md0
mkdir /raid0
mount /dev/md0 /raid0
df

포맷

레이드0 폴더생성

마운트

성공 확인

 

용량이 1+1GB로 약 2GB로 표시된다.

자동마운트 추가

nano /etc/fstab

편집기에 아래 내용 추가.

/dev/md0     /raid0                    ext4    defaults        0 0

 

RAID 1 구축

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

레이드 생성.

부팅장치로 사용할수 없다는 경고 메시지가 나온다. 'y' 로 무시하고 진행

레이드 정보 확인

mkfs.ext4 /dev/md1

포멧

mkdir /raid1
mount /dev/md1 /raid1

디렉토리 생성

생성한 디렉토리로 마운트

df

확인해보면 레이드0과 달리 용량이 1GB이다. 동일한 데이터를 미러링하기 때문에 50%밖에 쓸수 없다.

nano /etc/fstab

편집기에 아래 내용 추가.

/dev/md1     /raid1                    ext4    defaults        0 0

RAID 5구축

모든 과정이 비슷하지만 디스크 개수가 최소 3개라는 점에서 차이가 있다.

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

레이드 생성.

경고 메시지가 나오더라도 무시한다.

레이드 정보 확인

mkfs.ext4 /dev/md5

포멧

mkdir /raid5
mount /dev/md5 /raid5

디렉토리 생성

생성한 디렉토리로 마운트

df

생성결과 확인

nano /etc/fstab

편집기에 아래 내용 추가.

/dev/md5     /raid5                    ext4    defaults        0 0

추가

mdadm --detail /dev/md5

레이드 구축 확인

 

RAID 구축 후 mdadm.conf 파일 설정

재부팅하기 전에 몇가지 설정을 한다.

mdadm --detail --scan

실행으로 출력 내용을 복사한다.

gedit /etc/mdadm.conf

파일 열어서

name=localhost.localdomain:x

부분을 모두 삭제한다.

reboot

root 로그인 후

 

df

레이드 장치가 제대로 설정되었는지 확인한다.

lineear, 0, 1, 5 RAID가 보인다.

 

스냅샷으로 저장해둔다.

레이드 문제 발생시 조치

cp ~/다운로드/testfile.rpm /raidLinear/testFile.rpm
cp ~/다운로드/testfile.rpm /raid0/testFile.rpm
cp ~/다운로드/testfile.rpm /raid1/testFile.rpm
cp ~/다운로드/testfile.rpm /raid5/testFile.rpm

다운로드의 임의의 파일을 각레이드에 복사하였다.

 

가상머신 종료 후

디스크 SCSI 0:2, SCSI 0:4, SCSI 0:6, SCSI 0:9를 제거하여 에러 상황을 만든다.

RAID로 구성된 디스크가 고장 났기 때문에 응급모드로 접속된다.

비밀번호를 입력한다.

ls -l /dev/sd*

장치 이름을 확인한다. 5개만 남아있다.

df

확인하면 결함을 허용하는 /raid1, /raid5 만 보인다.

ls -l /raid1 /raid5

저장했던 파일을 확인하면 출력된다.

 

mdadm --detail /dev/md1

RAID1 장치를 살펴보면 2개 장치 중에 하나만 작동한다.

mdadm --detail /dev/md5

RAID5 장치를 살펴보면 3개 장치 중에 하나가 제거 되었다고 나온다.

mdadm --run /dev/md9
mdadm --run /dev/md0

장치를 다시 가동하면 오류가 발생한다.

 

우선 시스템이 작동할수 있도록 문제가 되는 장치를 작동 중지하고 /etc/fstab 에서 제거한다.

 

mdadm --stop /dev/md9
mdadm --stop /dev/md0

장치 가동을 중단.

md0, md9 부분을 주석처리한다.

reboot

df

다시 확인해보면 /raid1, /raid5 만 작동하고 있다.

 

고장난 디스크를 새로운 디스크로 교체

빠진 하드를 추가한다. SCSI 또는 SATA 등 전부 일치시킨다.

가상머신을 부팅하고 root 로 로그인한다.

 

mdadm --detail /dev/md1

확인을 해보면 자동으로 복구되지 않았다. /dev/sdd 에서 /dev/sdf 로 변경된점을 확인할수 있다.

ls -l /dev/sd*

추가한 디스크를 확인한다.

/dev/sdc 처럼  /dev/sdb1 이 없는 것이 개로 장착된 4개의 디스크이다.

fdisk /dev/sdc

Command : n ( 새로운 파티션 분할)

Select : p (Primary 파티션 선택)

Partition number : 1 (파티션 번호 1~4중 1번 지정)

First sector : Enter (1개의 파티션이므로 디폴트로)

Last sector : Enter(디폴트값)

Command : t (파일 시스템 유형 선택)

Hex Code : fd (Linux raid autodetect : 유형 번호. L을 입력하면 전체 유형이 출력된다)

레이드 구축을 위해 별도의 파일 시스템 지정이 필요하다. default 는 83(Linux)이다.

Command : p(설정된 내용 확인)

Command : w(설정 저장)

 

4개 모두 새로운 디스크에 파일 시스템을 만든다.

 

결함을 허용하지 않는 레이드 복구하기

모두 출력된다.

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

확인 메시지가 나오면 'y '

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

확인 메시지가 나오면 'y '

mdadm --datail /dev/md9
mdadm --datail /dev/md0

명령으로 장치가 잘 작동하는지 확인한다.

 

레이드 2개는 복구 되었다.

 

결함을 허용하는 RAID 1, 5를 재구성하기

mdadm /dev/md1 --add /dev/sdg1
mdadm /dev/md5 --add /dev/sdi1

새로운 디스크를 추가하는 명령으로 재구성된다.

mdadm --detail /dev/md1
mdadm --detail /dev/md5

장치들이 정상작동하는지 확인한다.

spare rebuildeing 상태이더라도 잠시 기다리면 active sync로 변경된다.

+ Recent posts