리눅스마스터2급강좌 : 파일시스템의 검사 및 복구(fsck)
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 4,558 조회
- 0 추천
- 목록
본문
리눅스마스터2급강좌 : 파일시스템의 검사 및 복구(fsck)
파일 시스템의 검사 및 복구
1) fsck
fsck(file system checker)는 리눅스에서 파일 시스템을 검사해서 오류를 수정해 주는 프로그램이다.
리눅스 사용 중에 “파일 시스템이 깨졌다”는 표현을 많이 사용하는데, 이 때 깨진 파일 시스템을 복구하기 위해 가장 먼저, 그리고 가장 일반적으로 사용하는 명령어가 fsck이다(이 명령어와 관련하여 필수적으로 e2fsck와 함께 알아두도록 한다).
fsck 명령어는 다음과 같이 사용한다.
|
|
|
| fsck [-sAVRTMNP] [-C [-t 파일 시스템 유형] [파일시스템옵션] [장치명] 또는 [마운트 포인트] ... |
|
|
|
|
그리고 이와 함께 사용되는 주요한 옵션들은 다음과 같다.
옵션 | 설명 |
-s | fsck 동작을 시리얼화한다.
대화형 모드에서 여러 파일 시스템을 점검할 때 유용하다(주의: e2fsck는 기본값으로 대화형으로 실행한다.
e2fsck을 비대화형 모드로 실행하려면, 에러를 자동으로 치유하고자 하는 경우에는 -p 또는 -a 옵션을 주고 자동으로 치유하고 싶지 않은 경우에는 -n 옵션을 준다.) |
-t | 검사할 파일 시스템의 형식을 지정한다.
–A 옵션과 같이 사용되면 /etc/fstab 파일에 기술된 파일 시스템중 해당하는 형식의 파일 시스템들만 검사하게 된다.
파일 시스템 형식 앞에 no 를 붙이게 되면 해당 파일 시스템 형식을 제외한 다른 파일 시스템들을 검사한다. |
-A | /etc/fstab 파일에 기술되어 있는 파일 시스템들을 지정된 순서에 맞게 모두 검사한다.
일반적으로 rc 스크립트에 기술되어(rc스크립트 참조) 시스템 자동으로 검사하도록 설정된다. |
-N | 실행하지 않고 단지 수행될 내용을 출력한다.
즉, 수행 내용을 시뮬레이션한다. |
-P | -A 플래그와 같이 사용될 때 다른 파일 시스템과 함께 병렬 처리하여 루트 파일 시스템을 점검하도록 한다.
이것은 루트 파일 시스템에 의심스러운 상태라면 오류를 일으킬 수 있으므로 안전한 방법은 아니다. |
-R | -A 플래그와 같이 사용될 때 루트 파일 시스템은 제외하도록 한다.(이미 읽기-쓰기 가능으로 마운트되어 있는 경우) |
-V | 실행되는 각 파일 시스템용 명령을 포함하여 자세한 출력을 수행한다. |
파일 시스템 특정 옵션 | |
-a | 어떤 질문도 하지 않고 파일 시스템을 자동으로 보수한다. |
-r | 대화형 모드로 파일 시스템의 오류를 수정한다.
즉, 사용자에게 확인을 요구한다. |
-n | 몇몇 파일 시스템에 특정된 것으로, 문제를 수정하지 않고 단순히 그런 문제를 표준출력(stdout)으로 보고한다. |
-y | 몇몇 파일 시스템에 특정된 것으로, 감지된 파일 시스템 오류를 자동적으로 수정하도록 한다. |
fsck는 /etc/fstab 파일에 설정되어 있는 파일 시스템을 기본 작업 대상으로 한다.
그리고 fsck는 수행 시에 /etc/fstab에 지정된 파일 시스템 타입으로 수행을 하게 되지만, -t 옵션을 사용하여 파일 시스템 타입을 지정할 수 있다.
만약 파일 시스템으로 주어진 값이 유효하지 않는 경우에는 기본값으로 ext2가 주어진다.
그리고 장치명이나 마운트 포인트를 여러 개 지정하여 각기 다른 물리적 드라이브 상의 여러 파일 시스템을 검사하는 병렬 처리가 가능하다.
fsck로 파일 시스템의 점검과 복구를 할 때에는 반드시 mount 해제를 한 후에 작업해야 한다.
만약 mount 된 파일 시스템을 대상으로 fsck 작업을 하면 파일 시스템이 손상될 수 있다(mount를 해제하지 않더라도 경고 메시지에 yes를 입력하면 fsck를 진행할 수 있다).
다음과 같이 fsck 명령을 실행해 보자.
|
|
|
| # umount /dev/sdb1 # fsck –t ext4 /dev/sdb1 |
|
|
|
|
그런데 파일 시스템이 현재 사용되고 있는 경우에는 mount를 해제할 수 없다.
특히 /home 디렉토리로 mount한 파일 시스템의 경우에는 특정 사용자가 로그인하여 파일 시스템을 사용하고 있다면 mount를 해제할 수 없게 된다.
따라서 이 경우에는 사용자들이 시스템에 로그인할 수 없도록 조치를 취할 필요가 있다.
예를 들어 다음과 같이 시스템의 런레벨을 1로 조정하고 /home 파일 시스템을 umount 한다.
|
|
|
| # init 1 # umount /home (또는 장치명) |
|
|
|
|
그런데 루트(/) 파일 시스템의 경우 mount가 해제될 수 없으므로 루트 파일 시스템을 검사할 때에는 읽기 전용으로 마운트하여 검사를 진행할 수 있다.
그렇지만 간단하게 다음과 같은 방법들을 사용할 수 있다.
먼저 루트(/) 파일 시스템에 / 아래에 “forcefsck” 파일을 만들고 재부팅하면 리눅스가 재부팅하면서 fsck를 실행한다.
|
|
|
| # touch /forcefsck |
|
|
|
|
그리고 shutdown 명령에 -F 옵션을 사용하면 재부팅 시에 fsck를 실행하도록 할 수도 있다.
이 옵션은 루트 파일 시스템에 “forcefsck” 파일을 / 아래에 만든다.
fsck 명령이 실행된 후에는 이 파일은 삭제된다.
|
|
|
| # shutdown -rF now |
|
|
|
|
위와 같이 하기 어려운 상황이라면 설치 CD나 Live CD를 사용하여 파일 시스템 검사 및 복구를 진행할 수 있다.
먼저 설치 CD를 CD-ROM 드라이브에 넣고 시스템을 시작하여 설치 메뉴에서 “Rescue installed system”를 선택하고 이후의 설정 과정을 거쳐서 루트(/) 파일 시스템을 읽기 전용으로 마운트하고 fsck 등을 이용하여 파일 시스템을 검사 및 복구하는 것이다.
그리고 Live CD를 이용하여 리눅스로 부팅한 후에 터미널에서 fsck 명령을 내릴 수도 있다.
ext2, ext3, ext4 등에서 모두 fsck를 실행할 수 있는데, -t 옵션을 사용하지 않고 fsck.ext3, fsck.ext4 등과 같이 명령을 내릴 수도 있다.
fsck는 리눅스에서 사용가능한 파일 시스템 점검프로그램인 “fsck.파일시스템유형”에 대한 전위(front-end) 프로그램일 뿐이기 때문이다.
현재 fsck.ext2, fsck.ext3, fsck.ext4, fsck.ext4dev, fsck.cramfs, fsck,vfat, fsck.msdos 명령을 사용 가능하다.
그리고 이 개별 명령어들은 각각의 명령어에 특화된 옵션들이 존재한다.
다음과 같이 복수의 옵션을 적용시켜 보자. 다음은 fsck의 실제 작업 없이 특정 파일 시스템의 점검이 어떻게 수행되는가를 확인하기 위해 fsck 명령에 –N 옵션을 적용시킨 것이다.
|
|
|
| # fsck –N –t ext4 /dev/sdb1 |
|
|
|
|
|
|
|
| mount/umount mount와 umount 명령어에 대한 설명은 3장의 “파일 저장장치 마운트와 언마운트” 부분을 참고하기 바란다.
|
|
|
|
|
관련자료
-
이전
-
다음