OS/Linux

리눅스 파일 시스템 점검 및 복구(e2fsck)

realforce111 2016. 5. 25. 13:54

e2fsck는 리눅스 파일 시스템 점검 및 복구를 할 수 있는 명령어입니다. fsck의 확장 명령어라고 할 수 있으며 리눅스에서 사용 가능한 거의 모든 종류의 파일시스템의 점검과 복구를 할 수 있는 명령어입니다.


리눅스는 부팅 단계에서 /etc/rc.d/rc.sysinit 스크립트에 내용에 따라 fsck 가 /etc/fstab 파일을 참조하여 각 마운트 된(디스크) 장치의 파일 시스템을 점검합니다. 


만약 파일시스템 점검 중 에러가 있을 경우 "/dev/sdb1UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY"라는 메시지가 출력되며 정상 부팅이 되지 않습니다.

(dev/sdb1 파티션 파일시스템 에러)


이 경우 Give root password for maintenance 항목에 root 패스워드를 입력하여 Repair filesystem 모드로 진입합니다.


Repair filesystem 모드에서 e2fsck /dev/sdb1 라고 입력하면 파일시스템 복구 및 재부팅이 진행되며 정상 부팅됩니다.

e2fsck [파티션명]


부팅 중 파일시스템 에러를 제외한 상황에서 fsck, e2fsck를 사용할 경우 파티션을 언마운트 후 실행해야 합니다. 언마운트 하지 않고 실행하면 파일시스템에 손상이 갈 수 있습니다. 

(df -h 명령어를 입력하여 마운트 여부 확인)


*e2fsck 옵션

-f : 파일시스템이 이상이 없더라도 강제적으로 파일 시스템을 점검할 때 사용 

ex) e2fsck -f /dev/sdb1 


-j : 저널링 파일 시스템을 대상으로 작업할 때 사용하는 옵션. 저널링 파일 시스템(보통 ext3)를 대상으로 작업할 때 옵션이 아니라 필수로 사용하는 옵션

ex) e2fsck -j ext3 /dev/sda1 


-v : 점검 내역 상세 보기(ext3의 파일 시스템으로 구성된 sda1파티션을 강제로 점검하면서 상세내역도 보는 명령) 

ex) e2fsck -j ext3 -fv /dev/sda2 


-p : 오류 있는 파일 시스템의 자동 복구 

ex) e2fsck -b 98304 -p /dev/sda1 


-y : 수행 과정의 질문에 모두 yes라 응답

ex) e2fsck -b 98304 -y /dev/sdb1 


-n : 수행 과정의 질문에 모두 no로 응답

ex) e2fsck -b 98304 -n /dev/sdb1 


-c : 점검 과정에서 찾게 된 베드블록을 마킹하여 사용치 못하게 하는 옵션

ex) e2fsck -j ext3 -cv /dev/sda2 (/dev/sda2 파일 시스템 내의 배드블록이 있다면 배드블록 아이노드에 마킹하는 작업)


만약 위와 같은 방법으로 파일시스템 복구가 안될 경우 슈퍼 블록을 이용하여 복구를 진행하는 방법이 있습니다. 이 방법은 물리적으로 문제가 있을 경우를 제외하고는 거의 대부분 복구를 할 수 있습니다.

 

[root@localhost ~]# dumpe2fs /dev/sda1 | grep superblock

dumpe2fs 1.39 (29-May-2006)

  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

  Backup superblock at 73729, Group descriptors at 73730-73731

  Backup superblock at 204801, Group descriptors at 204802-204803

  Backup superblock at 221185, Group descriptors at 221186-221187

dumpe2fs 명령어를 입력하여 메인 슈퍼블록과 백업 슈퍼블록의 위치를 확인합니다. 

Primary superblock at 1 부분이 메인 슈퍼블록입니다. 첫 번째 백업 슈퍼블록이 8193, 두 번째 백업 슈퍼블록이 24577입니다. 


파일 시스템을 복구하려면 메인 슈퍼블록을 복구해야 합니다. 백업 슈퍼블록에 백업 데이터를 이용하여 메인 슈퍼블록을 복구합니다.

 

[root@localhost ~]# e2fsck -b 57345 -f -j ext3 -y /dev/sda1

e2fsck 1.39 (29-May-2006)

/dev/sda1 is mounted.


WARNING!!! Running e2fsck on a mounted filesystem may cause

SERVER filesystem damage.


Do you really want to continue (y/n)?

4번째 백업 슈퍼블록을 이용하여 /dev/sda1 파티션의 파일시스템을 강제로 복구합니다.

모든 질문에 yes를 입력합니다.