맨위로가기

Fsck

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

fsck는 파일 시스템 검사 및 복구 유틸리티로, 주로 부팅 시 자동으로 실행되거나 시스템 관리자가 수동으로 실행한다. 이 명령어는 디스크의 데이터 구조에 직접 작용하며, 사용 중인 파일 시스템에 따라 특화된 명령어를 호출한다. fsck는 손상된 파일 시스템을 복구하거나, 자동 또는 대화식으로 문제를 해결하는 옵션을 제공한다. XFS, ZFS, Btrfs와 같은 일부 최신 파일 시스템은 자체적인 복구 도구를 사용하거나, fsck가 필요 없는 구조를 가지고 있다. fsck는 1980년 벨 연구소에서 처음 등장했으며, "Go fsck yourself"와 같은 완곡한 표현으로도 사용된다.

더 읽어볼만한 페이지

  • 유닉스 파일 시스템 관련 소프트웨어 - Filesystem in Userspace
    Filesystem in Userspace (FUSE)는 사용자 공간에서 파일 시스템을 구현하는 인터페이스로, 커널 수정 없이 파일 시스템 개발을 가능하게 하며, libfuse 라이브러리를 통해 다양한 운영체제 및 프로그래밍 언어를 지원한다.
  • 유닉스 파일 시스템 관련 소프트웨어 - Chmod
    chmod는 파일 및 디렉터리의 접근 권한을 변경하는 유닉스 명령어이며, 문자열 또는 숫자 모드를 사용하여 권한을 설정하고 재귀적으로 하위 디렉터리에도 적용할 수 있다.
  • 파일 시스템 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
  • 파일 시스템 - ZFS
    ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
Fsck - [IT 관련 정보]에 관한 문서
일반 정보
이름fsck
종류명령어
용도파일 시스템 무결성 검사 도구
운영체제유닉스 및 유닉스 계열
상세 정보
기능파일 시스템의 일관성을 점검하고 오류를 복구
사용법fsck [옵션] [파일 시스템]
참고 페이지
fsck(8) - Linux man page (die.net)

2. 사용

`fsck`는 파일 시스템의 무결성을 검사하고 오류를 복구하는 유틸리티이다. 일반적으로 부팅 시 자동으로 실행되거나, 필요한 경우 시스템 관리자가 수동으로 실행할 수 있다.[1][2] 이 명령어는 디스크에 저장된 데이터 구조에 직접 작용하며, 작동 방식은 해당 파일 시스템의 종류에 따라 달라진다. 따라서 특정 파일 시스템에 맞는 `fsck` 구현체가 사용된다.[1][2] 다양한 `fsck` 구현체가 존재하지만, 사용자에게는 대체로 통일된 명령 줄 인터페이스를 제공한다.

손상된 파일 시스템을 복구할 때 여러 옵션(대화식, 자동, 검토)을 제공하며, 복구 과정에서 원본 파일 이름을 알 수 없는 파일 조각은 보통 파일 시스템 루트의 "lost+found" 디렉터리에 저장된다. 시스템 관리자는 파일 시스템에 문제가 의심될 때 `fsck`를 수동으로 실행할 수 있으며, 이때는 보통 파일 시스템을 마운트 해제하거나 읽기 전용으로 마운트한 상태에서 검사를 진행한다.

2. 1. 자동 실행

일반적으로 fsck는 부팅 시간에 자동으로 수행되거나 시스템 관리자에 의해 수동으로 수행될 수 있다. 이 명령어는 디스크에 저장된 데이터 구조에 대해 직접 동작하며 사용 중인 특정 파일 시스템에 맞춰 내부적으로 동작한다. 즉, 파일 시스템에 맞는 fsck 명령어가 필요하다. 여러 fsck 구현체의 정확한 동작은 다양할 수 있으나, 일반적으로 통일된 순서의 내부 동작을 따르며 통일된 명령 줄 인터페이스를 사용자에게 제공한다.

부팅 시 fsck는 사용자 개입 없이 실행될 것으로 예상되므로, 일반적으로 파괴적인 작업을 수행하지 않도록 기본 설정되어 있다. 이는 읽기 전용 검사 형태로(문제가 발견될 때마다 실패) 수행되거나, 더 일반적으로는 비정상 종료(예: 시스템 충돌, 전원 고장) 후에 흔히 발견되는 사소한 문제를 수정하는 "전정" 모드(`-p` 옵션)로 수행된다.[2]

ext2, ext3, ext4 파일 시스템은 지정된 마운트 횟수 후에 부팅 시 검사를 강제로 수행하는 옵션을 제공하여 주기적인 검사를 가능하게 한다.[3]

