ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 슈퍼블록 이상으로 디스크 마운트 실패할 때
    Linux 2019. 2. 5. 16:23

    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’ 옵션을 넣고 명령을 내리면 되는 거였는데, 처음 하는 거라 그저 조심스러울 수밖에. 암튼 마침내 복구가 완료되었다는 메시지와 함께 드디어 마운트가... 됐... 다...!

    앞으로 사용해 가면서 봐야겠지만, 일단 마운트는 물론이고 자료도 잘 보존되어 있는 듯하다. 참고로 슈퍼 블록은 파일 시스템의 정보를 담아두는 블록이라는데, 이게 깨졌으니 파티션과 파일들에 접근을 할 수 없게 되는 것은 당연하다. 고수들이야 다 아는 거겠지만, 이제라도 알았으니 잘 기억해야 할 듯.

    위의 fsck 명령은 file system consistency check, 즉 ‘파일 시스템 영속성 검사’의 약자이다. ‘-b’ 옵션은 block의 약자인 듯한데, 찾아봐도 나오지는 않는다. 아마도 망가진 블록을 고치거나 새로 만드는 옵션인 듯하다. 다음의 관련 기술 문서와 블로그 포스트를 보면 좋은 참고가 될 것이다.