마음의 안정을 찾기 위하여 - 리눅스 시스템에서 하드디스크 점검하기
2265752
89
804
관리자새글쓰기
태그위치로그방명록
별일없다의 생각
dawnsea's me2day/2010
색상(RGB)코드 추출기(Color...
Connection Generator/2010
최승호PD, '4대강 거짓말 검...
Green Monkey**/2010
Syng의 생각
syng's me2DAY/2010
천재 작곡가 윤일상이 기획,...
엘븐킹's Digital Factory/2010
리눅스 시스템에서 하드디스크 점검하기
리눅스/리눅스 활용팁 | 2010/06/10 12:01
리눅스 서버를 사용하다보면 가끔 예기치 않은 상황(정전이나 전원차단)에 의해 파일시스템이 문제가 생겨 부팅이 되지 않는 경우가 발생하곤 한다.

이런 경우 몇가지 명령어만 알고 있다면 파일 시스템의 오류로 인한 서버 다운이나 서버 장애는 간단(?)하게 응급조치를 취하여 서버의 데이터를 복구할 수 있다.

리눅스는 시스템이 부팅되는 과정에서 "/etc/rc.d/rc.sysinit" 스크립트가 자동으로 실행이 되는데, 해당 스크립트를 살펴보면 파일시스템을 점검하는 명령어가 포함되어 있음을 확인할 수 있다.

리눅스에서 파일 시스템 에러가 발생하는 이유중에 하나가 배드블럭인데, 이 배드블럭을 점검하는 명령어인 "badblocks"와 함께 파일시스템을 점검하고 복구할 수 있는 "e2fsck"명령어를 익혀두도록 하자.

[/]# badblocks -v /dev/hd1 (배드 블록 점검)

[/]# e2fsck -cv /dev/sda1 (파일 시스템 점검 및 배드블록 마킹)
....
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

/: ***** FILE SYSTEM WAS MODIFIED *****
/: ***** REBOOT LINUX *****

  336288 inodes used (7%)
     489 non-contiguous inodes (0.1%)
         # of inodes with ind/dind/tind blocks: 14145/72/0
 1537521 blocks used (18%)
         0 bad bloks
         0 large files

  293030 regular files
   15863 directories
    2522 character device files
   15884 block device files
       1 fifo
    4451 links
    8974 symbolic links (8968 fast symbolic links)
       5 sockets
________
 340730 files

※ e2fsck 명령어는 마운트가 해제된 상태에서 사용해야함. 
    마운트가 된 상태에서 실행시 파일 시스템이 손상될 수 있음. Warning!!! 메시지 출력.


점검 복구 자동 : e2fsck -p /dev/sda1
점검, 복구시 묻는 질문에 무조건 yes : e2fsck -y /dev/sda1
점검, 복구시 묻는 질문에 무조건 No  : e2fsck -n /dev/sda1
버퍼 캐쉬의 내용을 디스크에 저장하기 : e2fsck -F /dev/sda1


● 파일 시스템의 슈퍼 블록을 이용한 파일시스템 복구하기

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

e2fsck의 -b 옵션을 이용한 방법이며 "-b 수퍼블록번호"를 파라미터로 주면 된다.


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

아래는 첫번째 슈퍼블록에 오류가 생겨 일반적인 방법으로 복구가 불가능하게 되었을때, 두번째 슈퍼 블록으로 복구하는 예이다.

[/]# e2fsck -b 8193 /dev/sda1
...
/dev/sda1 is mounted.
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
...

위의 명령어로 복구가 안되면 두번째, 세번째... 슈퍼블록을 이용하여 복구하면 된다.

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

참고로 mke2fs 로 파일시스템을 생성한 후에는 반드시 lost+found 라는 디렉토리가 생성이 되는데, 이 디렉토리는 파일시스템의 점검작업 결과로 연결되지 않은 파일에 대한 정보를 저장하고 있는 장소이다.

e2fsck 로도 복구되지 않은 파일들은 이 디렉토리를 보면 숫자로된 파일형태로 존재하게 되는데 이 파일들을 cat/vi/tail등으로 열어보고 해당 파일을 복구하는 경우도 있다. 물론 이 경우는 좋은 상황은 아니지만 데이터를 전부 유실하는 최악의 경우보단 나을테니...............



잊지 말자! 백업!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2010/06/10 12:01 2010/06/10 12:01
Article tag list Go to top
View Comment 1
Trackback URL :: 이 글에는 트랙백을 보낼 수 없습니다
From. 구차니 2010/06/10 13:20
답글달기삭제
fsck -y의 악몽이 가시지 않고 있어서
항상 fsck는 두려워요 ㅠ.ㅠ


안전하게 복구 하는법이 참 궁금해요 ㅠ.ㅠ
PREV : [1] : NEXT
 
 
 
 
: [1] ... [241][242][243][244][245][246][247][248][249] ... [1317] :
«   2024/03   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
전체 (1317)
출판 준비 (0)
My-Pro... (41)
사는 ... (933)
블로그... (22)
My Lib... (32)
게임 ... (23)
개발관... (3)
Smart ... (1)
Delphi (93)
C Builder (0)
Object... (0)
VC, MF... (10)
Window... (1)
Open API (3)
Visual... (0)
Java, JSP (2)
ASP.NET (0)
PHP (5)
Database (12)
리눅스 (29)
Windows (25)
Device... (1)
Embedded (1)
게임 ... (0)
Web Se... (2)
Web, S... (21)
잡다한... (6)
프로젝트 (0)
Personal (0)
대통령... (13)
Link (2)