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

dumpe2fs실무2편: 파일시스템의 수퍼블록 실무 다루기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

dumpe2fs실무2: 파일시스템의 수퍼블록 실무 다루기

 

 

 

 

 

파일시스템에서 무엇보다 중요하다고 할 수 있는 것이 수퍼블록이다.

 

 

 

수퍼블록에는 해당 파일시스템의 전체구조에 대해 정의되어있다.

 

 

 

즉 파일시스템의 구조에서 맨 앞부분에 위치하며 각 item들의 크기와 할당내역 및 사용현황등을 확인할 수 있다.

 

 

 

 

 

이미 우리는 앞의 예에서 지정한 파일시스템의 내용을 상세하게 확인하는 예를 보았다.

 

 

 

따라서 이번에는 특정 파일시스템의 수퍼블록정보만을 확인하기 위해 다음과 같이 -h옵션을 사용하면 된다.

 

 

 

아래는 /dev/sda3파일시스템의 수퍼블록정보만을 확인한 것이다.

 

 

 

 

 

[root@sulinux ~]# dumpe2fs -h /dev/sda3

dumpe2fs 1.41.3 (12-Oct-2008)

Filesystem volume name:   /home

Last mounted on:          <not available>

Filesystem UUID:          e258fd21-3bda-4c09-8e71-bb0519d6b2cc

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file

Filesystem flags:         signed_directory_hash

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              65808

Block count:              263064

Reserved block count:     13153

Free blocks:              250021

Free inodes:              65595

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      64

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         7312

Inode blocks per group:   457

Filesystem created:       Mon Dec  1 21:47:55 2008

Last mount time:          Mon Jan  5 19:23:03 2009

Last write time:          Mon Jan  5 19:23:03 2009

Mount count:              31

Maximum mount count:      -1

Last checked:             Mon Dec  1 21:47:55 2008

Check interval:           0 (<none>)

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:               256

Required extra isize:     28

Desired extra isize:      28

Journal inode:            8

Default directory hash:   half_md4

Directory Hash Seed:      d8d9df44-8e11-4cbc-a345-a394c6bec699

Journal backup:           inode blocks

Journal size:             32M

 

[root@sulinux ~]# 

 

 

 

 

이 정보에는 각 블록그룹들에 대한 상세정보는 포함되어 있지 않다.

 

 

 

다만, /dev/sda3파일시스템의 수퍼블록에 대한 정보만을 확인해 보려고 할 때 사용한다.

 

 

 

 

 

, 이제 데이터복구 관점에서 수퍼블록의 의미를 살펴보도록 하자. 흔한 경우는 아니지만 시스템관리라는 실무를 하다보면 파일시스템이 망가져서 데이터를 복구해야 하는 경우도 있고, 특정 파일시스템의 수퍼블록이 깨져서(일명 맛이 가서) 백업수퍼블록을 이용하여 해당 파일시스템을 복구해야하는 경우도 있다.

 

 

 

물론, 파일시스템을 복구하기 위해서는 이번 절에서 설명하고있는 dumpe2fs를 잘안다고 해서 복구할 수 있는 것은 아니다.

 

 

 

ext4, ext3 ext2파일시스템의 구조에 대해서 잘 알고 있어야 하고, 무엇보다 파일시스템의 전체적인 구조를 파악한 다음 관련 명령어들을 이용하여 필요한 작업들을 파일시스템을 대상으로 할 수 있어야 한다.

 

 

 

 

 

이런 작업들을 수행하기 위해서는 이번 절에서 설명하고 있는 dumpe2fs뿐만 아니라, tune2fs, debugfs, 그리고 e2fsck등의 명령어들의 사용법을 모두 알고 있어야 한다.

 

 

 

이들 명령어들에 대한 파일시스템 복구에 관련된 각각의 사용법들을 해당 파트에서 상세히 설명하고 있다.

 

 

 

모두 확인하기 바란다.

 

그렇다면 dumpe2fs에서는 지금까지 설명한 내용들을 포함하여 파일시스템복구에 필요한 다음 정보를 확인할 수 있어야 한다.

 

 

 

즉 파일시스템은 앞에서 확인해 보았던 수퍼블록이라고 하는 파일시스템의 주요정보(앞에서 모두 확인했던 정보)들을 저장하고 있는 특수한 블록이 있다.

 

 

 

대부분 첫번째 블록을 수퍼블록으로 사용하고 있다.

 

 

 