일부 최신 파일 시스템은 비정상 종료 후 부팅 시 fsck가 필요하지 않다. 몇 가지 예는 다음과 같다.

  • XFS: 저널링 파일 시스템으로, 실제로는 아무 작업도 하지 않는 더미 fsck를 가지고 있으며[4] 문제가 의심될 때 실행할 수 있는 실제 `'xfs_repair'` 도구가 있다.
  • UFS2: FreeBSD에서 소프트 업데이트가 활성화된 경우, 파일 시스템 검사를 백그라운드에서 수행하도록 지연시킬 수 있다.[5] 결과적으로 fsck가 완료될 때까지 기다리지 않고 디스크에 접근하는 것이 일반적이다. 이러한 설계는 부팅 시 사용되는 `-F` 플래그에 반영되어 있다.[2]
  • ZFSBtrfs: 두 파일 시스템 모두 완전한 카피 온 라이트(Copy-on-Write) 방식을 사용한다. 이 방식은 제자리 변경(in-place modification)을 피하여 저널링과 유사한 수준의 데이터 일관성을 보장한다. 이들도 더미 fsck를 제공한다.[6] 파일 시스템 구조에 문제가 의심될 경우(예: 소프트웨어 버그나 하드웨어 문제) `'btrfs-check'` 도구를 사용하여 확인할 수 있다.


파일 시스템 구조를 확인하는 것 외에도, 최신 파일 시스템은 미러링된 데이터나 체크섬을 이용하여 저장된 데이터의 조용한 손상(silent corruption)을 확인하는 데이터 스크러빙 도구를 제공하기도 한다. 스크러빙은 디스크의 모든 데이터를 검사하기 때문에 시간이 오래 걸리는 경향이 있지만, 주기적으로 실행하면 데이터 로트(data rot)를 방지하고 고장난 드라이브를 식별하는 데 도움이 될 수 있다.[7]

2. 2. 수동 실행

시스템 관리자는 파일 시스템에 문제가 있다고 판단될 경우 `'fsck'`를 수동으로 실행할 수 있다. 파일 시스템 검사는 일반적으로 해당 파일 시스템이 마운트 해제된 상태이거나, 읽기 전용으로 마운트된 상태, 혹은 시스템이 특수한 유지 관리 모드일 때 진행한다.

대부분의 `'fsck'` 유틸리티는 여러 실행 옵션을 제공한다.[1][2]

  • 대화식 복구: 사용자가 각 문제에 대한 해결 방법을 직접 선택한다.
  • 자동 복구: 사용자 확인 없이 `'fsck'`가 자동으로 문제를 해결한다.
  • 문제 검토: 실제 파일 시스템을 변경하지 않고 어떤 문제가 있는지 확인만 한다.


`'fsck'` 실행 과정에서 부분적으로 복구되었으나 원래 파일 이름을 재구성할 수 없는 파일들은 일반적으로 파일 시스템의 루트 디렉토리에 있는 "lost+found" 디렉토리로 옮겨진다.

2. 3. 실행 옵션

일반적으로 fsck는 부팅 시간에 자동으로 수행되거나 시스템 관리자에 의해 수동으로 수행될 수 있다. 이 명령어는 디스크에 저장된 데이터 구조에 대해 직접 동작하며, 사용 중인 특정 파일 시스템에 맞춰 내부적으로 다르게 동작한다. 따라서 해당 파일 시스템에 맞는 fsck 명령어가 필요하다.[1][2] 최신 시스템에서는 fsck가 파일 시스템 유형을 감지하고, 해당 유형에 특화된 fsck.''type'' (리눅스) 또는 fsck_''type'' (BSD, macOS) 프로그램을 호출하는 방식으로 작동하기도 한다.[1][2]

대부분의 fsck 유틸리티는 다음과 같은 실행 옵션을 제공한다.

  • 대화식 복구: 손상된 파일 시스템을 복구할 때 사용자에게 각 문제의 해결 방법을 묻는다.
  • 자동 복구: 사용자의 개입 없이 특정 문제를 자동으로 해결한다.
  • 검토: 파일 시스템의 문제를 실제로 해결하지 않고 검토만 한다.


부분적으로 복구되었으나 원본 파일 이름을 알 수 없는 파일들은 일반적으로 파일 시스템의 루트에 있는 "lost+found" 디렉터리에 저장된다.

시스템 관리자는 파일 시스템에 문제가 있다고 판단될 경우 fsck를 수동으로 실행할 수 있다. 이때 파일 시스템은 일반적으로 마운트 해제된 상태이거나, 읽기 전용으로 마운트된 상태, 또는 시스템이 특수한 유지 관리 모드일 때 검사한다.

