Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

리눅스 fsck 명령어 완벽 가이드: 파일 시스템 오류 복구 4가지 실전 예제

현대의 컴퓨터는 놀라울 정도로 안정적이지만, 그래도 언제든 문제가 발생할 수 있습니다. 그리고 최악의 상황은 중요한 업무 자료나 소중한 사진 같은 데이터를 잃어버리는 것입니다.

탄탄한 백업 시스템과 더불어 fsck(File System cheCK)는 데이터 손실을 예방하기 위해 반드시 알아두어야 할 가장 중요한 도구 중 하나입니다. 이 튜토리얼에서는 리눅스에서 fsck를 사용해 파일 시스템 오류를 복구하는 방법을 설명하고, 네 가지 일반적인 사용 예제를 함께 살펴봅니다.

fsck는 리눅스 파일 시스템의 무결성을 검증하고 오류를 복구하는 도구입니다.

기본 문법

fsck는 리눅스에서 사용되는 다양한 파일 시스템 전용 검사 도구들의 공통 인터페이스 역할을 하며, 다음과 같은 문법을 사용합니다:

fsck [OPTIONS]... [FILESYSTEMS]...

참고할 사항은 다음과 같습니다:

  • [OPTIONS]…는 아래 표에 정리된 옵션 목록입니다.
  • [FILESYSTEMS]는 검사 또는 복구할 파일 시스템 목록입니다.
  • fsck가 인식하지 못하는 옵션은 해당 파일 시스템 전용 검사 프로그램에 그대로 전달됩니다.
  • 파일 시스템을 따로 지정하지 않으면 fsck는 /etc/fstab에 등록된 모든 파일 시스템을 검사합니다(즉, 기본적으로 -A 옵션이 적용됩니다).

주요 옵션

fsck에는 여러 가지 옵션이 있으며, 전체 목록은 터미널에서 다음 명령으로 확인할 수 있습니다:

man fsck

아래는 가장 자주 사용되는 옵션들을 매뉴얼에서 발췌해 정리한 표입니다(간결함을 위해 일부 생략했으며, 고급 사용법은 매뉴얼을 참고하세요):

옵션 설명
-t 검사할 파일 시스템의 유형(fslist)을 지정합니다. fslist는 쉼표로 구분된 파일 시스템 및 옵션 지정자 목록입니다. 일반적으로 파일 시스템 유형은 /etc/fstab 파일에서 해당 항목을 찾아 자동으로 판별됩니다.
-A /etc/fstab 파일을 순회하며 모든 파일 시스템을 한 번에 검사합니다. 개별 파일 시스템마다 명령을 여러 번 실행하는 대신, 주로 /etc/rc 시스템 초기화 파일에서 사용되는 옵션입니다.
-M 마운트된 파일 시스템은 검사하지 않으며, 마운트된 파일 시스템에 대해서는 종료 코드 0을 반환합니다.
-N 실제로 실행하지 않고, 어떤 작업이 수행될지만 보여줍니다.
-R -A 플래그로 모든 파일 시스템을 검사할 때 루트 파일 시스템은 건너뜁니다(이미 읽기-쓰기로 마운트된 경우를 대비).
-V 실행되는 모든 파일 시스템 전용 명령을 포함한 상세 출력을 제공합니다.

파일 시스템별 fsck의 옵션은 표준화되어 있지 않습니다. 확실하지 않다면 해당 파일 시스템 전용 검사 도구의 man 페이지를 참고하세요. 보장되지는 않지만, 아래 옵션들은 대부분의 파일 시스템 검사 도구에서 지원됩니다:

옵션 설명
-a 질문 없이 파일 시스템을 자동으로 복구합니다(신중하게 사용하세요).
-n 일부 파일 시스템 전용 검사 도구에서, -n 옵션을 사용하면 문제를 복구하지 않고 단순히 보고만 합니다.
-r 대화형으로 파일 시스템을 복구합니다(확인 절차를 거칩니다).
-y 일부 파일 시스템 전용 검사 도구에서, -y 옵션을 사용하면 감지된 모든 손상을 항상 자동으로 수정하려 시도합니다.

