[파일] Linux SoftRaid HOWTO
소프트웨어 레이드 하우투 (Software-RAID HOWTO)
Jakob OEstergaard (jakob@ostenfeld.dk)
v. 0.90.7 19th of January 2000
이 HOWTO는 리눅스상에서 어떻게 소프트웨어 레이드를 사용하는지 설명한다.
* 기본적인 요구사항
Kernel : 2.4.X 버전의 커널 (raid 설정이 포함된 커널)
– make menuconfig시 커널 설정
Multi-device support (RAID and LVM) —>
[*] Multiple devices driver support (RAID and
LVM)
<M> RAID
support
<M> Linear (append)
mode
<M> RAID-0 (striping)
mode
<M> RAID-1 (mirroring)
mode
<M> RAID-4/RAID-5
mode
<M> Multipath I/O
support
<M> Logical volume manager (LVM) support
Package : raidtools2
* 왜 RAID인가?
레이드를 사용해야하는 많은 좋은 이유들이 있다. 그 이유로는 몇개의 물
리적디스크를
하나의 커다란 가상 디바이스로 결합할수 있고 성능의 향상과 중복에 있다.
* Raid level (레이드 레벨)
여기서는 리눅스 레이드패치에서 제공할수 있는것들에 대해 간단히 설명한다.
리눅스를 위한 현재의 레이드 패치는 아래의 레벨들을 제공한다.
– Linear mode (선형모드)
두개 혹은 그 이상의 디스크들을 하나의 물리적 디바이스로 합친것을
말한다. 디스크들은 서로 붙여졌다고 볼수있다. 그래서 레이드 디바이스에
쓸때 먼저 disk0번부터 써지고 그 다음 disk 1 이런식으로 나가게 된다.
디스크들이 같은 사이즈를 갖게 되는것은 아니다. 사실 사이즈는 여기서
고려하지 않아도 된다.
이 모드에서는 중복이 없다. 만약 하나의 디스크가 파손된다면 당신은
모든 데이타를 잃어버리게 될것이다. 재수가 좋다면 몇몇 데이타는 복구
할수도 있을것이다.
하나의 읽고 쓰기 성능은 향상되지 않는다. 그러나 만일 여러 유저들이
디바이스를 사용한다면 한 유저가 실제적으로 첫번째 디스크를 사용하
고 다른 유저는 두번째 디스크에 재위치가 일어나서 파일을 엑세스한다면
당신은 성능이 향상되는것을 볼수 있을것이다.
– RAID-0
RAID-0 또는 stripe 모드로 불린다. 디바이스에 병렬로 읽거나 쓰는것을
제외하면 linear 모드와 같다. 디바이스들은 대략 같은 크기를 가져야 한다.
모든 엑세스가 병렬로 일어나면서 부터 디바이스들은 똑같이 채워진다.
만일 한 디바이스가 다른 디바이스에 비해 크다면 여분의 공간은 레이드
디바이스로 활용된다.
linear처럼 RAID-0역시 중복이 없다. 그러나 linear mode와 다르게
드라이브가 파손되면 당신은 아마도 어떤 데이타도 복구할수 없을것이다.
만일 당신이 Raid-0 set에서 드라이브를 제거한다면 레이드 디바이스
는 단지 하나의 연속적인 데이타 블럭을 잃어버리는것이 아니라 이것은
아마도 모든 디바이스에 작은 구멍으로 채워질것이다.
읽고 쓰는 성능은 향상될것이다. 왜냐하면 읽고 쓰는것은 디바이스에
병렬로 된다. 이것은 보통 RAID-0로 구축하는 가장 중요한 이유이다.
– RAID-1
RAID-1은 실제적으로 중복을 갖는 첫번째 모드이다. 이 모드는 두개 또
는 그 이상의 디스크들을 사용한다.
이모드는 하나의 디스크의 정보를 또다른 디스크에 정확하게 미러한다.
물론 디스크는 같은 사이즈이어야 한다. 만약
하나의 디스크다 좀 더 크다면 당신의 레이드 장치는 가장작은 디스크의
크기로 될것이다.
만약 하나의 디스크가 파손되었다면 모든 데이타는 그대로 보존될것이다.
만일 여분의 디스크를 사용할수 있다면 그리고 시스템이 파손을 극복하려
면 잘못된 드라이브를 찾은 후에 다른 여분의 디스크중 하나에서 미러의
재구축은 즉시 시작될것이다.
쓰기 성능은 하나의 장치보다 약간 안좋아 질것이다. 왜냐하면 동일한
데이타의 복사본을 어레이안의 모든 디스크에 쓰기위해서 보내야만 한
다.
– RAID-4
이 레이드 레벨은 그렇게 자주 사용되지 않는다. 이 모드는 3개 또는 그
이상의 디스크들에 사용된다. 이 모드는 정보의 미러링을 완벽하게 대신한다.
이 모드는 하나의 드라이브에 패러티정보를 보관한다. 그리고 RAID-0 와 같은
방식으로 다른 디스크들에 데이타를 쓴다. 왜냐하면 하나의 디스크는 패러
티 정보가 저장된다.
만일 드라이브 하나가 파손되었다면 패러티정보는 모든 데이타를
재구성하기위해 사용되어진다. 두개의 드라이브가 파손되면 모든 데이타를
잃어버리게 된다.
이 모드가 자주 사용되지 않는 이유는 패러티 정보가 하나의 드라이브
에 저장되기 때문이다. 이 정보는 다른 디스크들이 쓰여질때마다 업데이트
되어야한다. 따라서 패러티 디스크는 병목현상이 발생할수 있다.
– RAID-5
RAID-5는 아마도 물리적인 디스크들을 결합하기 원할때 가장 많이 사용
되는 모드일것이다.
RAID-5는 3개 또는 이상의 디스크들을 사용할수 있다. 레이드5와 레이드4
의 커다란 차이점은 패러티정보가 구성된 드라이브들 사이에 분산된다는 점이다.
이와같은 이유로 레이드-4의 병목현상을 피할수 있다.
만약 하나의 디스크가 파손되었다면 모든 데이타는 여전히 보존된다. 만일
여분의 디스크가 사용가능하다면 디바이스의 파손후에 재구성은 즉시
시작할것이다. 만일 두개의 디스크가 동시에 파손된다면 모든 정보를 잃어
버리게 될것이다. RAID-5는 하나의 디스크가 파손되었을때는 복구할 수
있다. 그러나 두개 또는 그이상일 경우는 불가능하다.
* RAID setup
먼저 레이드를 설정하기 위해서는 커널에 레이드 관련 설정이 포함되어야 한다.
또한 raidtools패키지가 설치되어있어야 한다.
레이드 설정파일을 /etc/raidtab 파일을 편집해서 설정한다.
1. Linear mode
raiddev /dev/md0
raid-level linear
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
위의 설정에서 자신의 환경에 맞게 device를 설정해준다. 여분의 디스크는
여기서는 지원하지 않는다.
이와같이 설정하였으면 아래의 명령을 실행시켜 레이드 array를 만들어보자
mkraid /dev/md0
이 명령은 당신의 array를 초기화할것이다. 수퍼블락들을 반복해서 쓰고
array를 시작한다. /proc/mdstat로 실행되는지를 확인한다.
2. RAID-0
당신이 대략 같은 사이즈의 두개 혹은 그 이상의 디바이스들을 가지고 있고
그리고 그들 저장장치의 용량을 합치기를 원하고 또한 병렬 엑세스에 의해서
그들의 성능을 합치고 싶다면 아래와 같이 /etc/raidtab 파일을 편집한다.
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
device를 자신의 설정에 맞게 편집하고 아래의 명령을 실행한다.
mkraid /dev/md0
레이드 디바이스의 실행여부를 확인하기 위해 /proc/mdstat를 확인한다.
3. RAID-1
당신이 대략 같은 사이즈의 두개의 장치를 가지고 있고 두개를 각각 서로
똑같이 하기를 원한다면 아래의 설정을 사용한다.
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
device를 자신의 설정에 맞게 편집하고 아래의 명령을 실행한다.
mkraid /dev/md0
/proc/mdstat를 확인한다.
만일 당신이 여분의 디스크를 가지고 있다면 아래처럼 장치의 마지막에 그들을 추가할수 있다.
device /dev/sdd5
spare-disk 0
4. RAID-5
당신은 사이즈가 대충 비슷한 장치들을 3개 혹은 그이상 가지고 있고 이
장치들을 좀더 큰 장치로 합치기를 원한면 RAID-5를 사용한다. 그러나 데
이타의 안전성을 위해서 중복(redundancy)도를 관리해야 한다.
raiddev /dev/md0
raid-level 5
nr-raid-disks 7
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda3
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
device /dev/sdd1
raid-disk 3
device /dev/sde1
raid-disk 4
device /dev/sdf1
raid-disk 5
device /dev/sdg1
raid-disk 6
만일 당신이 여분의 디스크들을 가지고 있다면 아래와 같은 방법으로 추
가할수 있다.
device /dev/sdh1
spare-disk 0
마찬가지로 mkraid /dev/md0명령으로 초기화하고 /proc/mdstat로 확인한다.
* raid의 시작과 중지
당신이 현재 실행되고 있는 raid 장치를 가지고 있다면 아래의 명령으로
실행과 중지를 할수있다.
raidstop /dev/md0
raidstart /dev/md0
* HARDWARE RAID
일반적으로 중형 서버급 장비에는 하드웨어적으로 raid를 구성한다.
하드웨어적으로 레이드를 구성하기 위해서는 당연히 레이드 콘트롤러가
필요하다. 하드웨어 레이드라고 해서 특별히 다른점은 없다 다만 각각의
레이드 설정을 레이드 콘트롤러의 바이오스에서 지정을 해주고 운영체제에서는 그 설정된 레이드 장치를 하나의 하드디스크로 인식하게 되는것이다.
간단히 말해서 7개의 스카시 하드디스크를 레이드콘트롤러에서 raid-5로
설정했다면 운영체제에서 인식하는 하드디스크 정보는 sda하나의 하드로
인식한다는 것이다.
* RAID의 활용
필자의 경험으로 레이드를 가장 많이 사용하는 경우는 웹서버와 데이타 베이스 서버의 경우였다. 일반적으로 웹서버의 경우는 log와 www디렉토 리
안의 데이타를 보호하기 위해서 /var자체를 용량큰 스카시 하드디스크로 RAID-1로 구성하고 데이타베이스 시스템의 경우 DB파일이 저장되는 디렉토리나 아니면 웹서버와 마찬가지로 /var디렉토리 전체를 raid-1로 설정해서 사용했다.
RAID-5의 경우는 하드디스크의 저장용량 확보와 안정성 두가지 모두를
충족해야 하는 파일서버의 경우에 매우 유용하게 사용된다.