본문 바로가기
Develop/Server

[Linux] 리눅스 하드디스크 고장시 대처방법

by 코딩의성지 2020. 9. 4.

하이 ~~!! 

 

저번 포스팅에서 Linear RAID, RAID 0, RAID 1, RAID 5 까지 설치해서 구성을 해봤다.

 

설치만 할 줄 아는 것보다 복구를 하는것도 굉장히 중요하다. 오늘은 구성해놓은 RAID를 일부러 고장낸 뒤에 다시 복구해보는 것을 해보록 할 것이다.

 

.

위의 그림의 왼쪽처럼 각 RAID를 구성하는 하드디스크를 하나 씩 먼저 제거해보자. 위의 그림을 보면 조금 신기한게 삭제하고 나면 기존의 장치가 사라지느게 아니라 하나씩 밀리는 걸 볼 수 있다. 예를 들면 기존의 /dev/sdc (SCSI 0:2) 가 없어지면 그 장치가 없어지는 게 아니라 아래로 하나씩 밀리는 것이다.

 

고장내기 전에 고통적으로 테스트할 파일을 하나만들고 각 RAID 위치에 복사를 해두자.

 

복사를 하고나서 이제 hart -p를 입력해 서버를 종료하자.

 그리고 위에서 미리 보여드린 그림대로 SCSI 0:2, 0:4, 0:6, 0:10 을 다 제거하자.

 

이렇게 하면 고장을 낸 것이다. 제대로 고장(?) 났는지 확인해보자.

제대로 고장이 났으면 아래 그림처럼 응급 모드로 접속될 것이다. 비밀번호를 입력해서 접속한뒤에 

그리고 /dev/sdb ~ /dev/sdf 까지 다섯개의 장치만 남아있는지도 확인하자.

 

또 df 명령어를 입력해보면 기존의 /raid0 이랑 /raidLinear 는 보이지 않고 /raid1 이랑 /raid5만 있는 것도 확인할 수 있다. 이 이유는 RAID 1 이랑 RAID 5 는 결함 허용을 제공하기 때문에 사라지지 않은 것이다. 

무슨 말인지 잘모르겠으면 아래 링크를 한번 보고오자 !

https://devkingdom.tistory.com/178

 

[Linux] 여러 개의 하드디스크를 하나 인 것처럼 사용하기 (feat. RAID)

만약 운영하는 서버의 스토리지 공간이 부족하다면 여러분들은 아마 하드디스크 구매를 생각할 것이다. 그런데 이게 구매만 한다고 되는 것은 아니다. 각 하드디스크가 용량이 넘치지 않도록 ��

devkingdom.tistory.com

 

 

자 다음은 장치를 재기동해보자 우선 RAID 1 장치부터 기동 해보자. 나 같은 경우는 그냥 기동이 됐었는데 혹시 'system-fsck~' 어쩌고 저쩌고 하는 메시지가 나오는 사람도 있따. 이런 분들은 그냥 엔터한번 쳐주자. 그러고 나서 /raid1 내부를 확인해보면 처음에 복사해뒀던 테스트 파일이 잘 남아 있는 것을 볼수 있을 것이다.

 

다음은 mdadm --detail /dev/md1 명령어를 쳐서 장치가 어떻게 동작하는지 자세하게 알아보자.

오 ...! 원래 2개의 하드디스크로 이루어진 장치가 하나(dev/sdd) 로만 동작하고 있는 것을 확인하실 수 있다. 즉 2개중 하나만 동작하지만 결함 허용 기능으로 인해서 데이터가 안전하게 보관되는 것이다.

 

RAID 5도 같은방식으로 동작시켜보자.

 

동작 후 이 역시 자세히 확인해보면

하나는 제거 됐지만 나머지 두개의 하드디스크로 결함 허용기능을 사용하여 데이터를 보존하는 것을 확인할 수 있다.

 

 

이번에는 Linear RAID나 RAID 0을 동작시켜보자 ..! 

안되는 것을 확인할 수 있다. !

 

 

이제는 시스템을 정상적으로 가동하기위해 일단 Linear RAID, RAID 0 디스크를 중지하자.

 

그리고 부팅시에 자동으로 마운트가 안되도록 /etc/fstab 에 내용도 주석처리하자.

 

그리고 나서 ./...! reboot을 입력해주면 !

 

이렇게 이제는 정상적으로 /raid1, /raid5 가 작동하는 걸 볼 수 있고

 

이렇게 기존 데이터도 잘 살아 있음을 확인할 수 있다.

그리고 일단 halt -p 로 시스템을 종료하자.

 

이제 완벽하게 복구를 해보자.

 

일단 하드디스크를 추가하자...! 4개를 지웠으니 4개를 추가한다. 

파일명은 newScsi0-2.vmdk, newScsi0-4.vmdk, newScsi0-6.vmdk, newScsi0-10.vmdk

이렇게 명명했다.

 

다음은 새롭게 만든 하드디스크인 /dev/sdc(SCSI 0:2), /dev/sde(SCSI 0:4), /dev/sdg(SCSI 0:6), /dev/sdj(SCSI 0:10)에대한 파일시스템을만들어주자.

fdisk 명령어를 이용하면 되고, 아래는 /dev/sdc 의 파일시스템을 만드는 과정이다. 여러번 했으므로 하나만 보여드리도록하겠다.

 

다 만들어주고 모든 파티션이 잘 작성됐는지 확인해주자.

 

잘됐으면 이제 복구를 위해 각 RAID 장치를 중지하고 만든 RAID를 다시 구성하자.

 

먼저 Linear RAID 부터 해보자. 아래의 mdadm --stop 와 mdadm --create 를 이용하면 다시 구성이 가능하다.

 

다음은 거의 유사한 방식으로 RAID 0 까지 해보자.

 

 

그리고 장치가 잘 작동되는지 확인해보면 처음 구성했을때와 동일하게 잘 작동하는 것을 확인할 수 있다.

 

 

이번에는 RAID 1을 재구성해보자.

이번에는 새로운 하드디스크 하나만 추가하면 됨으로 아까와는 살짝 다르게

mdadm /dev/md1 --add /dev/sdg1

을 입력해주면 된다. 간단하게 설명하면 /dev/md1 이라는 RAID 장치에 /dev/sdg1 파티션을 추가하라는 의미정도로 받아 들이면 된다.

 

RAID 5 도 마찬가지로 

 

mdadm /dev/md5 --add /dev/sdj1 

 

을 입력해 RAID 5를 재구성하자.

 

그리고 여기 보여주진 않지만 /etc/fstab 에서 주석처리했던 부분도 풀어주고 ! 다시 reboot 을 해주자.

 

 

자 이렇게하면 끝났따.. ! 다시 시작하며 정상적으로 잘 수행이될거다.

 

그런데.. 여기 /raid0 이랑 /raid 1에 아직 테스트 파일이 남아 있다.. 이건 잘못된 파일일 가능성이 매우 높으니... 여러분들은 꼭 이 디렉토리를 포맷해주고 사용하기를 바란다.

 

 

/raid1 이나 /raid5 디렉터리는 데이터가 정상적으로 안전하게 있다. 이는 결함 허옹 때문이라는 것을 다시한번 기억해주면 좋겠다.

 

오늘은 여기까지하겠다. 내용이 꽤 길고 어려울 수 있지만, 다들 잘따라서 해보길 권한다. 혹시 어려운게 있으면 댓글 남겨주면 좋겠다 ~~!! 그럼 이만 !!

반응형

댓글