[파일] 리눅스 Soft RAID 구현하기
각각의 레이드 레벨은 특별한 목적에 적당하게 사용되어질 수 있으며, 여기서 각각의 레이드 레벨의 설정에 대하여 알아보고자 한다. 먼저 레이드 시스템을 구축하고자 할 때 참고할만한 약간의 팁을 언급하고자 한다.
– IDE 디스크를 이용할 때는, 하나의 IDE 컨트롤러에 하나의 드라이브만을 사용하길 권장한다. 그렇게 하므로해서 콘트롤러의 오류가 하나의 드라이브만 오류를 일으키기 위한 설계이다.
– 드라이브가 오류를 일으킬 때 빠른 드라이브의 정보를 스와핑(swapping)하기 위하여 Removable Drive Frames을 사용하기를 권장한다. 가장 선호하는 것으로는 GT’s Removable Drive Frames가 있다. (http://www.gtweb.net/mobile-rack.html)
– SCSI 드라이브는 평균적으로 보다 질적인 데이터 저장이 가능하고 안정성을 지니기 때문에 그러한 사용이 필요한 중요한 작업에 사용하는 것이 적당하다.
현재 기술하고 있는 내용은 Redhat 6.2와 7.0을 기준으로 설명하는 것이며, 이러한 배포판에 기초한 지역화된 배포판이나 개량화된 배포판들은 필요한 모든 레이드 툴(RAID tool)들을 포함하고 있다. 그러나 기본적인 방법에 관하여는 다른 배포판에서도 얼마든지 응용가능함을 알아두기 바란다. 아마도 다른 배포판들을 위해서는 커널 패치(kernel patch)가 필요로 할 수 있고, 보다 오래된 레드헷 기반의 배포판 역시 레이드 툴을 다운받아서 설치할 필요가 있다. (ftp://ftp.us.kernel.org/pub/linux/daemons/raid/)
그럼 구체적인 설정에 관하여 알아보자.
/etc/raidtab 파일
첫 번째로 소프트웨어 레이드를 리눅스에서 구축하고자 할 때 설정하여야할 내용은 /etc/raidtab 파일이다. 다음에 설명되어질 내용은 각각의 명령에 대한 내용을 설명한 것이고, 각각의 레이드 레벨에 대한 설정화일의 예제를 보이도록 하겠다.
– raiddev /dev/mdX : 이것은 레이드 어레이(raid array)로 사용되어질 주소를 정의한다.
– raid-level N : 레이드 레벨(raid level)을 정의한다.
– nr-raid-disks N : 레이드 되어질 드라이브의 수를 정의한다.
– nr-spar-disks N : 여유 디스크(spare disk)의 수를 정의 하며 스페어 디스크는 디스크 오류시 대체되어질 디스크를 뜻한다.
– chunk-size N : 레이드 시킬 때의 각각의 레이드 양을 지칭하며 이는 디스크의 표시정보에 해당한다. 레이드 파티션은 이러한 레이드 양을 나타내는 표시정보에 의해 나뉘어지며 이 정보에 의해 각각의 디스크에 대한 접근이 가능하다. 이 레이드의 표시정보 즉 레이드 파티션의 크기는 디스크의 성능에 좋게 작용할 수도 있고 그렇지 않을 수도 있다. 만약 드라이브의 성능을 높이고 싶다면 이 사이즈를 변경하여 보는 것이 좋다.
RAID-Linear / RAID-0
RAID-Linear 또는 RAID-0을 설정하기 위해서 여러개의 파티션을 구동하고 그 파티션들은 /etc/raidtab 파일에 열거되어 있어야 한다. 예를 들어 만약 두 개의 파티션 /dev/hdb1과 /dev/hdd1이 있다면 raidtab 파일은 다음과 같이 설정되어져야 한다.
—RAID-Linear
raiddev /dev/md0
raid-level linear
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
—RAID-0
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
chunk-size 4
persistent-superblock 1
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
위와 같이 설정되었다면 다음의 명령을 실행한다.
#mkraid /dev/md0
위의 명령은 레이드 파티션을 초기화 하고 초기화된 파티션 (/dev/md0)을 사용가능한 상태로 만든다.
위의 명령을 실행 시키면 레이드 파티션이 만들어질 것이며 보통 30분에서 한시간을 소요하고 진행되는 과정은 /proc/mdstat를 체크하므로써 성공여부를 알 수 있다.
RAID-1
RAID-1(mirroring)을 설정하기 위해서는 두 개의 파티션을 비슷한 크기로 설정하여야 한다. 간단히 /etc/raiddev 파일의 마지막에 정의 해놓길 권한다. 또한 사용할 스페어 디스크의 설정인 nr-spare-disk도 필요하다. 예제 파일은 다음과 같다.
—RAID-1
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
스페어 디스크를 설정하기 위해서 간단히 /etc/raiddev 에 다음을 추가하면 된다.
device /dev/hdc1
spare-disk 0
위와 같이 설정하였다면 레이드 파티션을 초기화 하기 위해서 다음의 명령을 실행하면 된다.
#mkraid /dev/md0
RAID-4 와 RAID-5
RAID-4와 RAID-5를 설정하기 위해서 /etc/raidtab를 아래와 같이 설정하여 준다.
—RAID-4:
raiddev /dev/md0
raid-level 4
nr-raid-disks 3
nr-spare-disks 0
persistent-superblock 1
chunk-size 32
device /dev/hdb1
raid-disk 0
device /dev/hdc1
raid-disk 1
device /dev/hdd1
raid-disk 2
—RAID-5:
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/hdb3
raid-disk 0
device /dev/hdc1
raid-disk 1
device /dev/hdd1
raid-disk 2
위에서 보여진 예와 마찬가지고 스페어 디스크를 설정하기 위해서 /etc/raiddev에 다음을 추가한다.
device /dev/hdc1
spare-disk 0
마지막으로 레이드 파티션을 초기화 하기 위해서 다음 명령을 수행하면 된다.
#mkraid /dev/md0
다음은 레이드 파티션을 운용하기 위하여 추가적으로 알아두어야할 내용들이다.
RAID Array의 시작과 종료
-시작 : raidstart /dev/md0
-종료 : raidstop /dev/md0