본문으로 바로가기

RAID

category Linux/Linux Server 2017. 8. 30. 21:14
  • RAID 종류 및 설명 
RAID ( Redundant Array of Inexpensive Disks , Redundant Array of Independent Disks)

여러 디스크를 하나의 디스크처럼 사용할 수 있도록 하면서 동시에 신뢰성을 높이고 성능을 향상시킬 수 있는 저장 장치를 말한다. RAID의 종류는 크게 하드웨어 RAID와 소프트웨어 RAID가 있다. 하드웨어 RAID는 안정성이 높은 반면 가격이 비싸다는 단점이 있고, 소프트웨어 RAID는 신뢰성이나 속도가 하드웨어 RAID에 비해 떨어질 수 있으나 비용이 저렴하다는 장점이 있다. 여기서는 하드웨어 RAID에 대해서는 다루지 않기로 하고, 소프트웨어 RAID 구성 방법에 대해 살펴보도록 한다. ( 현장에서는 하드웨어 RAID를 다룬다. )

- Hardware RAID(Firmware에서 지원, 단위: DISK)
EX) Storage, Array, RAID Controller
-> 성능 우수, 유연성 떨어짐

- Software RAID(OS에서 지원, 단위: Partition)
EX) 운영체제 내에서 Software RAID 툴을 통해 작업
-> 성능 떨어짐, 유연성 우수

- 스토리지 종류
DAS ( Direct Attached Storage), 직접 연결 저장 장치
internal DAS ( 내장 ) : 디스크가 서버 내부에 위치
external DAS ( 외장 ) : 서버와 스토리지를 연결

단점 : 광케이블로 연결 -> 연결 포트가 있어야하는대 카드 꽂을 수 있는 개수가 한정적이다. 


SAN ( Storage Area Network ) , 스토리지 전용 네트웍

DAS의 단점 보완, 스토리지 네트워크 사용 

server ( DISK) | ----------FC protocol --------| ( Block ) storage ( san 스토리지 )

|----- san 구간 (광케이블)--------|

