강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 백업수퍼블록을 이용한 파일시스템 복구

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 백업수퍼블록을 이용한 파일시스템 복구





 

백업수퍼블록을 이용한 파일 시스템 복구

 

 

fsck(또는 e2fsck)로 파일 시스템을 자동복구하지 못한 경우에는 백업수퍼블록을 이용하여 복구해야 한다.

 

 

 

이 방법을 이용하면 물리적으로 문제가 있는 부분 이외에는 거의 대부분의 경우 데이터복구를 할 수 있다.

 

 

 

다만, 리눅스의 파일 시스템 구조와 수퍼블록의 정확한 개념 그리고 백업수퍼블록의 위치를 알아야 가능한 방법이다.

 

 

 

 

 

이 방법은 e2fsckb 옵션을 이용한 방법이며 “-b 백업수퍼블록번호를 함께 주면 된다.

 

 

 

먼저 백업수퍼블록에 대한 이해를 돕기 위해 다음과 같은 수퍼블록에 대한 기본 지식들에 대하여 먼저 설명하겠다.

 

 

 

 

리눅스 파일 시스템은 블록그룹(Block Group)이라는 것으로 기본구조를 이루고 있다.

 

 

 

/dev/sda3 파일 시스템을 대상으로 작업한 다음 실행결과를 보자.

 

 

 

 

 

 

[root@linux ~]# dumpe2fs /dev/sda3 | grep superblock

dumpe2fs 1.41.12 (17-May-2010)

Primary superblock at 1, Group descriptors at 2-3

Backup superblock at 8193, Group descriptors at 8194-8195

Backup superblock at 24577, Group descriptors at 24578-24579

Backup superblock at 40961, Group descriptors at 40962-40963

Backup superblock at 57345, Group descriptors at 57346-57347

 

 

 

 

 

 

 

위의 예는 /dev/sda3 이라는 파일 시스템의 수퍼블록과 백업수퍼블록의 위치를 확인한 예이다.

 

 

 

정리하면 다음과 같다.

 

 

 

 

 

메인수퍼블록 : 1번 블록에 위치함

 

첫 번째 백업수퍼블록 : 8193번 블록에 위치함

 

두 번째 백업수퍼블록 : 24577번 블록에 위치함

 

세 번째 백업수퍼블록 : 40961번 블록에 위치함

 

네 번째 백업수퍼블록 : 57345번 블록에 위치함

 

 

 

 

 

여기서 메인수퍼블록(Primary superblock)1번 블록에 위치하며 파일 시스템의 맨 앞부분에 위치한다.

 

 

 

메인수퍼블록에는 파일 시스템의 매우 중요한 정보들이 저장되어 있으며 이 메인수퍼블록이 손상되면 파일 시스템이 정상 작동하지 않는다.

 

 

 

 

 

따라서 메인수퍼블록이 손상되었을 경우에는 그 파일 시스템에 존재하는 모든 파일들에 대한 읽기/쓰기가 불가능해진다.

 

 

 

이런 상황에 놓여졌을 때에는 백업수퍼블록을 이용할 수 있어야 한다.

 

 

 

, 메인수퍼블록이 손상되었을 경우에는 백업수퍼블록을 이용하여 메인수퍼블록을 복구할 수 있다.

 

 

 

왜냐하면 백업수퍼블록에는 메인수퍼블록의 백업본이 존재하기 때문이며, 또한 위의 예와 같이 여러 개의 백업수퍼블록이 존재하기 때문에 이 중 하나를 가지고 메인수퍼블록을 복구할 수 있으면 된다.

 

 

 

 

 

, 메인수퍼블록이 손상되었을 때에 첫 번째 백업수퍼블록을 이용하여 복구한다.

 

 

 

첫 번째 백업수퍼블록으로 복구되지 않을 경우에는 두 번째 백업수퍼블록으로 복구한다.

 

 

 

두 번째 백업수퍼블록으로 복구되지 않을 경우에는 세 번째 백업수퍼블록으로 복구한다.

 

 

 

세 번째 백업수퍼블록으로 복구되지 않을 경우에는 네 번째 백업수퍼블록으로 복구한다.

 

 

 

...

 

파티션(파일 시스템)의 용량이 크면 클수록 백업수퍼블록의 개수도 많아지게 된다.

 

 

 

결론적으로 백업수퍼블록이 존재하고 있는 블록번호를 알고 있어야 한다.

 

 

 

이것은 위의 예와 같이 “dumpe2fs /dev/sda3 | grep superblock”으로 확인할 수 있다.

 

 

 

 

결론적으로 e2fsck를 이용하여 백업수퍼블록을 복구하는 방법은 다음과 같다.

 

 

 

 

 

첫 번째 백업수퍼블록을 이용한 복구 : e2fsck b 8193 /dev/sda3

 

두 번째 백업수퍼블록을 이용한 복구 : e2fsck b 24577 /dev/sda3

 

세 번째 백업수퍼블록을 이용한 복구 : e2fsck b 40961 /dev/sda3

 

네 번째 백업수퍼블록을 이용한 복구 : e2fsck b 57345 /dev/sda3

 

 

 

 

 

 

만약 복구하는 과정에서 너무 많은 “Fix?”와 같은 질문이 계속된다면 위의 옵션 다음에 y 옵션과 p 옵션을 함께 사용하는 것도 좋은 방법이다.

 

 

 

-y 옵션은 모든 질문에 yes라고 자동응답하는 것이고, -p 옵션은 자동복구모드로서 사용자에게 별도의 질문을 하지 않고 복구를 진행한다.

 

 

 

예를 들어 다음과 같이 y 옵션을 붙여서 명령을 내린다.

 

 

 

 

첫 번째 백업수퍼블록을 이용한 복구 : e2fsck b 8193 y /dev/sda3

 

두 번째 백업수퍼블록을 이용한 복구 : e2fsck b 24577 y /dev/sda3

 

세 번째 백업수퍼블록을 이용한 복구 : e2fsck b 40961 y /dev/sda3

 

네 번째 백업수퍼블록을 이용한 복구 : e2fsck b 57345 y /dev/sda3

 

 

 

 

그리고 f 옵션을 붙이면 파일 시스템에 문제가 없는 경우에도 복구를 강제로 진행한다.

 

 

 

다음과 같다.

 

 

 

 

 

 

 

 

 

# e2fsck b 8193 f y /dev/sda3

 

 

 

 

 

 

 

mke2fs로 파일 시스템을 생성한 후에는 종종 “lost+found”라는 디렉토리가 생성된다.

 

 

 

이 디렉토리는 파일 시스템의 점검작업 결과로 연결되지 않은 파일에 대한 정보를 저장하고 있는 장소이다.

 

 

 

, 파일명과 파일의 위치가 정확하게 파악되지 않아서 임시로 보관해 둔 곳이다.

 

 

 

따라서 e2fsck로도 복구되지 않은 파일들은 이 디렉토리에 보면 숫자로 된 파일들이 다수 존재하고 있음을 볼 수 있을 것이다.

 

 

 

이 파일들은 cat이나 vi 등으로 열어보면 일반적인 파일 내용과 거의 유사함을 알 수 있다.

 

 

 

따라서 불가피할 경우에는 “lost+found” 내에 있는 숫자로 된 파일들을 대상으로 하나씩 복구해야 하는 경우도 있다.

 

 

 

그렇지만, 무엇보다 데이터의 백업이 가장 우선시되어야 한다.

 

 

 

 

 

한편, e2fsck를 사용해도 특정한 아이노드 또는 아이노드들에 대해 문제가 있다면, debugfs 명령을 사용할 수 있다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  103 명