You cannot see this page without javascript.

본문 바로가기

쓰기

조회 수 2279 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

리눅스파일시스템점검과 복구강좌. e2fsck 1

 

 

 

 

 

 

  ----------------------                     ---------------

 

1 : 리눅스 파일시스템의 점검 과 복구를 하는 e2fsck 개론

2  : e2fsck명령어로 특정 파일시스템의  점검 및 복구하는 방법

3  : e2fsck로 특정 파일시스템 강제 점검 및 복구하기

4  : ext3(저널링)파일시스템의 점검 및 복구하기

5  : e2fsck로 특정 파일시스템 강제 점검 및 상세 작업내역보기

6  : 파일시스템의 수퍼블록을 이용한 파일시스템 복구방법

7  : e2fsck로 디스크의 배드블록 마크하기

8  : e2fsck로 특정 파일시스템 강제점검하기

9  : e2fsck로 파일시스템 점검시 버퍼캐쉬의 내용을 디스크에 저장하기

10  : e2fsck로 특정 파일시스템 점검시 오류 자동수정하기

11  : e2fsck로 파일시스템 점검시 모든 질문항목에 Yes라고 자동입력하기

12  : e2fsck사용시 파일시스템을 읽기전용으로 열고 모든 질문에 no라고 자동 답하기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr수퍼유저코리아 성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 

 

 

 

 

1 : 리눅스 파일시스템의 점검과 복구를 하는 e2fsck 개론

 

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

 

한마디로 리눅스 파일시스템의 점검 또는 복구를 위하여 서버관리자가 반드시 꼭 알아야하는 매우 중요한 명령어입니다.  가끔씩 파일시스템 오류로 인하여 서버부팅이 정상적으로 되지않을 경우에 이 명령어를 이용하여 파일시스템의 오류를 수정하고 정상적으로 부팅하는 경우가 있습니다.

 

파일시스템의 오류로 인한 서버다운이나 서버장애는 이 명령어를 정확하게 사용할 수 있는 것만으로도 응급조치하여 정상화를 시킬 수 있습니다

 

따라서 굳이 이 명령어의 중요성에 대해서 더 이상 언급하지 않더라도 이 명령어의 필요성과 중요성에 대해서는 충분히 전달되었으리라 생각합니다.

 

리눅스 시스템이 부팅되는 과정에서 /etc/rc.d/rc.sysinit 스크립트가 자동으로 실행이 됩니다
/etc/rc.d/rc.sysinit
스크립트를 확인해 보시면 파일시스템을 점검하는 명령어가 실행되는 단계가 있습니다.   따라서 시스템부팅시마다 파일시스템 점검명령어가 실행됩니다.

 

서버관리를 하다보면 흔하지않게 경험하는 것이 파일시스템 에러로 인한 시스템 다운입니다
파일시스템 에러가 발생하는 이유는 여러가지가 있지만 그중에서도 배드블록(Bad Block)이 가장 큰 원인인 것 같습니다.  따라서 이 명령어와 함께 배드블록을 점검하는 명령어인 badblocks명령어를 반드시 익혀두시기 바랍니다.

 

특히 e2fsck명령어의 정확한 사용법을 익히고 파일시스템 복구를 정확하게 할 수 있다는 것만으로 서버관리자에게는 위급한 경우에 매우 큰 힘이 될 것입니다.  따라서 서버관리를 하시는 분들께서는 fsck명령어와 badblocks명령어와 함께 이 명령어를 반드시 익혀두시기 바랍니다.

 

그리고 e2fsck는 다음과 같은 종료코드를 출력합니다.   , e2fsck의 종료코드의 종류와 의미는 다음과 같습니다.  e2fsck의 종료코드는 아래 값의 합으로 표시됩니다.

 

    0  - 에러없이 정상적인 종료를 의미함.
    1  - 
파일시스템을 복구하였음을 의미함.
    2  - 
파일시스템이 복구되어 시스템이 재부팅되어야함을 의미함.
    4  - 
작업대상 파일시스템에 문제가 있으나 복구하지않고 그대로 두었음을 의미함.
    8  - 
실행에러를 의미함.
   16  - 
사용법(Usage)또는 문법(Syntax)에러를 의미함.
   32  - e2fsck
작업이 사용자에 의해서 취소(Cancel)되었음을 의미함.
  128  - 
공유 라이브러리(Shared library) 에러를 의미함.

 

그리고 실제로 e2fsck작업에서 기본적으로 점검하는 항목은 다음과 같습니다.

 

 - inodes 점검
 - blocks 
