본문 바로가기

쓰기

리눅스 파일시스템 검사 및 복구

haru 2017.12.22 10:40 조회 수 : 176

fsck / e2fsck - 리눅스 파일시스템 검사 및 복구

■ fsck : 파일 시스템을 점검하고 수리한다
Unix 계열에서  하드 디스크를 치료 하는 프로그램은 fsck 이며 마운트 타입에 
따라 e2fsck e3fsck resifsck 등으로 나누어 진다. 

RedHat 계열의 경우 현재는 거의 ext3 타입을 사용하나 ext2 타입을 사용할 경우
e2fsck 로 검사 및 복구 가능하다.


■ 형식 : fsck, e2fsck

■ 종료 코드는 다음 값의 합계로 나타난다.

0 - 에러 없음 
1 - 화일 시스템 에러 고쳐짐 
2 - 리부팅이 필요함 
4 - 화일 시스템 에러를 고치지 않고 그대로 둠 
8 - 실행 에러 
16 - 사용법 또는 문법 에러 
128 - 공유 라이브러리 에러 

■ 옵션

  -A : etc/fstab 화일에 표시된 모든 화일 시스템을 모두 검사한다
  -R : -A와 같이 사용될 때 루트 화일 시스템은 제외 한다(이미 읽기-쓰기 가능으로 
         마운트되어 있는 경우)
  -T : 시작할때 제목을 보여주지 않는다
  -N : 실제 검사는 하지 않고 어떤 작업을 할것인가만 보여준다
  -V : 자세히 출력한다
  -a : 물어보지 않고 자동 복구한다
  -r : 물어보고 복구한다
  -s : fsck 동작을 시리얼화한다. 대화형 모드에서 여러 화일 시스템을 점검할 때 
        유용하다
  -t [type] : 화일 시스템 유형을 지정한다. 
       -A 플래그가 설정되어 있는 경우 파일시스템유형에 맞는 것만 점검한다. 
       화일시스템유형 앞에 no 를 붙이면 화일시스템유형 아닌 것만 점검한다. 
       보통 /etc/fstab 화일에 들어있는 화일시스템유형을 따른다. 
       만약 해당 유형을 알아낼 수 없을 때는 fsck 는 -t 옵션에서 주어진 값을 사용한다. 
       주어진 값이 유효하지 않다면 현재로서는 기본값인 ext2 가 사용된다


■ 사용법


- fsck [-t 파일시스템유형] [장치명]
ex) fsck   /dev/hdb2
      fsck  -r /dev/sda3

■ 설명 


fsck 명령어는 리눅스 파일 시스템을 점검하고 복원시켜 주며 윈도우의 chkdsk 와 
유사한 명령어이다.

fsck  (최신 e2fsck)는 single 모드로, 해당 파티션이 unmount 된 상태에서 수행해야
정확한 검사가 가능하다.


ext3 의 경우에는 보통 default 로 부팅시에  6개월에 한번 파일 시스템 점검 하도록 
되어있으므로 파일시스템 손상 가능성이 거의 없지만 ext2 의 경우는 가끔 실행해 
주는 것이 좋다.


■ fsck 상세 설명


1) fsck는 화일 시스템에서 내재하는 여분의 데이타를 첵크함으로서 구조적인 상태를 
검증.


fsck 실행시 아래의 5가지의 과정을 거치게 된다.

 

Phase 1 - Check Blocks and Sizes : 블럭과 사이즈 검사

Phase 2 - Check Pathnames : 패스이름 검사

Phase 3 - Check Connectivity : 연결 상태 검사

Phase 4 - Check Reference Counts : 참조 수 검사

Phase 5 - Check Cyl groups : 싸이클 그룹 검사


2) fsck는 Multi-pass 프로그램인데, 화일 시스템을 여러번 시험하여 각각의 경로마다 
화일 시스템의 다른 특징을 시험한다는뜻이다.


3) root에 fsck를 실행시키기전에 shutdown 명령어를 써서 시스템을 단독 사용자 형태로 
옮겨야 한다. 만일 fsck에 화일 시스템을 주지 않고서 실행시키면 fsck는 /etc/checklist 
화일에서 "hfs"라고 표시된 화일 시스템만 검색. 그 순서는 pass_number(6번째 필드)
에서 숫자로 결정된다.

% 예방과 유지를 위해 모든 화일 시스템에 한주에 한번 혹은 각각의 full backup 전에 fsck -p를 실행하는것이 좋다.


4) 형식)

# fsck -P/-p (-P: /file system check only. -p: /를 제외한 일반 화일 시스템 check)


5) # fsck (-b, block#) (-y|-n) (-q) (file_system)

* -y : 모든 질문에 yes라는 뜻. 가급적 안쓰는것이 좋다. 
* -n : " no " . 쓰지 말것. 
* -q : 구질 구질한 것이 많으니 보지 않겠다는 의미. 역시 안쓰는것이 좋다. 
* -b block# : 이것은 primary super block을 잃어버렸거나 파괴되었을때 사용하기 좋고 
fsck로 많은 에러가 발생되었다면 이 옵션을 사용할 것.

% fsck가 다시 부트하라는 말이 없는데 시스템을 다시 시동하지 말것. 
만일 다시 시동해야 한다면 sync를 실행시키지않는 reboot -n 명령을 사용할 것. 

 

6) The lost + found Directory

1) 모든 file system은 그의 root에 lost+found라는 디렉토리를 가져야 된다. 
즉, /lost+found 이고 이것은 newfs에 의해 생성된다.

2) 만일 존재하지 않는다면 /etc/mklost+found라는 명령을 써서 다시 만들수있다.

3) fsck는 lost+found 디렉토리안에 어떤 문제의 화일들이나 디렉토리들을 위치시킨다.