리눅스마스터1급 : 백업수퍼블록을 이용한 파일시스템 복구
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,252 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : 백업수퍼블록을 이용한 파일시스템 복구
백업수퍼블록을 이용한 파일 시스템 복구
fsck(또는 e2fsck)로 파일 시스템을 자동복구하지 못한 경우에는 백업수퍼블록을 이용하여 복구해야 한다.
이 방법을 이용하면 물리적으로 문제가 있는 부분 이외에는 거의 대부분의 경우 데이터복구를 할 수 있다.
다만, 리눅스의 파일 시스템 구조와 수퍼블록의 정확한 개념 그리고 백업수퍼블록의 위치를 알아야 가능한 방법이다.
이 방법은 e2fsck의 –b 옵션을 이용한 방법이며 “-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 명령을 사용할 수 있다.
관련자료
-
이전
-
다음