RAID는 디스크를 늘려 입,출력 및 가용성을 향상시키는 기능을 합니다.
디스크에 문제가 생겨 데이터를 유실했을 경우 다른 디스크로부터 유실된 데이터를 복구할 수 있습니다.
예전에는 적은 용량을 가진 디스크 여러 개를 연결하여 하나의 디스크 처럼 만들어 사용했었지만 요즘은 하드 디스크 드라이브가 갖는 성능이나 안정성을 더 향상시키기 위해서 사용된다고 합니다.
RAID는 크게 스트라이핑(Strpping)과 미러링(Mirroring)으로 나누어 집니다.
스트라이핑은 여러 개의 저장 장치에 순서대로 나눠서 저장하는 방식입니다. 하나의 하드에 들어갈 내용을 여러 개의 디스크에 저장하기 때문에 개별 하드의 데이터는 독립적으로 사용할수가 없으며, 스트라이핑 된 모든 하드가 존재 해야 사용 가능합니다. 스트라이핑의 장점은 데이터를 주고 받는 속도가 빠르며, 하드 디스크를 추가할수록 성능은 증가하게 됩니다. 하지만 하나의 디스크라도 사용할수 없게 된다면 정상작동을 하지 않으며, 데이터를 살리기가 매우 어렵습니다. 데이터의 안정성 보다 빠른 속도를 필요로 하는 시스템에 적합한 구성입니다.
미러링이란 하나의 하드디스크에 쌓이는 데이터들을 나머지 하나의 하드디스크에 복사되는 방법으로 저장됩니다. 2개의 하드디스크 중 1개가 장애를 일으키더라도 남은 1개의 데이터는 장애를 일으킨 하드디스크의 데이터와 똑같기 때문에 데이터를 읽고 쓰는데 전혀 문제가 없습니다. 읽기에서는 성능의 향상이 있지만 쓰기에서의 속도 향상은 별반 차이가 없고, 전체 공간의 50%만 이용할 수 있다는 단점이 있습니다. 데이터의 쓰기 및 읽는 속도보다 안정성을 필요로 하는 시스템에 적합한 구성입니다.
2.RAID 종류
레이드레이드 의 종류는많지만 대표적인 구성 0 , 1 , 5 , 6 , 10 , 01 에 대해서 설명드리도록 하겠습니다.
1.RAID 0
RAID 0은 2개 이상의 하드디스크를 병렬로 연결해서 데이터를 블록 단위로 분산해서 읽고 쓰는 방식으로 구성됩니다. 하나의 데이터를 복수의 하드를 이용해 분산시키기 때문에 하드 1개에 데이터를 저장하고 불러오는 것보다 훨씬 빠른 속도를 가질 수 있게 되며, 하드 용량도 모두 쓸 수 있습니다. 하지만 안정성을 체크하는 기능이 없어 1개의 하드디스크라도 고장나게되면 RAID 0으로 구성된 모든 데이터를 전부 날리게 됩니다.
2. RAID 1
RAID 1 은 데이터의 안정성을 높이기 위해 동일한 데이터를 1개 이상의 하드에 똑같이 저장하는 방식으로 RAID 0과는 반대되는 개념이라고 할 수 있습니다. RAID 1로 구성한 하드디스크는 한쪽이 망가져도 동일한 데이터가 저장된 다른 하드가 살아있다면 데이터를 복구할 수가 있으며, RAID 구성이 풀리더라도 같은 데이터를 가진 2개의 하드 디스크가 존재하게 됩니다. 데이터 안정성은 높지만 2개의 하드를 RAID 1로 묶으면 같은 데이터를 2개에 기록해 전체 하드 디스크 용량의 절반만 사용할수 있습니다.
3. RAID 5
RAID 5는 패리티 정보를 스트라이핑으로 구성된 디스크 내에서 처리하게 만든 구성입니다. 패리티 정보는 데이터가 저장된 디스크와는 물리적으로 다른 디스크에 저장되도록 만들어 1개의 하드가 고장 나더라도 남은 하드들을 통해 데이터를 복구할 수 있도록 되어있습니다. 하드디스크 1개 용량만 빠지게 되므로 미러링으로 처리되는 RAID 1보다 저장 공간도 큽니다. 그러나 별도로 패리티 정보를 저장하는 작업을 해야 하므로 RAID 1보다 쓰기 성능이 떨어지게 됩니다.
4. RAID 6
RAID 6은 RAID 5와 같은 개념이지만 다른 드라이브들 간에 분포되어 있는 2차 패리티 정보를 넣어 2개의 하드에 문제가 생겨도 데이터를 복구할 수 있습니다. RAID 5보다 더욱 데이터 안정성을 고려하는 시스템에서 사용합니다.
5. RAID 0+1
RAID 0+1스트라이핑 과 미러링 방식을 혼합해 만들어 졌습니다. RAID 0으로 묶은 하드 디스크를 최종적으로 RAID 1로 구성하기 때문에 일반 RAID 구성보다 높은 성능을 낼 수 있으며, 한쪽 RAID 0에 들어가는 하드들이 모두 고장난다고 해도 나머지 RAID 0 하드를 통해 정상 동작 및 데이터 복구를 할수 있습니다. RAID 1이 들어가므로 전체 하드 디스크 용량의 절반 밖에 사용하지 못한다는 단점이 있지만, 성능과 안정성을 동시에 추구할 수 있습니다.
6. RAID 1+0
RAID 1+0 은 RAID 1로 구성된 하드들을 최종적으로 RAID 0 방식으로 스트라이핑해서 성능을 높이게 됩니다. RAID 1의 미러링을 기본으로 하고 있기 때문에 하드 1개가 고장나도 그와 함께 미러링 된 하드를 통해 데이터 복구가 가능하며, RAID 1로 묶여 있는 부분이 동시에 고장나지만 않는다면 한번에 두개가 고장나더라도 복구가 가능합니다. RAID 0+1 과 마찬가지로 하드 디스크 용량의 절반 밖에 사용하지 못한다는 단점이 있습니다.
RAID 구성방법
1. BIOS 에서 잡는 방법 0 , 1 , 5 , 6 [RADI 6]
서버의 전원을 켜고 [Ctrl + H] 를 눌러서 MegaRAID 설정 화면으로 들어옵니다.
현재 물리적인 디스크 상태를 확인 할수 있으며, Configuration Wizard 선택 후 [Enter]키를 누릅니다.
New Configuration 을 선택후 Next를 눌러 다음으로 넘어갑니다.
기존의 레이드를 지우고 새로 잡아도 되는지 확인 메시지 입니다.
Yes 선택하여 다음으로 넘어갑니다.
Manual Configuration 은 레이드 수동 설정이며, Automatic Configuration 은 레이드 자동 설정 입니다.
Manual Configuration 선택 후 Next를 이용하여 다음으로 넘어갑니다.
이 화면에서 [ Shift + ↓ ] 키를 눌러 전체 디스크를 선택해 줍니다.
전체 디스크가 선택된 화면이며, 이상태에서 Add To Array 를 눌러 줍니다.
전체 디스크를 선택하여 Add To Array 를 누른 화면이며, Drive Group 0 으로 묶인것을 확인할수 있습니다.
이 상태에서 Accept DG 를 눌러줍니다.
우측에 Drive Group1 이 생성된 것을 확인 할수 있으며, 이상태에서 Next 를 선택하여 다음으로 넘어갑니다.
& 레이드 0 , 5, 6 은 위 그림 처럼 0그룹에 디스크를 전부 넣어준 상태에서 Accept DG 로 그룹1을 생성해 주고 다음으로 넘어가면 되지만 [레이드1] 경우에는 디스크가 반드시 2개씩 구성되어야 하기 때문에 한 그룹에 디스크를 2개씩 묶어 주어야 정상적으로 구성이 됩니다.
Drive Group 으로 묶은 하드디스크를 정의하는 부분이며, Add to SPAN을 눌러줍니다.
Drive Group이 레이드 구성을 위한 대기 상태로 변하며, Next 를 선택하여 다음으로 넘어갑니다.
RAID Level에서 RAID 6을 선택 하고 우측에 초록색으로 표시된 RAID 별 용량을 확인하여
Select Size 에 해당 용량을 적고, Accept 를 선택하여 가상 드라이브를 생성해 줍니다.
정전시 데이터 손실 위험을 제거하지만 성능이 저하될수 있다는 안내 문구 입니다.
Yes 를 선택하여 다음으로 넘어갑니다.
VD0 이 생성된것을 볼수 있습니다. Next 를 선택하여 다음으로 넘어갑니다.
이 구성을 저장할지 묻는 문구입니다. Yes 를 눌러 다음으로 넘어갑니다.
새 가상 드라이브의 모든 데이터가 손실되는데 초기화 할건지 물어보는 문구 입니다.
Yes 를 선택하여 다음으로 넘어갑니다.
Fast Initialize 를 선택하고 Go를 눌러 다음으로 넘어갑니다.
새 가상 드라이브의 모든 데이터가 손실 되는데 초기화를 계속 할건지 물어보는 문구 입니다.
Yes를 선택하여 다음으로 넘어갑니다.
레이드6구성이 완료된 화면입니다.
2. BIOS 에서 잡는 방법 [RADI 10]
앞부분은 레이드 0 , 1 , 5 , 6 과 같으며 이부분부터 달라집니다.
[ Shift + ↓ ] 키를 눌러 디스크를 2개씩 선택한 후 Add To Array를 눌러 한 그룹에 넣어주고, Accept DG 를 눌러 그룹을 생성해주는 작업을 반복하여 2개의 디스크씩 4개의 그룹을 만든 후 Accept DG 를 누른 화면 입니다. Next 를 선택하여 다음으로 넘어갑니다.
Drive Group 0 , 1 , 2 , 3 선택 후 Add to SPAN 을 눌러줍니다.
Add to SPAN 을 누른 화면이며, Next 를 눌러 다음으로 넘어갑니다.
RAID Level에서 RAID 10을 선택 하고 우측에 초록색으로 표시된 RAID 별 용량을 확인하여
Select Size 에 해당 용량을 적고, Accept 를 선택하여 가상 드라이브를 생성해 줍니다.
정전시 데이터 손실 위험을 제거하지만 성능이 저하될수 있다는 안내 문구 입니다.
Yes 를 선택하여 다음으로 넘어갑니다.
Next 를 눌러 다음으로 넘어갑니다.
각 드라이브 별로 VD 0 이 생성된 것을 확인할 수 있습니다. Accept 를 눌러 다음으로 넘어갑니다.
이 구성을 저장할지 묻는 문구입니다. Yes 를 눌러 다음으로 넘어갑니다.
새 가상 드라이브의 모든 데이터가 손실되는데 초기화 할건지 물어보는 문구 입니다.
Yes 를 선택하여 다음으로 넘어갑니다.
Fast Initialize 를 선택하고 Go를 눌러 다음으로 넘어갑니다.
새 가상 드라이브의 모든 데이터가 손실 되는데 초기화를 계속 할건지 물어보는 문구 입니다.
Yes를 선택하여 완료합니다.
레이드 10 구성이 완료 되었 습니다.
3. 툴을이용하여 레이드 잡는 방법 [RADI 10] – 리눅스 편
툴을 이용하여 레이드 잡는 방법은 리눅스에서 잡는 방법과 윈도우 에서 잡는 방법은 같지만, 준비 단계에서 약간의 차이가 있습니다.
리눅스의 경우 해당 서버에 관련 툴을 설치하고, 클라이언트에 MegaRAID Storage Manager를 설치하여 이 Manager를 통하여 해당 서버에 접근해 RAID를 구성하는 방법이며, 윈도우 서버의 경우 해당 서버에 툴을 설치하여 바로 접속하여 구성할수 있습니다. 리눅스에서 잡는 방법 먼저 설명드리도록 하겠습니다.
아래 명령어로 해당 툴을 다운로드 합니다.
# wget http://docs.avagotech.com/docs-and-downloads/https:/avagodocs.s3.amazonaws.com:443/docs-and-downloads/raid-controllers/raid-controllers-common-files/MSM_linux_x64_installer-15.08.01-02.tar.gz no-check-certificate
# tar zxvf MSM_linux_x64_installer-15.08.01-02.tar.gz -> 해당 명령어로 압축을 풉니다.
# cd disk -> disk 디렉터리로 이동합니다.
# sh RunRPM.sh -> 해당 스크립트를 실행합니다.
이후에 방화벽에 3071 포트를 등록하여 준 뒤, 클라이언트에서 접속을 합니다.
아래 명령어로 해당 툴을 다운로드 합니다.
# wget http://docs.avagotech.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/8-07-14_MegaCLI.zip –no-check-certificate
# unzip 8-07-14_MegaCLI.zip -> 해당 명령어로 압축을 풀어줍니다.
# cd Linux/ -> Linux 디렉터리로 이동합니다.
# rpm -ihv MegaCli-8.07.14-1.noarch.rpm -> 패키지 설치를 합니다.
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /bin/MegaCli -> 해당 명령어 링크걸기
클라이언트에서 MegaRAID Storage Manager를 실행 시킵니다.
해당 화면에서 Configure Host … 을 클릭합니다.
Enter IP Address 빈칸에 레이드 서버 ip를 적고 Save Settings 를 클릭합니다.
변경 사항을 적용할건지에 대한 문구이며, 예 를 눌러줍니다.
레이드서버 IP가 검색되며, 해당 IP를 클릭을 합니다.
레이드 서버 접속정보를 입력하여 Login 을 눌러 접속합니다.
로그인 후 메인 화면 입니다. 이 상태에서 Logical 탭으로 이동합니다.
Controller0: LSI MegaRAID 를 우클릭하여 Create Virtual Drive 를 클릭합니다.
Simple에는 레이드 0 , 1 , 5 , 6 이 있으며, Advanced 에는 Simple을 포함한 00 , 10 , 50 , 60 이 있습니다.
레이드 10을 잡을것이기 때문에 Advanced 를 선택 후 Next 를 눌러 다음으로 넘어갑니다.
Select 클릭후 RAID 10 을 선택한 뒤 , 디스크 2개씩 선택하여 Add 버튼으로 그룹에 넣어주고, Create Span 버튼을 눌러 그룹을 생성해주는 작업을 반복 하여 디스크 2개씩 총 4개의 그룹을 생성해 줍니다.
4개의 그룹을 모두 잡아 준 뒤 Create Drive Group 버튼을 누르면 Next 버튼을 누를수 있습니다.
Next 버튼을 눌러 다음으로 넘어갑니다.
Create Virtual Drive 버튼을 클릭하여 다음으로 넘어갑니다.
정전시 데이터 손실 위험을 제거하지만 성능이 저하될수 있다는 안내 문구 입니다.
Yes 를 선택하여 다음으로 넘어갑니다.
VD0 이 생성된것을 볼수 있습니다. Next 를 선택하여 다음으로 넘어갑니다.
현재 레이드를 구성한 정보입니다. Finish 버튼을 클릭합니다.
레이드가 성공적으로 생성되었다는 문구이며, 확인버튼을 눌러 레이드 구성을 마칩니다.
레이드 10으로 구성된 화면 입니다.
3. 툴을이용하여 레이드 잡는 방법 [RADI 10] – 윈도우 편
윈도우 서버의 경우 해당 서버에 툴을 설치하여 바로 접속하여 구성할수 있습니다. 윈도우의 경우 해당서버에 툴을 설치하여 바로 접속 할수 있으며, 접속 후에는 리눅스와 잡는 방법이 100% 동일하기 때문에 잡는 방법은 따로 설명 안드리며, 해당 툴을 설치하는 방법만 안내해 드리겠 습니다.
* 주의 사항으로 윈도우의 서버에서 설치한 툴과 클라이언트에서 설치한 툴의 버전이 동일 해야만 접속을 할 수 있습니다. 만약 버전이 다를 경우 클라이언트에서 접속이 불가능합니다.
pcsupport.lenovo.com/kr/ko/downloads/ds019011 에 접속하여 MegaRAID Storage Manager를 다운 받습니다.
위 화면처럼 해당 프로그램이 설치가 되며, 더블 클릭하여 설치를 진행 합니다.
Next 를 눌러 다음으로 넘어 갑니다.
해당 내용 동의하는 화면이며, I accept the agreement 클릭후 Next 를 눌러 다음으로 넘어 갑니다.
경로 잡아주는 부분이며, 건드실 필요는 없습니다. Next 를 눌러 다음으로 넘어갑니다.
준비 확인 부분이며, Install 을 눌러 다음으로 넘어갑니다.
Install MegaRAID Storage Manager – windows now 체크박스에 체크 후 Finish 를 눌러 다음으로 넘어갑니다.
Next 를 눌러 다음으로 넘어갑니다.
I accept the terms in the license agreement 선택 후 Next 를 눌러 다음으로 넘어 갑니다.
모든 유저가 접근되도록 할것인지, admin 유저만 접속되도록 할것인지 설정하는 부분 입니다.
상황에 따라서 선택 후 Next 를 눌러 다음으로 넘어갑니다.
경로지정해주는 부분 입니다. Next 를 눌러 다음으로 넘어갑니다.
Custom 을 클릭하면 원하는 프로그램만 선택하여 설치할수 있으며, complete 를 클릭 할경우 MegaRAID Storage 서버 및 클라이언트 전부 설치가 됩니다.
Complete 선택 후 Next 를 눌러 다음으로 넘어갑니다.
Install 을 눌러 다음으로 넘어갑니다.
설치가 완료되었으며, Finish를 눌러 설치를 마칩니다.
Windows 서버의 경우 이런식으로 설치를 하여, 해당 툴을 이용해 접속해 RAID 구성을 하면 되며, 구성 방법은 리눅스와 100% 똑같습니다.
해당 툴을 이용하여 RAID를 구성할 경우 BIOS에서 구성하는 것보다 편리하며, 더욱 빠르게 구성을 하실수 있습니다.
레이드 장애 복구
리빌딩하는 시간이 상당히 많이 걸리기 때문에 전부 테스트 할 수가 없어서 저희 스마일서브에서 주로 사용하는 RAID 10 에서 테스트 하였습니다.
시나리오는 다음과 같습니다.
-
RAID 10 으로 구성을 한 뒤, 해당 디스크를 마운트 시켜 해당 디렉터리에 파일들을 생성하고, 하드디스크 하나를 제거한 뒤의 상태를 확인하고, 리빌딩 하는방법 테스트.
-
디스크 하나씩 제거 할 때마다 정상적으로 R,W (읽고,쓰기)가 가능한지에 대한 테스트를 하며, 어떠한 조합으로 디스크가 망실이 되어야 RAID 구성이 깨지는지에 대해서 다루어 보도록 하겠습니다.
시나리오 1 (리빌딩 방법)
현재 이 화면은 RAID 10 으로 묶은 디스크를 /RAID10 이라는 디렉터리에 마운트 시킨 상태 입니다.
test라는 파일이 정상적으로 생성이 되며, 읽기 쓰기가 정상적으로 이루어 지는 상태입니다.
MegaRAID Storage 툴로 해당 서버에 접속한 상태이며, RAID 10 으로 구성이 잡혀있는 상태입니다.
1번 그룹의 2번째 디스크가 망가진 상태입니다.
1개의 디스크가 망가져도 디스크의 읽기,쓰기에는 전혀 문제가 없는 것을 확인할 수 있습니다.
새 디스크를 넣으면 위처럼 맨 아래부분에 디스크가 나타나게 됩니다.
해당 디스크를 우클릭하여 Change to Unconfigured Good 를 누릅니다.
Change to Unconfigured Good를 누르면 위처럼 모양이 변하게 되는데,
다시 우클릭하여, Replace Missing Drive 를 클릭합니다.
문제있는 디스크의 위치를 선택하여 OK를 눌러줍니다.
Span:1 에 Row Index 1번 위치의 디스크가 망가졌기 때문에 해당 위치 선택후 OK를 눌렀습니다.
해당 위치에 디스크가 들어간 것을 볼수 있습니다.
아직 리빌딩이 되고 있지 않으며, 수동으로 리빌딩을 해줘야 합니다.
해당 디스크를 우클릭하여 Start Rebuild 를 클릭합니다.
해당 화면에서 Confim의 체크를 해준 뒤 , Yes 버튼을 눌러 다음으로 넘어갑니다.
해당 디스크에 노란색으로 시계 표시가 생기며, 리빌딩이 되고 있다는 증거입니다.
Dashboard 탭에서 More details를 클릭하면 위 사진처럼 리빌딩 상황을 디테일 하게 확인할 수 있습니다.
리빌딩이 완료 된 상태 입니다.
시나리오2 (RAID 10 이 버틸수 있는 한계점)
현재 0번 그룹의 첫 번째 디스크가 망가진 상태 입니다.
0번 그룹의 첫 번째 디스크가 망가졌지만 해당 디렉터리에 읽고, 쓰는 작업에 전혀 문제가 없습니다.
현재 0번 그룹 의 첫 번째 디스크 , 1번 그룹의 첫 번째 디스크가 망가진 상태입니다. ( 디스크 2개 망실 )
두 개의 디스크가 망실된 상태이며, 읽고, 쓰는데 전혀 문제가 없습니다.
현재 0번 그룹 의 첫 번째 디스크 , 1번 그룹의 첫 번째 디스크 , 2번 그룹의 첫 번째 디스크가 망가진 상태입니다. ( 디스크 3개 망실 )
세 개의 디스크가 망실된 상태이며, 읽고, 쓰는데 전혀 문제가 없습니다.
현재 0번 그룹 의 첫 번째 디스크 , 1번 그룹의 첫 번째 디스크 , 2번 그룹의 첫 번째 디스크 , 3번 그룹의 첫 번째 디스크가 망가진 상태입니다. ( 디스크 4개 망실 )
현재 그룹별로 디스크가 1개씩 망가진 상태 (디스크 4개 망실)이며, 읽고 쓰는데 아직까지 문제가 없습니다.
현재 4개의 디스크가 망가진 상태에서 한 개 더 망가트린 상태입니다.
Virtaul Drive 가 빨간불이 들어옵니다. 레이드가 깨져버렸습니다.
해당서버에서도 레이드가 OFFLINE 되었다고 메시지가 발생되고 있습니다.
해당 디렉터리에서 I/O 에러가 발생됩니다.
RAID 10은 한 그룹의 디스크가 1개씩 고장 날 경우 읽고, 쓰기에 문제가 없지만 한 그룹의 디스크가 함께 고장이 나게 되면, RAID 구성이 깨지는 것을 확인할 수 있습니다.
RAID 서버라고해서 관리를 소홀히 하지 않고, 주기적인 모니터링을 통하여, 디스크에 문제가 없는지 확인하여, RAID 구성이 깨지기 전에 리빌딩을 통해 데이터를 잘 관리해야 합니다. 주기적인 관리를 하지 않을 경우 비싼 돈들여 구입한 레이드 서버의 기능 활용을 못할 뿐더러 레이드 서버를 사용할 필요가 없을것 같습니다.
레이드 마치며
1.하드웨어 장애파악 방법
레이드 테스트를 하던 도중 서버에 문제가 생겼습니다.
레이드 테스트 한다고, 베이를 뺐다 꼽았다를 정말 많이 반복을 해서 일까요.. 1번 , 4번 , 5번 베이에 불이 들어오지 않았습니다. 어느부분이 망가졌는지 확인하기 위해 몇가지 테스트를 해보았습니다.
-
0번 베이에 있는 디스크와 1번 베이에 있는 디스크 맞교체 진행 -> 교체 하였음에도 증상 같음.
-
4번 5번 베이에 있는 디스크와 6번 7번 베이에 있는 디스크 맞교체 진행 -> 교체 하였음에도 증상 같음.
-
첫번째 꼽혀있는 레이드 케이블을 맨 아래로 연결 -> 맨 아래 베이 전부 불 들어옴
위처럼 테스트한 결과 케이블이나 디스크에는 문제가 없으며, 베이에 문제가 있다고 판단 하였습니다.
이후에 서버 샷시만 교체하였고, 정상적으로 인식되는것을 확인하였습니다.
2. 레이드 장애 이후 재구성
레이드를 10으로 구성을 마친 후, 해당 디스크에 디렉터리 및 파일들을 생성해 보았습니다.
그 이후에 레이드 구성을 깨뜨린 후 , 8개의 디스크 전부 원래 있던 자리에 연결하였으며, 레이드 10으로 다시 구성을 한 후의 데이터 들을 살펴보았는데 , 원본 데이터 들이 전부 살아 있었습니다.
디스크에는 문제가 없는 상태에서 레이드 구성이 깨졌을 경우 , 원래 있던 자리에 디스크를 연결하여 구성을 다시 잡았을때 원본 데이터가 날아가지 않는 다는 점을 알게되었습니다.
하지만 데이터가 100% 안날라간다는 보장은 없으며, 날아갈 가능성도 있다는 점은 꼭 인지를 하고 있어야 합니다.