-
[리눅스] RAID ( 명령어 : mdadm )서버/리눅스 2017. 4. 10. 19:25
R A I D
목적
여러개의 디스크를 합쳐서 하나의 디스크처럼 동작하게 함
얻는 효과 : 디스크의 남는용량을 재활용하고 디스크보다 용량이 큰 파일을 저장할 수 있다.
종류
#1 ) H/W Raid
*성능이 뛰어나다.
*가격이 비싸다.
#2 ) S/W Raid
*디스크 구매 비용외에는 비용이 없다. ( 무료 )
*H/W구성보다는 성능이 떨어진다.
구성
#1) Linear 구성
*디스크를 배열 형태로 단순히 연결한다.
*데이터 내용을 순차적으로 기록한다 ( 1번째 디스크가 꽉차면 다음 디스크를 채운다 )
*간편하다
#2) Stripe 구성( Raid Level 0 )
*데이터의 내용을 똑같이 분산저장 ( 모든 디스크에 똑같은 용량으로 저장 )
*속도가 빠르다.(ㅋㅋㅋㅋ..... 잘모르겠다)
*안정성을 보장할 수 없다.
>속도를 중요
#3) Mirror 구성( Raid Level 1 )
*원본데이터의 대한 복사을 다른 디스크에 만든다.
>만들어진 Raid 디스크용량을 최대 절반밖에 사용할 수 없다.
>최소 2개이상의 디스크를 필요로 한다. ( 파티션은 복원의미가 사라지므로 해당되지 않는다. )
>안정성을 중요
(생략)
#4) Stripe + Mirror 구성( Raid Level 5 )
*레벨 0과 1의 장점을 합쳤다.
*장치갯수 -1만큼의 장치까지 stripe로 저장하고 마지막 장치에 패리티비트를 저장한다.
>> 이 패리티비트는 수많은 연산을 통해 고장난 장치를 복원할 수 있다.
: but 2개이상의 장치가 고장나면 복원이 불가능하다.
>> 최소 3개 이상의 디스크를 필요로 한다.
#5) ( Raid Level 0+1 )
*레벨 0의 구성으로 2개의 raid장치를 만든다.
*만들어진 raid장치로 mirror( level 1 )구성을 한다.
>> 최소 4개이상의 디스크를 필요로 하며 3개의 레이드장치를 만들지만 최종 1개가 동작한다.
#6) ( Raid Level 1+0 (10) )
*레벨 1의 구성으로 2개의 raid장치를 만든다.
*만들어진 raid장치로 stripe( level 0 )구성을 한다.
>> 최소 4개이상의 디스크를 필요로 하며 3개의 레이드장치를 만들지만 최종 1개가 동작한다.
실습
VMware
- sdb ( 1 GB)
- sdc ( 1 GB)
#Raid파티션 생성
#>fdisk /dev/sdb
Command (m for help) : n
>all enter
Command (m for help) : t
Hex code (type L to list all codes) : fd >> 시스템ID를 헥사코드( fd : raid ) 로 변경
Command (m for help) : w
#>fdisk /dev/sdc 도 동일
Raid를 적용시켜줄 소프트웨어를 다운로드 한다. ( mdadm )
#>yum install -y mdadm.x86_64
Raid 생성 ( mdadm --help 참조 )
#>mdadm --create <dev_name> --level=<level_number> --raid-devices=<dev_number> <dev_name1> <dev_name2> ...
생성될 레이드 레벨은 표현방법이 많음 참조할 디바이스 갯수 디바이스 아규먼트
--raid-dvices= : -n
--level= : -l 으로 대체가능
#>mdadm --create /dev/md/linear -l linear -n 2 /dev/sdb1 /dev/sdc1
-l linear : linear방식으로 생성
0(raid0) : stripe방식으로 생성
1(raid1) : mirror방식으로 생성
명령어 후 이렇게 나오면 성공.
확인하는 방법
#>mdadm --detail /dev/md/linear >> 자세히
mirror 같은경우 백업본을 저장하기에 용량을 (최대)반밖에 사용할 수 없다.
#>cat /proc/mdstat >> 간단히
#>ls -l /dev/md*
>>md127는 원본 내가 원하는 이름으로 지정한 liner이름은 링크파일로 생성되었다.
>> /dev/md* << 이 패턴의 이름으로 만들어주면 원본이름이 지정이 가능하다.
#파일시스템 적용
#>mkfs -t ext4 /dev/md/linear
물론 장치이름원본을 작성해줘도 된다. ( /dev/md127 )
#마운트
#>mount /dev/md/linear /raid/linear
#Raid 장치 해제
#>umount /dev/md/linear
#>mdadm --stop /dev/md127
>>mount를 해제 후 삭제 시켜줍니다.
>>원본을 해제해주셔야 에러없이 동작합니다. (링크파일로 멈출때 원본은 남아있을 수 있습니다.)
>>stop은 멈추는 기능이므로 일정시간이 경과 후 다시 활성화 됩니다.
>>이때는 장치를 빼거나 0으로 채워넣는 방법으로 하면됩니다.
장애발생 및 복구
#>mdadm <raid_name> -f <dev_name>
레이드 디바이스 하위 디바이스
#>mdadm /dev/md/mirror -f /dev/sdb1
>>재부팅 후 마운트해주고 확인해본다.
>> 2개중 하나가 빠졌으므로 mirror구성은 깨졌다. >> linear구성으로 동작한다.
복구
#>mdadm /dev/md/mirror --add /dev/sdb1
옵션 : --add
>> 장치는 스페어장치(보조)로 들어가서 고장난 자리(fail)로 들어간다.
*mirror는 장치의 용량이 대상이 다를경우 용량이 작은쪽이 원본대상이 된다.
*mirror같은경우 여러개를 추가하면 1개만 원본대상이고 나머지디스크는 복사본으로 동작한다.
장치제거 ( 고장난 디바이스는 바로 제거해도 된다 )
#>mdadm /dev/md/mirror -r /dev/sdb1
장치추가
1) Spare 방식으로 추가
위에서는 바로 들어갔지만 사실 장치는 spare장치로 대기중인 상태이다.
이상태는 고장나는 즉시 해당 장치로 들어가는건데 위에서는 장치가 고장나있는 곳으로 바로 찾아 들어간것이다.
#>mdadm /dev/md/mirror -f /dev/sdc1
spare상태였던 sdd1 파티션은 spare rebuilding으로 동작한다. >> 하나의 장치를 [ 대기 ]시켜놓는 방법이다.
이때 바로 mirror로 상태로 동작한다.
sprite방식은 깨지는 순간 파일은 다 깨진다.
2) 장치로 추가
#>mdadm --grow <dev_name> --level=<level_num> --raid-devices=<num> --add <dev_name>
옵션은 raid를 만들었을 때와 비슷하다.
--raid-dvices= : -n
--level= : -l 으로 대체가능
#>mdadm --grow /dev/md/mirror -l 1 -n 3 --add /dev/sdc1
레벨은 똑같이 적어주고
디바이스 갯수는 추가했을 때 최종 갯수이다.
(바로 확인을 하면 spare 상태일텐데 시간이 경과후 active 상태로 활성화된다 )
>> 이렇게 장치가 추가되면 [ 파일시스템 ]을 다시 적용시켜준다. ( 디스크 연결이 해제 되었으므로 [ 초기화 ] 상태라고 표현한다 )
: 파일시스템은 2개로 아직 인식하고 있기 떄문이다.
: 마운트도 다시 한다.
#>umount /dev/md/mirror
#>mkfs -t ext4 /dev/md/mirror
#>mount /dev/md/mirror /raid/mirror
RAID
온라인 게임에서 공격/방어 등의 능력치가 높은 레벨의 몬스터나 특별한 목적을 이루는 대규모 사냥을 일컬음.
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] LVM ( 가상화기법 ) (0) 2017.04.12 [리눅스] RAID 2 (0) 2017.04.11 [리눅스] 네트워크 설정(정리) (0) 2017.04.07 [리눅스] 마운트 (0) 2017.04.07 [리눅스] 디스크 관리 (0) 2017.04.06