메뉴 닫기

MegaCli 를 통한 Raid Rebuilding

MegaRaid의 Raid 카드를 이용하여 서버에 스토리지를 운영하고 있다면 서버 운영 중 디스크 장애가 났을 때, 리빌딩 할 수 있는 방법은 3가지 입니다.

  1.  서버 리부팅 후 Web Bios를 통해 레이드 리빌딩
  2.  MegaRaid Storage Manager를 통해 클라이언트 PC에서 리빌딩
  3.  서버 내에서 MegaCli 명령어를 통하여 리빌딩

각 방법의 차이라면 1번의 경우 OS가 부팅되지 않기 때문에 서비스를 지속적으로 공급해드릴 수는 없습니다. 2번과 3번의 경우로 리빌딩을 진행하게 된다면,Raid가 깨지지 않았던 이상은 데이터가 정상 인식이 되며, 서비스를 운영하는데 지장은 없을 것이나, 리빌딩 중에는 데이터의 입출력이 없는 것이 안전하게 작업이 완료 될 것입니다.

  이 글에서는 마지막에 써놓은 MegaCli 명령어를 통한 리빌딩 방법을 간단한 시나리오와 함께 적어보려고 합니다.

※ 참고 : 제가 테스트한 환경은 MegaCli 명령어를 편의상 megacli로 지정을 해놓았으며, 각자 실행 시 명령어 명에 주의하시기 바랍니다.

 

우선 시나리오는 디스크 2개로 묶인 Raid 1과 디스크 3개로 묶인 Raid 5를 각각 하나씩 설정해 놓은 상황에서 각각 하나의 디스크가 장애가 나게 되며, 이를 다른 레이드 정보를 담고 있던 디스크를 이용하여 리빌딩을 수동으로 진행하게 되는 과정입니다. 우선 디스크를 연결할 경우 바로 리빌딩이 진행 될 수 있기 때문에 오토 리빌딩 기능을 끈 이후에 진행하도록 하겠습니다.

megacli -adpautorbld -dsbl -a0                            << a0 레이드 카드의 오토리빌딩을 disable

 

시나리오 대로 Raid 1과 Raid5를 각각 한 개를 생성한 후, 교체할 디스크에 다른 레이드 정보를 남기기 위해

Raid 5를 하나 더 생성하도록 하겠습니다.

VD0 = Raid 1 ( 0, 1 디스크 )

VD1 = Raid 5 ( 2, 3, 4 디스크 )

VD2 = Raid 5 ( 5, 6, 7 디스크 )

 

레이드 생성 이후 디스크의 상태입니다. 모두 온라인으로 되어 있으며 레이드가 잘 잡힌 것으로 인식되고 있습니다.

 

이후 두번째로 잡은 Raid 5(VD 2) 에서 6번, 7번 베이에 있는 디스크를 뺐다가 껴줍니다. 이 때, Raid 5의 경우 디스크가 2개가 빠진 것으로 인식하여 더 이상 정상적으로 보이지 않으며, 레이드가 깨지게 됩니다.

 

이제 깨진 레이드는 필요가 없으며, 외부의 디스크를 가져온다는 설정이기 때문에 삭제를 진행하도록 하겠습니다.

 

 

레이드 삭제 후 같이 묶여 있었지만 문제가 없는 5번 베이의 디스크는 unconfigured good의 상태를 보여주나 장애가 있던 6, 7 베이는 bad의 상태로 나타납니다. 이 상태로 VD0 과 VD1의 각각 마지막 디스크인 1번 베이와 4번 베이의 디스크를 6, 7 번 디스크와 교체를 진행합니다. 이 과정에서 VD0과 VD1은 디스크가 하나 빠지게 됨으로써, DATA는 인식을 할 수 있지만 degrade 상태가 됩니다. 교체를 진행할 경우 디스크 인식의 순서가 뒤엉킬 가능성이 있습니다. 꼭 몇번 베이에 연결되었는지 확인이 필요합니다.

위 사진을 보시면 VD 0 의 0번 디스크, VD 1의 2, 3 디스크는 Online 상태로 정상 작동하는 점을 확인할 수 있습니다. 변경 된 디스크 1번과 4번 디스크의 경우 오토리빌딩이 비활성화 상태여서 바로 리빌딩 되지 않고 unconfigured bad 상태로 남아 있는 점을 확인 할 수 있습니다. 이를 6,7 디스크와 함께 good 상태로 변경해 줍시다.

 

megacli -pdmakegood -physdrv [252:1,252:4,252:6,252:7] -a0

 

이 글에서 가장 중요한 부분입니다. 새 디스크가 아닌 외부에서 레이드로 사용되던 디스크를 이용하여 레이드를 설정 및 리빌딩 할 경우, 외부 레이드 정보가 있던 디스크는 foreign 상태가 되며 이전 레이드 정보를 지워줘야 합니다.

위 사진에서 보신 것 과 같이 슬롯 순서대로 봤을 경우 1, 4, 6, 7 디스크 모두 Foreign 상태로 인식되고 있습니다.

이를 지우고 사용할 수 있는 상태로 만들어보겠습니다.

megacli -cfgforeign -clear -a0

위 명령어를 통해 foreign 상태를 모두 지워냈으며, 이제 리빌딩을 위해 각 디스크들을 각 VD에 디스크 교체 인식을 진행한 후 리빌딩을 진행합니다.

megacli -pdreplacemissing -physdrv[252:1] -array0 -row1 -a0

megacli -pdrbld -start -physdrv[252:1] -a0

megacli -pdreplacemissing -physdrv[252:4] -array1 -row2 -a0

megacli -pdrbld -start -physdrv[252:4] -a0

위 명령어를 입력 시 유의해야 할 점은 array와 row의 의미입니다. Array는 VD의 순서 즉, VD 0의 경우 array 0, VD 1은 array 1로 입력해야하며, row의 경우 해당 VD에서 몇 번째 디스크인지 나타내기 때문에 VD 0에서 두 번째 디스크의 변경이므로 row 1, VD 1의 경우 세 번째 디스크의 교체로 row2를 지정하여 교체를 진행해야 합니다.

pdlist 조회를 통해 리빌딩이 되고 있는 1, 4번 디스크가 확인이 되고 있습니다. 진행 정도를 확인하기 위해서는 아래 명령어로 확인이 가능합니다.

megacli -pdrbld -showprog -physdrv[252:1] -a0

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다