부팅 시 자동으로 실행되는 fsck는 사용자 개입 없이 진행되므로, 기본적으로는 파괴적인 작업을 수행하지 않도록 설정된다. 읽기 전용 검사 형태로 실행되거나(문제가 발견되면 중단), 충돌이나 전원 고장 등으로 인해 깔끔하게 종료되지 않았을 때 발생하는 무해한 문제를 수정하는 "안전 점검" 모드(-p 옵션)로 실행되는 경우가 많다.[2] ext2, ext3, ext4 파일 시스템은 지정된 마운트 횟수 후에 부팅 시 검사를 강제하는 옵션을 통해 주기적인 검사를 수행할 수 있다.[3]

일부 최신 파일 시스템은 저널링이나 카피 온 라이트 같은 기술을 사용하여 예기치 않은 종료 후에도 fsck 검사 필요성을 줄였다.

  • XFS: 저널링 파일 시스템으로, 기본 fsck는 아무 작업도 하지 않는 더미(dummy) 형태이다.[4] 실제 검사와 복구는 xfs_repair 도구를 사용한다.
  • UFS2: FreeBSD에서 소프트 업데이트가 활성화된 경우, 백그라운드에서 검사를 수행하여 부팅 시간을 단축할 수 있다.[5] 부팅 시 사용되는 -F 플래그가 이를 반영한다.[2]
  • ZFS, Btrfs: 카피 온 라이트 파일 시스템으로, 데이터 변경 시 원본을 덮어쓰지 않아 일관성을 유지한다. 이들도 더미 fsck를 제공하며[6], 필요한 경우 별도의 검사 도구(예: btrfs-check)를 사용한다.


파일 시스템 구조 검사와 별개로, 최신 파일 시스템은 데이터 스크러빙 기능을 제공하기도 한다. 이는 디스크에 저장된 데이터의 체크섬 등을 확인하여 미러링된 데이터나 원본 데이터 자체의 잠재적인 손상(데이터 로트)을 감지하는 과정이다. 스크러빙은 디스크 전체를 읽어야 하므로 시간이 오래 걸리지만, 주기적으로 실행하면 데이터 무결성을 유지하고 고장 가능성이 있는 드라이브를 미리 식별하는 데 도움이 될 수 있다.[7]

3. 파일 시스템 유형별 fsck

일반적으로 fsck는 부팅 시간에 자동으로 수행되거나 시스템 관리자에 의해 수동으로 수행될 수 있다. 이 명령어는 디스크에 저장된 데이터 구조에 대해 직접 동작하며, 사용 중인 특정 파일 시스템에 내부적으로 특정하여 동작한다. 즉, 파일 시스템에 맞추어진 fsck 명령어는 일반적으로 필수적이다. 여러 fsck 구현체의 정확한 동작들은 다양할 수 있으나, 이들은 일반적으로 통일된 순서의 내부 동작을 준수하며 통일된 명령 줄 인터페이스를 사용자에게 제공한다. 최신 시스템에서는 fsck가 단순히 파일 시스템의 유형을 감지하고 각 유형에 대해 특화된 `fsck.''type''` (리눅스) 또는 `fsck_''type''` (BSD, macOS) 프로그램을 호출한다.[1][2]

대부분의 fsck 유틸리티는 다음과 같은 옵션을 제공한다:


  • 손상된 파일 시스템을 대화식으로 복구하는 옵션 (사용자가 특정 문제를 해결하는 방법을 결정해야 함)
  • 특정 문제를 자동으로 해결하는 옵션 (사용자가 질문에 답할 필요 없음)
  • 실제로 해결하지 않고 파일 시스템에서 해결해야 할 문제를 검토하는 옵션


원래 파일 이름을 재구성할 수 없는 부분적으로 복구된 파일은 일반적으로 파일 시스템의 루트에 저장된 lost+found 디렉터리로 복구된다.

시스템 관리자는 파일 시스템에 문제가 있다고 생각되면 fsck를 수동으로 실행할 수도 있다. 파일 시스템은 일반적으로 마운트 해제된 상태, 읽기 전용으로 마운트된 상태 또는 시스템이 특수한 유지 관리 모드일 때 검사된다.

4. 역사

fsck는 1980년 벨 연구소의 "V7 부록 테이프"에 처음 등장했다.[8][9] 원시적인 비 래퍼(non-wrapper) 형태는 1995년 X/Open의 초안인 ''시스템 관리: 파일 시스템 및 스케줄링 유틸리티 (FSSU)''에 존재한다.[10] 이후 1998년 NetBSD 1.3 버전에서 현대적인 래퍼(wrapper) 형태로 발전했다. fsck는 현재까지 특정 표준으로 정의되어 있지는 않다.[2]

5. 완곡한 표현

