SSD 파티션을 셋으로 나눠 첫 파티션은 그때그때 여러 배포판들을, 그 다음 파티션에는 주사용 배포판인 deepin을 설치해서 사용하고 있고, 세 번째 파티션(sda2)은 자료 저장용으로 사용 중입니다. 석 달 전에 실수로 본체의 버튼을 잘못 눌러 강제로 재부팅되는 상황을 맞은 적이 있었습니다. 문제는 부팅시 자동 마운트가 되게 설정해 둔 세 번째 파티션이 ‘... can’t read superblock on /dev/sda2 ...’라는 메시지와 함께 마운트가 안 되는 겁니다.
처음엔 가볍게 생각했지만, 이리저리 해봐도 안 되고 검색을 해봐도 답변이 잘 보이지 않았습니다. 슈퍼블록이 깨졌다는 것 정도는 알겠는데, 마운트가 안 되니 중요 자료에 접근 자체가 안 되고 자칫 섣불리 복구하다가 자료가 다 날아갈 수 있어 당황했죠. 한참을 검색한 뒤에 다행스럽게도 HP 기업 지원 사이트에서 해답을 찾았기에 여기에 공유합니다.
$ sudo su (루트 권한 획득, 비밀번호 필요)
$ dumpe2fs /dev/sda2 | grep -i superblock (슈퍼블록의 정보 확인)
$ fsck -b 32768 /dev/sda2 (망가진 슈퍼블록 복구)
위 두 번째 명령을 주면 ‘Backup superblock at 32768, Group descriptors at 32769-XXXXX’와 같은 정보를 여러 줄 보여줍니다. 봐도 뭔 소리인지는 모르겠으니 넘어가서 세 번째 명령을 입력하면 역시 간단한 정보를 보여주는데, 화면 저장할 생각을 못했으니 메시지 내용도 모르겠고, 그 의미는 더더욱 모르겠습니다. 게다가 찝찝한 것은 복구 여부를 유저에게 묻더라는 것이죠.
... Fix〈Y〉? _ (아, 비표준 blink 태그의 추억이여~)
파일 시스템이나 뭔가 중요한 걸 건드리는 것 같은데, 혹시나 잘못 될 경우 책임 안 지려고 유저에게 동의를 묻는 거 같아서 불안했습니다. 하지만, 어차피 방법 없는 상황인지라 ‘Y’를 눌러버렸는데, 이후로 작업이 진행되는 동안 거의 수십 번은 계속 묻습니다. ‘Y’도 그만큼 눌러대야 죠. 애초에 ‘-y’ 옵션을 넣고 명령을 내리면 되는 거였는데, 처음 하는 거라 그저 조심스러울 수밖에 없다보니 그렇게 된 겁니다. 암튼 마침내 복구가 완료되었다는 메시지와 함께 드디어 마운트가... 됐...습니다...!
리부팅해 보니 자동 마운트는 물론이고 자료도 그대로 잘 보존되어 있었습니다. 100일이 지난 지금까지 아무 문제 없으니 무사히 해결된 것이죠. 혹시나 슈퍼블록 이 깨져서 비슷한 상황을 만나신 분들에게 도움이 되길 바랍니다. 참고로 슈퍼 블록은 파일 시스템의 정보를 담아두는 블록이라는데, 이게 깨졌으니 파티션과 파일들에 접근을 할 수 없게 되는 것은 당연합니다. 고수들이야 다 아는 거겠지만, 이제라도 알았으니 잘 기억해야 할 것 같군요.
위의 fsck 명령은 file System consistency check, 즉 ‘파일 시스템 영속성 검사’의 약자입니다. ‘-b’ 옵션은 block의 약자인 듯한데, 찾아봐도 무슨 뜻인지 나오지는 않는군요. 아마도 망가진 블록을 고치거나 새로 만드는 옵션으로 보입니다. 다음의 관련 기술 문서와 블로그 포스트를 소개합니다.
덧붙임
참고로 위 상황에서, 세 번째 파티션이 sda2라면 당연히 첫 파티션은 sda5, deepin이 설치된 파티션은 sda6가 됩니다. 이게 무슨 말인지 모른다면 아직 리눅스의 파티션 개념을 확실히 알지 못한다는 뜻이니 파티션 관리에 신중해야 하겠습니다.
1. Linux - 리눅스 파일시스템의 슈퍼블럭 복구방법 (HP 기업 지원 센터의 원문 링크)
2. fsck 명령 - IBM.com
3. How to Use ‘fsck’ to Repair File System Errors in Linux - Tecmint.com (부팅 메뉴 이용 방법)
4. 클리핑 - 리눅스 파일시스템 체크 하기 fsck(e2fsck) 사용법 (개인 블로그)
5. 리눅스 - 디스크검사 및 파일시스템 복구 (개인 블로그)
Comments