특정 파일 시스템 전용 검사 도구의 옵션을 확인하려면 다음과 같이 실행하세요:

man fsck.ext4

종료 코드

fsck가 반환하는 종료 코드는 아래 조건들의 합입니다
0 오류 없음
1 파일 시스템 오류가 수정됨
2 시스템 재부팅 필요
4 파일 시스템 오류가 수정되지 않은 채 남아 있음
8 운영상 오류
16 사용법 또는 구문 오류
32 사용자 요청으로 fsck가 취소됨
128 공유 라이브러리 오류
여러 파일 시스템을 검사할 때 반환되는 종료 코드는 각 파일 시스템의 종료 코드를 비트 OR(bit-wise OR) 연산한 값입니다.

사용 예제

아래는 fsck의 일반적인 사용 예제들입니다. 로컬 디스크 검사부터 루트 파일 시스템 검사까지 다룹니다.

1. 파일 시스템 마운트 해제

사용 중인 파일 시스템은 검사할 수 없습니다. 검사를 강행하면 파일 시스템이 손상되고 데이터가 유실될 수 있기 때문입니다. 파일 시스템을 마운트 해제하려면 다음 명령을 실행하세요:

sudo umount /dev/filesystem

여기서 filesystem은 마운트 해제할 파일 시스템의 이름입니다.

파일 시스템 이름을 모른다면 다음 명령으로 파일 시스템과 마운트 지점 목록을 확인할 수 있습니다:

df -h

2. 파일 시스템 다시 마운트

검사와 복구가 끝나면 다음 명령으로 파일 시스템을 다시 마운트할 수 있습니다:

sudo mount /dev/filesystem

3. 손상된 파일 시스템 검사 및 복구

sudo fsck -p /dev/filesystem

참고 사항:

  • filesystem은 검사 대상 파일 시스템의 이름으로, "sda1" 또는 "sdc1"과 같은 형태입니다.
  • -p 옵션은 사용자 입력이 필요 없는 문제들을 자동으로 수정하도록 fsck에 지시합니다.

4. 부팅 시 검사 / 루트 파일 시스템 검사

사용 중인 파일 시스템은 검사할 수 없으므로, 시스템이 완전히 부팅되어 루트 파일 시스템이 사용 중인 상태에서는 검사할 수 없습니다.

이럴 때 가장 좋은 방법은 부팅 시점에 검사를 실행하는 것이며, 원격으로 시스템에 로그인한 경우에도 동작합니다.

대부분의 리눅스 배포판은 파일 시스템이 "dirty"(검사 필요) 상태로 표시되었거나, 설정된 부팅 횟수 간격이 지났을 때 fsck를 자동으로 실행하도록 기본 설정되어 있습니다.

특정 파일 시스템(루트 파일 시스템 포함)을 매 부팅 시마다 강제로 검사하려면 tune2fs로 파일 시스템 매개변수를 조정합니다:

tune2fs -c 1 /dev/filesystem

여기서 filesystem은 검사할 파일 시스템의 이름입니다. 1은 fsck가 실행되기까지의 부팅 횟수를 의미하며, 우분투 계열 배포판에서는 기본값이 30입니다. 원래 설정으로 되돌리려면 다음을 실행하세요:

tune2fs -c 30 /dev/filesystem

이 방법이 작동하지 않는 구버전 배포판에서는 /forcefsck 파일이 존재하면 부팅 시 fsck가 실행됩니다:

sudo touch /forcefsck

부팅 시 fsck가 완료되면 결과는 다음 위치에 기록되므로 나중에 확인할 수 있습니다:

/var/log/fsck

시스템이 아예 부팅되지 않을 정도로 손상된 경우에는 복구 디스크나 USB로 부팅한 뒤 fsck를 실행하면 됩니다. 이때는 검사하려는 루트 파일 시스템이 마운트되어 있지 않기 때문입니다.

마치며

더 자세한 정보가 필요하다면 터미널에서 다음 명령으로 fsck 매뉴얼을 확인하세요:

man fsck

그 외에도 자주 사용되는 리눅스 셸 도구에 대한 설명 글들을 함께 확인해 보시기 바랍니다.