FC protocol ( 고속으로 블록 데이터 전송 최대 16Gbps

장점 : 고속 전송으로 속도 빠름

단점 : 비용 많이 들어감 ( IP 포트와 달라 전용 포트 설치, 광케이블도 비싸다.)

스위치도 SAN 스위치를 따로 구매해야하며, SAN Storage도 비싸다.


NAS ( Network Attached Storage, Network Area Storage )

너무 비싼 SAN을 보완, 기존의 NIC 카드 사용 가능하며, SAN 스위치가 아닌 일반 스위치나 라우터 사용

NFS/CIFS (SMB) 서비스를 제공한다. ( TCP/IP )

NAS Storage : 스토리지에 OS 설치 ( 폴더 공유 -> 파일시스템 -> OS가 관리 )

sever ( Directory ) |------------tcp/ip (10Gbps)----------| ( File ) storage

장점 : 기존의 NIC 카드와 일반 스위치 / 라우터 사용으로 가격 저렴

단점 : SAN보다 속도 느리다.


-레이드 레벨( RAID LEVEL )의 종류

RAID 0 (1G + 1G + 1G = 3G )

RAID 0은 일반적으로 2개 이상의 하드를 병렬로 연결해서 데이터를 블록(Block) 단위로 분산해서 읽고 쓰는 방식으로 구성된다. 하나의 데이터를 2개 이상의 하드를 이용해 분산시키기 때문에 하드 1개에 데이터를 저장하고 불러오는 것보다 훨씬 빠른 속도를 가질 수 있게 되며 하드 용량도 모두 쓸 수 있다.

* 최소 드라이브 개수 : 2

* 최대 용량 : 디스크의 수 x 디스크의 용량

* 특징 : 빠른 입출력 속도가 요구되나 장애 복구 능력은 필요 없는 경우에 적합하다.



RAID 1 ( 1G + 1G = 1G two-way mirror )

RAID 1은 디스크 미러링이라고도 하는데, 데이터의 안정성을 높이기 위해 동일한 데이터를 가진 적어도 두 개의 드라이브로 구성된다. 

* 최소 드라이브 개수 : 2

* 최대 용량 : (디스크의 수/2) x 디스크의 용량

* 특징 : 빠른 기록 속도와 함께 장애 복구 능력이 요구되는 경우에 사용된다. 2대의 드라이브만으로 구성할 수 있기 때문에 작은 시스템에 적합하다.

RAID 0+1

RAID 0+1은 이름 그대로 RAID 0과 RAID 1을 합쳐놓은 방식이다. RAID 0으로 묶은 하드 디스크를 최종적으로 RAID 1로 구성하기 때문에 일반 RAID 1 구성보다 높은 성능을 낼 수 있으며 한쪽 RAID 0에 들어가는 하드들이 모두 고장난 경우에도 나머지 RAID 0 하드를 통해 정상 동작 및 데이터 복구를 할 수 있다. 

* 최소 드라이브 개수 : 4

* 최대 용량 : (디스크의 수/2) x 디스크의 용량

* 특징 : 일반 RAID 1 구성보다 높은 성능을 낼 수 있으며 한쪽 RAID 0에 들어가는 하드들이 모두 고장난 경우에도 나머지 RAID 0 하드를 통해 정상 동작 및 데이터 복구를 할 수 있다. 

RAID 1+0

RAID 10(1+0)은 RAID 1로 구성된 하드들을 최종적으로 RAID 0 방식으로 병렬구성(striping)해서 성능을 높이게 된다. 역시 RAID 1의 미러링을 기본으로 하고 있으므로 하드 1개가 고장나도 그와 함께 미러링 된 하드를 통해 데이터 복구가 가능하다. 

성능이 가장 우수하다. 


RAID 5 

RAID 5는 RAID 3, 4에서 별도의 패리티 정보 디스크를 사용함으로써 발생하는 문제점을 보완하는 방식으로 패리티 정보를 스트라이핑으로 구성된 디스크 내에서 처리하게 만들었다. 물론 패리티 정보는 데이터가 저장된 디스크와는 물리적으로 다른 디스크에 저장되도록 만들어 1개의 하드가 고장 나더라도 남은 하드들을 통해 데이터를 복구할 수 있도록 했다. 최소 3개부터 구성이 가능하며 하드 1개 용량만 빠지게 되므로 미러링으로 처리되는 RAID 1보다 저장 공간도 크다. 

* 최소 드라이브 개수 : 3

* 최대 용량 : (디스크의 수 - 1) x 디스크의 용량

* 특징 : 작고 랜덤한 입출력이 많은 경우 더 나은 성능을 제공한다. 빠른 기록속도가 필수적이지 않다면, 일반적인 다중사용자 환경을 위해 가장 좋은 선택이다. 그러나 최소한 3대, 일반적으로는 5대 이상의 드라이브가 필요하다.

RAID 6

RAID 5 의 최대 단점인 2장이상 디스크가 망가질 경우 복구 불가능한 점을 보완

-> parity  이중화

RAID 7

RAID 6 의 write 성능이 너무 떨어지는 단점을 개선했다 -> write 성능이 떨어지는 이유는 parity 계산하기 때문

real-time-OS 로 parity 계산을 따로 한다. -> 가격이 굉장히 비싸다.


[참고] 참고 사이트 : http://www.acnc.com/raid 

위 사이트에서 그림을 클릭하면 데이터가 저장되는 순서를 볼 수 있다.


  • RAID 실습
# rpm -qa | grep mdadm /* 패키지 확인 */
# yum -y install mdadm /* 없다면 설치 */

[명령어 형식]
-생성
# mdadm --create /dev/md0 --level=<RAID 레벨> --raid-device=<RAID 구성할 Disk수> <디스크장치명> ...
# mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/sdc1 /dev/sdd1
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sdc1 /dev/sdd1
/* --create :   -C   */
/* --level=1 :   -l 1 */
/* --raid-device=2 :   -n 2 */

-정보확인
# mdadm --detail /dev/md0                     /* --detail  :  -D */

- 파일 설정 ( 부팅중에 /etc/mdadm.conf 파일을 확인하고 있다면 설정된다. )
# echo "DEVIECE partitions" > /etc/mdadm.conf 
# mdadm --detail --scan >> /etc/mdadm.conf    /* --scan    : -s  */
# cat /etc/mdadm.conf 

# watch cat /proc/mdstat /* 생성된 raid 확인 */
watch CMD

# while true
> echo
>CMD
>sleep2
>done
명령어와 같다 ( 2초마다 실행된다.)
-삭제
(ㄱ) RAID Device stop
# mdadm --stop /dev/md0    /* --stop   : -S */

(ㄴ) RAID Device remove
# mdadm --remove /dev/md0  /* --remove : -r */

(ㄷ) superblock 정보 삭제
# mdadm --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1

[실습]
RAID 작업 절차
(ㄱ) System Partition ID(fd) (fdisk CMD)  ( ID 의 종류에 따라 meta데이터의 공간의 크기가 달라지기때문에 필요하다. )
(ㄴ) RAID 작업 (mdadm CMD)
(ㄷ) 파일시스템 작업 (mkfs CMD)
(ㄹ) 마운트 작업 (mount CMD, /etc/fstab)

(ㄱ)# fdisk /dev/sdc

Command (m for help): p


Disk /dev/sdc: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes


   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1         130     1044193+  8e  Linux LVM


Command (m for help): t

Selected partition 1

Hex code (type L to list codes): fd

Changed system type of partition 1 to fd (Linux raid autodetect)


Command (m for help): p


Disk /dev/sdc: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes


   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1         130     1044193+  fd  Linux raid autodetect



(ㄴ) RAID 구성
RAID 0 
# mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sdc1 /dev/sdd1

RAID 1
# mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/sdc1 /dev/sdd1

RAID 5
# mdadm --create /dev/md0 --level=5 --raid-device=3 /dev/sdc1 /dev/sdd1 /dev/sde1 

mdadm: /dev/sde1 appears to be part of a raid array:

level=raid5 devices=3 ctime=Sun Apr 29 17:45:16 2012

Continue creating array? y

-> 이전에 설정됬던게 있어서 한번 물어봅니다. y 쳐 주시면 생성됩니다.

# echo "DEVICE partitions" > /etc/mdadm.conf 
# mdadm --detail --scan >> /etc/mdadm.conf
# cat /etc/mdadm.conf /* raid 1 */

DEVICE partitions

ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=4bf1e377:5469adc8:b02500fb:a355e047


(ㄷ) F/S 생성
# mkfs.ext3 /dev/md0 

(ㄹ) 마운트
# vi /etc/fstab

.....( 중략 ) ......

#

# (4) RAID Configuration

#

/dev/md0               /raid0                  ext3    defaults        1 2

/dev/md0               /raid1                  ext3    defaults        1 2

/dev/md0                /raid5                  ext3    defaults       1 2

.....( 중략 ) ......


# mkdir -p /raid0 ; mount /raid0 /* RAID 0 */
# mkdir -p /raid1 ; mount /raid1 /* RAID 1 */
# mkdir -p /raid5 ; mount /raid5 /* RAID 5 */

[삭제 절치]
(ㄱ) 언마운트
# vi /etc/fstab 

.....( 중략 ) ......

#

# (4) RAID Configuration

#

#/dev/md0               /raid0                  ext3    defaults        1 2

#/dev/md0               /raid1                  ext3    defaults        1 2

#/dev/md0                /raid5                  ext3    defaults       1 2

.....( 중략 ) ......


# umount /raid0 
# umount /raid1
# umount /raid5

(ㄴ) RAID 구성 삭제
# mdadm --stop /dev/md0 
# mdadm --remove /dev/md0 
# mdadm --zero-superblock /dev/sdc1 /dev/sdd1 
# rm /etc/mdadm.conf 

[예] 장애 디스크 교체 과정 ( 시스템 종료 없이 교체 )
- RAID 1 / RAID 5 는 구성된 장치에 대해서 온라인상에서 장애 디스크 교체가 가능하다.
 mirror / parity 로 복구 가능

-이미 RAID 5 구성 완료 되었다고 가정하자 

# mdadm --detail /dev/md0

# mdadm /dev/md0 -f /dev/sdd1 /* -f  faulty : 결함있는 상태로 설정 */ /* /dev/sdd1 을 임의로 결함을 만든다 */
[참고] 명령어 옵션 비교
# mdadm /dev/md0 --fail /dev/sdd1
# mdadm /dev/md0 -f /dev/sddd1

# mdadm --detail /dev/md0 | tail


# mdadm /dev/md0 -r /dev/sdd1 /* 손상된 디스크 제거*/ /* 이 명령어를 치고나서 물리적으로 디스크 분리 */

# mdadm --detail /dev/md0 | tail


# mdadm /dev/md0 -a /dev/sdd1 /* add : 장치 추가 */
# mdadm --detail /dev/md0







'Linux > Linux Server' 카테고리의 다른 글

Software 관리_RPM  (0) 2017.08.31
SWAP  (0) 2017.08.31
LVM ( Logical Volume Manage )  (0) 2017.08.29
마운트 ( mount )  (0) 2017.08.28
파일 시스템( Filesystem)  (0) 2017.08.28