파일시스템을 생성할 때에(우리는 이런 작업을 포맷이라고 함. 대부분 mke2fs로 포맷작업을 함.) 수퍼블록을 생성하고 수퍼블록의 내용을 백업해두는 여러 개의 백업수퍼블록을 생성하게 된다.

 

 

 

만약 이 수퍼블록이 망가진다면 해당 파일시스템 전체를 읽어 들일 수 있다.

 

 

 

따라서 우리는 이 수퍼블록이 망가졌을 경우에 백업수퍼블록을 이용하여 파일시스템을 정상화시켜야 한다.

 

수퍼블록을 정상화시키기 위해서는 앞에서 말한 몇가지 명령어들을 모두 알아야 하지만 우리는 dumpe2fs를 이용하여 수퍼블록과 백업수퍼블록의 위치는 확인할 수 있어야 한다.

 

 

 

결론적으로 이번예는 dumpe2fs를 이용하여 특정파일시스템의 수퍼블록과 백업수퍼블록이 어떤 블록에 저장되어있는가를 확인하는 방법에 대한 것이다.

 

 

 

 

 

[root@sulinux ~]# dumpe2fs /dev/sda5 | grep superblock

dumpe2fs 1.41.3 (12-Oct-2008)

  Primary superblock at 0, Group descriptors at 1-1

  Backup superblock at 32768, Group descriptors at 32769-32769

  Backup superblock at 98304, Group descriptors at 98305-98305

  Backup superblock at 163840, Group descriptors at 163841-163841

  Backup superblock at 229376, Group descriptors at 229377-229377

  Backup superblock at 294912, Group descriptors at 294913-294913

  Backup superblock at 819200, Group descriptors at 819201-819201

  Backup superblock at 884736, Group descriptors at 884737-884737

[root@sulinux ~]#

 

 

 

 

위의 예는 dumpe2fs를 이용하여 /dev/sda5파일시스템에 대한 수퍼블록과 백업수퍼블록이 저장된 블록번호, 그리고 그룹구분자(Group Descriptor)가 저장된 블록위치를 확인한 것이다.

 

 

 

이번 예에서 우리는 다음 사항을 알 수 있다.

 

 

 

 

 

- 수퍼블록             : 0번 블록에 저장되어 있음.

 

- 첫번째 백업수퍼블록  : 32768번 블록에 저장되어 있음.

 

- 두번째 백업수퍼블록  : 98304번 블록에 저장되어 있음.

 

- 세번째 백업수퍼블록  : 163840번 블록에 저장되어 있음.

 

- 네번째 백업수퍼블록  : 229376번 블록에 저장되어 있음.

 

- 다섯번째 백업수퍼블록 : 294912번 블록에 저장되어 있음.

 

- 여섯번째 백업수퍼블록 : 819200번 블록에 저장되어 있음.

 

- 일곱번째 백업수퍼블록 : 884736번 블록에 저장되어 있음을 각각 알 수 있음.

 

 

 

 

이렇게 여러분과 필자 같은 시스템관리자들은 파일시스템의 수퍼블록과 이 수퍼블록이 백업되어있는 백업수퍼블록에 대하여 그 정보를 잘 알고있어야 한다.

 

 

 

수퍼블록과 백업수퍼블록의 생성은 mke2fs 또는 mkfs로 파일시스템을 생성할 때에 결정되고 만약 수퍼블록에 이상이 발생한 경우에는 e2fsck 또는 fsck등으로 파일시스템을 복구할 때에 여기서 확인한 정보가 사용되게 된다.

 

 

 

 

 

이상으로 dumpe2fs에 대한 설명을 마치면서 서두에서 말한바와 같이 이 명령어는 ext2 ext3의 파일시스템에 대한 정확한 이해가 무엇보다 중요하다는 것을 거듭 강조한다.

 

 

 

왜냐하면 파일시스템에 대한 기본적인 이해 없이는 이번에 설명한 dumpe2fs의 출력결과에 대한 이해와 dumpe2fs명령어의 필요성과 중요성에 대해서 알 수 없기 때문이다.

 

 

 

이미 설명한 바와 같이 dumpe2fs명령어는 특정 파일시스템의 상세내역을 확인할 수 있는데 비해 tune2fs명령어는 특정 파일시스템의 수퍼블록정보를 변경할 수 있으므로 이 두 명령어는 상호 보완적으로 사용해야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


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