badblocks 명령어 - 디스크 배드블럭 체크


badblocks 명령어는 하드디스크와 플로피디스크의 배드블럭(bad block)을 검사하는 명령어 이다. 

배드블럭이 존재하는 하드디스크를 사용하게 되면 정상적인 운용중에도 갑자기 서버가 다운되는 등의 심각한 장애를

초래할 수 있다.

따라서 배드블럭은 서버설치시 또는 설치 직후에 반드시 점검을 해야하며 배드블럭이 존재할 경우에는 깨끗한 디스크로

반드시 교체해야한다.   아래는 실제 배드블럭을 검사하는 예.
</P>



[root@www named]#
badblocks -v /dev/sda5
Checking for bad blocks in read-only mode
From block 0 to 15615148

Pass completed, 0 bad blocks found.
[root@www named]#


위의 예는 배드블럭이 존재하지 않았을 경우의 예이다.
이상이 없는 깨끗한 디스크이므로 정상적인 사용이 가능하다고 할 수 있다.

[root@www root]#
badblocks -v -o badblock.txt /dev/sda3
Checking for bad blocks in read-only mode
From block 0 to 16755795
Pass completed, 3 bad blocks found.
[root@www root]#
[root@www root]#
[root@www root]#
[root@www root]# ll
total 8
-rw-r--r--    1 root     root         1199 Jun 30  2002 anaconda-ks.cfg
-rw-r--r--    1 root     root           27 Jan 17 22:34 badblock.txt
[root@www root]#
[root@www root]# cat badblock.txt
16755792
16755793
16755794
[root@www root]#


위의 경우에는 3개의 배드블럭이 존재하는 경우이다. 배드블럭이 존재할 경우에는 몇개의 배드블럭이 존재하는지 결과에서

알려준다.

이 경우처럼 -o 옵션을 주게 되면 지정된 파일(badblock.txt)에 결과를 저장하며 그 파일을 확인(cat badblock.txt)함으로서

배드블럭의 번호를 확인할 수 있다. </P>

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번째 필드) 에서 숫자로 결정된다. </P>

% 예방과 유지를 위해 모든 화일 시스템에 한주에 한번 혹은 각각의 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 디렉토리안에 어떤 문제의 화일들이나 디렉토리들을 위치시킨다.