점검
 - sizes 
점검 
 - 
디렉토리구조 점검 
 - 
디렉토리 연결성점검
 - 
파일링크 정보
 - 
전체파일갯수 점검 
 - 
전체블록수중 사용중인 블록 점검등

 

 

명령어위치 : /sbin/e2fsck

 

사용형식 

e2fsck [-pacnyrdfvtFV][-b 수퍼블록][-B 블록크기][-l|-L 배드블록목록화일장치명

장치명에는 다음예와 같이 디스크장치명을 정확하게 지정해 주셔야 합니다.

       /dev/sda1
       /dev/sda2
       /dev/hda1
       /dev/hdb1


위의 장치명들은 마운트가 되어있지않은 경우에 fdisk명령어로 확인하실 수 있습니다.  만약 현재 운용되고 있는 서버라면 즉마운트가 되어있는 상태라면 "df" 또는 "mount"등으로 위의 파일시스템명을 확인하실 수 있습니다.

 

[주의사항]

e2fsck명령어로 파일시스템을 점검하고 복구할 때에는 대상 파일시스템이 마운트되어있지않은 상태에서 실행하시기 바랍니다만약 마운트되어있는 상태에서 이 명령어를 사용하신다면 원하지않은 오류를 발생할 수도 있습니다.

 

 

 


2 : e2fsck명령어로 특정 파일시스템의  점검 및 복구하는 방법

e2fsck로 할 수 있는 가장 흔한 작업중 한가지가 파일시스템에 이상이 있는가를 간단히 점검하는 것입니다.  아래의 예는 e2fsck를 이용하여 /dev/hda1라는 파일시스템(장치명)을 점검한 예입니다.  아래의 예는 현재 마운트된 파일시스템(/dev/hda1) e2fsck로 점검하기 때문에 "WARNING!!!"메시지가 나온 것입니다.


마운트된 파일시스템을 대상으로 점검을 할 때에는 심각한 손상이 있을 수 있다는 의미의 메시지입니다.

 

[root@file root]# e2fsck /dev/hda1
e2fsck 1.32 (09-Nov-2002)
/dev/hda1 is mounted. 

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

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

/boot: recovering journal
/boot: clean, 41/32128 files, 13384/128488 blocks
[root@file root]#

 

위의 “Do you really want to continue (y/n)?”에서 “yes”를 입력하시면 계속 진행됩니다만약 “no”라고 입력하시면 실행종료합니다.

 

e2fsck /dev/hda1을 점검한 결과 위와 같이 별다른 메시지가 없다면 파일시스템에는 이상이 없다는 것을 의미합니다.

 

 

 

3 : e2fsck로 특정 파일시스템 강제 점검 및 복구하기

 

파일시스템에 이상이 없더라도 강제적으로 파일시스템을 점검하려면 -f옵션을 사용합니다
보시는 바와 같이 e2fsck inodes점검, blocks 점검, sizes점검디렉토리구조 점검디렉토리 연결성점검전체파일갯수 점검전체블록수중 사용중인 블록 점검등을 수행합니다.

 

[root@file root]# e2fsck -f /dev/hda1
e2fsck 1.32 (09-Nov-2002)
/dev/hda1 is mounted. 

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

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

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/boot: 41/32128 files (2.4% non-contiguous), 13384/128488 blocks
[root@file root]#

 

위의 예는 -f옵션을 사용하여 /dev/hda1파일시스템의 강제점검복구를 수행한 예입니다.

 

 


4 : ext3(저널링)파일시스템의 점검 및 복구하기

e2fsck는 이름에서도 알수 있는 바와 같이 ext2파일시스템을 기본 작업대상으로 개발된 것입니다.  하지만 -j 옵션을 사용하시면 ext3파일시스템의 점검및 복구를 할 수 있습니다

아래의 예는 ext3로 포맷된 파일시스템의 점검과 복구를 수행한 예입니다.


, e2fsck에서 "-j ext3"라는 옵션을 함께 주시면 됩니다.

 

[root@file root]# e2fsck -j ext3 /dev/hda1
e2fsck 1.32 (09-Nov-2002)
/dev/hda1 is mounted. 

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

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

/boot: clean, 41/32128 files, 13384/128488 blocks
[root@file root]#


ext3
로 포맷된 파일시스템 점검과 복구시에 편하게 사용할 수 있는 fsck.ext3라는 명령어를 사용하실 수도 있습니다.  fsck.ext3라는 명령어는 “e2fsck -j ext3”명령어와 동일한 것이지만 명령어의 이름에서도 알 수 있듯이 ext3로 포맷된 파일시스템만을 그 대상으로 하고 있습니다.

 

 

 

5 : e2fsck로 특정 파일시스템 강제 점검 및 상세 작업내역보기

 

만약 e2fsck의 여러가지 옵션들과 함께 -v옵션을 사용하면 다음예와 같이 파일시스템 점검의 상세정보를 확인하실 수 있습니다.

 

[root@file root]# e2fsck -fv /dev/hda1
e2fsck 1.32 (09-Nov-2002)
/dev/hda1 is mounted. 

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

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

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass
 4: Checking reference counts
Pass 5: Checking group summary information

      41 inodes used (0%)
       1 non-contiguous inodes (2.4%)
         # of inodes with ind/dind/tind blocks: 9/3/0
   13384 blocks used (10%)
       0 bad blocks
       0 large files

      25 regular files
       3 directories
       0 character device files
       0 block device files
       0 fifos
       0 links
       4 symbolic links (4 fast symbolic links)
       0 sockets
--------
      32 files
[root@file root]#

 

위의 예는 e2fsck명령어로 /dev/hda1파일시스템의 강제(-f)점검 및 복구를 수행하면서 상세한(-v) 결과메시지를 출력한 예입니다.

 

 

 

6 : 파일시스템의 수퍼블록을 이용한 파일시스템 복구방법

 

만약 e2fsck로 파일시스템이 자동복구가 되지 않을 경우에는 수퍼블록을 이용하여 직접 복구를 해주셔야 합니다.  이 방법을 이용하시면 물리적으로 문제있는 부분 이외에는 거의 모든 데이터를 복구할 수 있습니다.  리눅스의 파일시스템구조와 수퍼블록의 정확한 위치를 알아야만 가능한 방법입니다.  

 

이 방법은 e2fsck -b옵션을 이용한 방법이며 "-b 수퍼블록번호"를 함께 주시면 됩니다.

먼저 수퍼블록에 대한 이해를 드리기 위하여 간단한 설명을 드리도록 하겠습니다.

 

리눅스의 파일시스템은 블록그룹(Block Group)이라는 것으로 기본구조를 이루고 있으며 모든 블록그룹의 맨 앞에는 수퍼블록이라는 것이 존재합니다.   블록그룹에 존재하는 모든 수퍼블록들은 동일한 정보를 가지고 있으며 파일시스템이 파괴되었을 경우에 이 정보를 이용하여 복구를 할 수 있도록 준비하고 있습니다


즉 여기서 설명할 내용은 e2fsck의 기본적인 실행으로 깨진 파일시스템이 정상적인 복구가 되지 않을 경우에 그 다음 복구방법으로 수퍼블록이라는 것을 이용하여 복구를 한다는 의미입니다
수퍼블록(Superblock)이라는 것은 파일시스템의 크기와 파일시스템정보에 대한 내용이 들어있습니다.

 

다음은 리눅스의 대표적인 파일시스템 구조를 나타낸 것입니다.

 

[수퍼블록관점에서의 리눅스 파일시스템구조를 도식화한 그림]

 

 

위의 그림을 보시면 이해할 수 있는 것처럼 파일시스템의 맨 앞에는 첫번째 수퍼블록이 존재합니다.


그리고 그 다음 첫번째 블록그룹의 맨 앞에는 두번째 수퍼블록이 존재합니다
그리고 그 다음 두번째 블록그룹의 맨 앞에는 세번째 수퍼블록이 존재합니다

그리고 n번째 블록그룹에는 n+1번째 수퍼블록이 존재합니다.

 

e2fsck의 일반적인 방법으로 깨진 파일시스템의 복구가 불가능 할 경우에는 다음과 같이 수퍼블록을 이용하여 복구를 합니다.  

 

다음은 위의 그림에서 보시는 바와 같이 수퍼블록의 블록번호를 계산한 것입니다. 8192개의 블록은 하나의 블록그룹(Block Group)이 됩니다.  첫번째 수퍼블록은 1번째 블록에 존재하며 두번째 수퍼블록은 1+8192번째인 8193번블록에 존재합니다.


세번째 수퍼블록은 1+8192*2번째인 16385번째 수퍼블록에 존재합니다다음과 같이 계산할 수 있습니다.

 

첫번째 수퍼블록 : 1번블록에 위치함.
두번째 수퍼블록 : 1번블록 + 8192번블록*1 = 8193번째 블록에 위치함.
세번째 수퍼블록 : 1번블록 + 8192번블록*2 = 16385번째 블록에 위치함.
- n 
번째 수퍼블록 : 1번블록 + 8192번블록*n 번째블록에 위치함.

 

다음은 첫번째 수퍼블록이 깨졌기 때문에 일반적인 방법으로 복구가 불가능하게 된 경우로서 두번째 수퍼블록으로 복구를 하는 예를 보이고 있습니다

[root@file root]# e2fsck -b 8193 /dev/sda1
e2fsck 1.32 (09-Nov-2002)
/dev/sda1 is mounted. 

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

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

/boot was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass
 4: Checking reference counts
Pass 5: Checking group summary information

/boot: ***** FILE SYSTEM WAS MODIFIED *****
/boot: 41/32128 files (2.4% non-contiguous), 13384/128488 blocks
[root@file root]#

 
세번째 수퍼블록을 이용한 복구작업 : # e2fsck -b 16385 /dev/sda1
네번째 수퍼블록을 이용한 복구작업 : # e2fsck -b 24577 /dev/sda1

 

등과같은 방법으로 파일시스템을 복구하실 수 있습니다.

 

참고로  mke2fs로 파일시스템을 생성한 후에는 반드시 lost+found라는 디렉토리가 생성이 됩니다이 디렉토리는 파일시스템의 점검작업 결과로 연결되지 않은 파일에 대한 정보를 저장하고 있는 장소입니다파일명과 파일의 위치가 정확하게 파악되지 않아서 임시로 보관해둔 곳입니다따라서 e2fsck로도 복구되지 않은 파일들은 이 디렉토리에 보시면 숫자로된 파일들이 다수 존재하고 있음을 보실 수 있을 것입니다이 파일들을 cat이나 vi등으로 열어보면 일반적인 파일내용과 거의 유사함을 알 수 있습니다.

 

따라서 불가피할 경우에는 lost+found내에 있는 숫자로 된 파일들을 대상으로 하나씩 복구해야하는 경우도 있습니다필자는 파일시스템 복구작업을 현명하게 하는 것도 중요하지만 데이터의 백업이 가장 우선시 되어야 한다고 강조하고 싶습니다.

 


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 mysql 사용자 추가 명령 모음 운영자 2013.03.14 3023
112 [Apache] 2.4 버전에서 403 에러시 [authz_core:error AH01630: client denied by server configuration] 운영자 2015.08.19 823
111 우분투 Apache2 VirtulaHost 설정하는 방법 운영자 2015.08.19 1331
110 tar 를 이용한 자료 복사 운영자 2015.08.19 1494
109 [Ubuntu 10.04 LTS] 하드웨어를 확인하는 명령어 file 운영자 2015.07.10 1013
108 우분투 시스템 온도체크 / 하드 온도 체크 file 운영자 2015.07.10 1293
107 우분투에서 하드 상태 체크하기 운영자 2015.07.10 804
106 우분투 apt-get 서버 원래대로 복원 운영자 2015.02.26 1582
105 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 운영자 2014.11.04 1430
104 vsFTP 계정별 서로 다른 루트 디렉토리 지정하기 (chhroot) file 운영자 2014.11.03 1548
103 우분투(Ubuntu) | 우분투 14.04에서 403 You don't have permission to access / on this server. 해결하는 방법 운영자 2014.10.25 4034
102 리눅스파일시스템점검과 복구강좌. e2fsck 2편 운영자 2014.09.25 1880
» 리눅스파일시스템점검과 복구강좌. e2fsck 1편 운영자 2014.09.24 2279
100 리눅스 파일시스템 체크 하기 fsck(e2fsck)사용법 운영자 2014.09.24 10485
99 ftp에서 심볼릭링크를 사용하고 싶을 때 운영자 2014.08.26 2180
98 우분투 14.04 업데이트 하는 방법을 알고 싶습니다. 운영자 2014.08.11 2090
97 ubuntu server 설치후 콘솔창 한글 깨지는 현상 운영자 2014.08.11 7727
96 우분투 root 계정 사용하기 file 운영자 2014.08.11 2084
95 콘솔의 화면보호기능을 끄려면? 운영자 2014.08.11 2671
94 Ubuntu Hdd 추가하기 운영자 2014.05.30 2903
93 df -h 에서 1% 줄어드는 용량 운영자 2014.04.07 2863
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7