파일 시스템 손상이 심각할 경우 문제가 크기 때문에, 유닉스 시스템 관리자들 사이에서는 "fsck"와 "fscked"라는 용어가 비속어인 "빌어먹을(fuck)"과 "빌어먹은(fucked)"을 대신하는 완곡 어구로 사용되기도 한다.[11]

이 표현이 먼저 생겨서 프로그램 이름에 영향을 준 것인지, 아니면 프로그램 이름 때문에 이런 표현이 생긴 것인지는 명확하지 않다. 하지만 1998년 USENIX의 질의응답 세션에서 데니스 리치는 "fsck"의 원래 이름이 달랐다고 언급했다.

:'''데니스 리치''': ''"그래서 fsck는 원래 다른 이름으로 불렸습니다."''

:'''질문''': ''"그게 뭐였는데요?"''

:'''데니스 리치''': ''"음, 두 번째 글자가 달랐죠."''[12][13]

이 일화는 2023년 12월 17일, 롭 파이크가 소셜 네트워크 서비스인 마스토돈에서 다시 한번 확인해주었다. 롭 파이크는 다음과 같이 설명했다.

:테드 코왈스키(사용자 이름 frodo, 편히 잠들기를), 그는 원래 프로그래머였고, 머레이 힐에 있는 내 사무실 바로 옆에서 일했습니다. 그의 프로그램 이름에는 지금 's'가 있는 자리에 'u'가 있었습니다. 경영진은 그에게 배포를 위해 이름을 바꾸도록 했지만 발음을 바꾸도록 할 수는 없었습니다.[14]

온라인에서는 "Go fsck yourself"라는 표현이 사용되기도 하는데, 이는 상대방에게 자신의 문제점(태도, 무지 등)을 스스로 해결하라는 의미이다. 이는 마치 fsck 명령어를 실행하여 시스템 오류를 고치는 것에 빗댄 표현이다.

6. 예제

다음은 파일 시스템 검사를 위한 `fsck` 명령어 사용 예시이다. 자세한 설명은 각 하위 섹션을 참고한다.


  • `/usr` 파티션에 마운트되도록 구성된 파일 시스템 검사:



fsck /usr


  • mdadm 소프트웨어 RAID 장치의 리눅스 JFS 파일 시스템 검사:



fsck -t jfs /dev/md0


6. 1. 리눅스 JFS 파일 시스템 검사

다음은 `/usr` 파티션에 마운트되도록 구성된 파일 시스템을 검사하는 예시이다. 검사 전에 해당 파일 시스템은 마운트 해제되어 있어야 한다.



fsck /usr



다음은 mdadm 소프트웨어 RAID 장치에 있는 리눅스 JFS 파일 시스템을 검사하는 예시이다. `-t` 옵션을 사용하여 파일 시스템 유형을 `jfs`로 지정한다.



fsck -t jfs /dev/md0


6. 2. 파일 시스템 검사 (일반)

다음은 `/usr` 파티션에 마운트되도록 구성된 파일 시스템을 검사하는 예시이다. 파일 시스템은 검사 전에 반드시 언마운트(unmount) 상태여야 한다.



fsck /usr



다음은 mdadm 소프트웨어 RAID 장치의 리눅스 JFS 파일 시스템을 검사하는 예시이다. `-t` 옵션을 사용하여 파일 시스템 유형을 명시적으로 지정할 수 있다.



fsck -t jfs /dev/md0


참조

[1] man fsck Linux
[2] man fsck FreeBSD
[3] man tune2fs Linux
[4] man fsck.xfs Linux
[5] man fsck_ffs FreeBSD
[6] man fsck.btrfs Linux
[7] 웹사이트 Scheduled Pool Scrubs in Oracle Solaris ZFS https://blogs.oracle[...]
[8] 뉴스 "fgrep" doesn't always match everything it should http://chambers.nycb[...] 1986-04-18
[9] 웹사이트 README https://www.tuhs.org[...]
[10] 웹사이트 Systems Management: File System and Scheduling Utilities (FSSU) https://pubs.opengro[...] 1995
[11] 웹사이트 fscking http://www.catb.org/[...] 1999-09-24
[12] 웹사이트 Report from Usenix https://groups.googl[...] Usenet 2016-02-20
[13] 웹사이트 Mind Fsck http://www.c2.com/cg[...] C2
[14] Citation Rob Pike on Mastodon: the truth on fsck pronunciation and original naming https://hachyderm.io[...] 2023-12-18
[15] 웹인용 fsck(8) - Linux man page http://linux.die.net[...] die.net 2013-05-07
[16] 웹인용 running "fuck" twice almost gave me a heartattack · Issue #1 · nvbn/thefuck https://github.com/n[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com