Linux에서 fsck 명령을 사용하는 방법

게시 됨: 2022-01-29
바이너리 코드가 위에 쓰여진 하드 디스크 드라이브.
Pixza 스튜디오/Shutterstock

우리의 모든 중요한 데이터는 한 가지 유형 또는 다른 유형의 파일 시스템에 있으며 파일 시스템 문제는 반드시 발생합니다. Linux에서는 fsck 명령을 사용하여 파일 시스템 오류를 찾고 수정할 수 있습니다.

파일 시스템은 소프트웨어

파일 시스템은 컴퓨터의 가장 중요한 구성 요소 중 하나입니다. 파일 시스템이 없으면 컴퓨터는 해당 드라이브가 회전하는 기계 플래터이든 솔리드 스테이트 드라이브이든 관계없이 하드 드라이브에 데이터를 저장할 수 없습니다. 실제로 운영 체제를 하드 드라이브에 설치하려면 먼저 파일 시스템을 만들어야 합니다. 운영 체제 파일을 저장할 무언가가 있어야 합니다. 따라서 설치 과정에서 파일 시스템이 생성됩니다.

초보자를 위한 10가지 기본 Linux 명령
관련 10 초보자를 위한 기본 Linux 명령

파일 시스템은 소프트웨어에 의해 생성되고 소프트웨어에 의해 쓰여지고 소프트웨어에 의해 읽힙니다. 아시다시피 모든 복잡한 소프트웨어에는 버그가 있습니다. 우리의 데이터는 우리에게 매우 중요하므로 파일 시스템과 이를 생성하고 사용하는 소프트웨어를 신뢰하고 있습니다. 문제가 발생하면 파일 시스템의 일부 또는 전체 파티션에 대한 액세스 권한을 잃을 수 있습니다.

최신 저널링 파일 시스템은 갑작스러운 정전이나 시스템 충돌로 인해 발생할 수 있는 문제를 더 잘 처리합니다. 그들은 강하지만 무적은 아닙니다. 내부 테이블이 스크램블되면 드라이브에서 각 파일의 위치, 파일 크기, 파일 이름, 파일 사용 권한이 설정되어 있는지 추적하지 못할 수 있습니다.

fsck 명령을 사용하면 파일 시스템이 정상인지 확인할 수 있습니다. 문제가 발견되면 일반적으로 문제를 해결할 수도 있습니다.

실행 전 확인 수행

fsck 를 사용하려면 sudo 권한이 필요합니다. 파일 시스템을 변경할 수 있는 모든 명령은 주의 깊게 다루어야 하며 자신이 하는 일을 아는 사람으로 제한해야 합니다.

광고

조종사는 항공기에 뛰어들어 시동을 걸고 저쪽의 옅은 파란색으로 날아가지 않습니다. 그들은 비행 전 검사를 합니다. 달리 하기에는 너무 많은 위험이 있습니다. 발전시키는 좋은 습관입니다. fsck 를 사용하기 전에 올바른 드라이브에서 사용할 것인지 확인해야 합니다. 따라서 fsck 로 무엇이든 하기 전에 약간의 정찰을 할 것입니다.

우리는 fdisk 로 시작하여 less 에 파이프할 것입니다. 우리는 특정 파티션에 대한 정보를 요구하지 않습니다. -l (목록) 옵션을 사용하여 fdisk 는 "/proc/partitions" 파일(있는 경우)에서 찾은 모든 장치의 파티션 테이블을 나열합니다.

 sudo fdisk -l | 더 적은 

/dev/sda/dev/sdb 항목을 볼 수 있습니다. 파일을 스크롤하여 컴퓨터에 있을 수 있는 다른 항목을 볼 수 있습니다.

터미널 창에서 출력 관찰

/dev/sda /dev/sda1 , /dev/sda2/dev/sda3 으로 나열됩니다. 따라서 첫 번째 드라이브에 세 개의 파티션이 있습니다. parted 명령을 사용하여 조금 더 많은 정보를 볼 수 있습니다. 터미널 창에 파티션 테이블을 표시하기 위해 'print' 옵션을 사용할 것입니다.

 sudo parted /dev/sda '인쇄' 

파티션 테이블에 대한 정보 얻기

이번에는 각 파티션의 파일 시스템 유형을 포함하여 몇 가지 추가 정보를 얻습니다.

 모델: ATA VBOX 하드디스크(scsi) 
디스크 /dev/sda: 34.4GB 
섹터 크기(논리/물리): 512B/512B 
파티션 테이블: gpt 
디스크 플래그:

번호 시작 끝 크기 파일 시스템 이름 플래그 
1 1049kB 2097kB 1049kB bios_grub 
2 2097kB 540MB 538MB fat32 EFI 시스템 파티션 부팅, esp 
3 540MB 34.4GB 33.8GB ext4
광고

이 테스트 컴퓨터에는 세 개의 드라이브가 있습니다. 다음은 다른 두 드라이브 /dev/sdb/dev/sdc 에 대한 결과입니다. 이러한 파일 시스템에는 "이름" 필드가 없습니다.

 sudo parted /dev/sdb '인쇄'
 모델: ATA VBOX 하드디스크(scsi) 
디스크 /dev/sdb: 21.5GB 
섹터 크기(논리/물리): 512B/512B 
파티션 테이블: msdos 
디스크 플래그:

번호 시작 끝 크기 유형 파일 시스템 플래그 
1 1049kB 21.5GB 21.5GB 기본 ext4
 sudo parted /dev/sdc '인쇄'
 모델: ATA VBOX 하드디스크(scsi) 
디스크 /dev/sdc: 21.5GB 
섹터 크기(논리/물리): 512B/512B 
파티션 테이블: msdos 
디스크 플래그:

번호 시작 끝 크기 유형 파일 시스템 플래그
1 1049kB 21.5GB 21.5GB 기본 ext3

두 번째와 세 번째 드라이브는 크기가 같으며 각각 단일 파티션이 있습니다. 그러나 두 번째 드라이브의 파일 시스템은 ext4 이고 세 번째 드라이브의 파일 시스템은 이전 ext3 입니다.

Linux 터미널에서 저장 장치를 마운트 및 마운트 해제하는 방법
관련 Linux 터미널에서 저장 장치를 마운트 및 마운트 해제하는 방법

파티션 식별자를 fsck 에 전달하면 해당 파티션의 파일 시스템을 확인합니다. 그러나 마운트된 파일 시스템에서는 fsck 를 실행할 수 없습니다. 드라이브를 마운트 해제해야 합니다. 그렇게 하려면 파티션(따라서 파일 시스템)이 마운트되는 마운트 지점을 알아야 합니다.

df 명령을 사용하여 쉽게 찾을 수 있습니다.

 df /dev/sdb1
 df /dev/sdc1 

fsck 명령 사용

필요한 모든 정보가 있습니다. 가장 먼저 할 일은 검사할 파일 시스템을 마운트 해제하는 것입니다. 우리는 /dev/sdb /dev/sdb1 에서 파일 시스템에 대해 작업할 것입니다. 우리는 이것이 ext4 파일 시스템이고 "/run/mount/dave/sata2"에 마운트된다는 것을 앞서 보았습니다.

umount 명령을 사용하겠습니다. "umount"에는 "n"이 없습니다.

 sudo umount /run/mount/dave/sata2 

umount 명령을 사용하여 파일 시스템을 마운트 해제합니다.

광고

umount 를 사용하면 아무 소식도 좋은 소식이 없습니다. 자동으로 명령 프롬프트로 돌아가면 작업을 계속할 수 있습니다.

 sudo fsck /dev/sdb1 

fsck 명령을 사용하여 파일 시스템의 상태를 확인하십시오.

이 파일 시스템은 깨끗한 것으로 보고되었습니다. 이는 파일 시스템이 오류나 문제가 없다고 보고함을 의미합니다. 심층 파일 시스템 검사는 자동으로 수행되지 않습니다. fsck 가 셸에 반환한 반환 코드도 볼 수 있습니다.

 에코 $? 

반환 값 0은 오류가 없음을 나타냅니다. 가능한 반환 코드는 다음과 같습니다.

  • 0 : 오류 없음
  • 1 : 파일 시스템 오류 수정
  • 2 : 시스템을 재부팅해야 합니다.
  • 4 : 수정되지 않은 파일 시스템 오류
  • 8 : 작동 오류
  • 16 : 사용 또는 구문 오류
  • 32 : 사용자 요청에 의한 체크 취소
  • 128 : 공유 라이브러리 오류

파일 시스템이 깨끗한 것으로 보고되었음에도 불구하고 -f (강제) 옵션을 사용하여 파일 시스템 검사를 강제로 수행할 수 있습니다.

 sudo fsck /dev/sdb1 -f 

fsck 명령에서 force 옵션을 사용하여 파일 시스템 검사를 강제 실행합니다.

이번에는 검사를 완료하는 데 시간이 더 오래 걸리지만 파일 시스템에 대한 보다 철저한 테스트를 수행합니다. 우리 파일 시스템은 실제로 깨끗했으며 오류가 보고되지 않았습니다. 테스트를 수행하는 동안 문제가 발견되면 fsck 가 문제를 해결하도록 하거나 오류를 무시하라는 메시지가 표시됩니다.

테스트가 끝나면 파일 시스템을 다시 마운트해야 합니다. 이를 수행하는 가장 쉬운 방법은 -a (모두) 옵션과 함께 mount 를 사용하는 것입니다. 이것은 "/etc/fstab"에서 파일 시스템 목록을 확인하고 일반 부팅을 수행하는 것처럼 모두 마운트되었는지 확인합니다.

 sudo 마운트 -a 

마운트 명령을 사용하여 파일 시스템 다시 마운트

어떤 Linux 파일 시스템을 사용해야 합니까?
관련 어떤 Linux 파일 시스템을 사용해야 합니까?

파티션에 어떤 유형의 파일 시스템이 있는지 fsck 에 알릴 필요는 없습니다. 유틸리티는 파일 시스템을 검사하여 확인합니다. 즉, ext4 파티션인 /dev/sdb1 에서 사용한 것과 똑같은 명령을 사용하여 테스트 PC의 ext3 파일 시스템인 /dev/sdc1 에서 파일 시스템 검사를 강제할 수 있습니다.

 sudo fsck /dev/sdc1 -f 

fsck 명령을 사용하여 파일 시스템 검사를 강제 실행

광고

파일 시스템 수정에 직접 뛰어들고 싶지 않을 수도 있습니다. 도약하기 전에 보는 것이 좋습니다. 아무 것도 수정하지 않고 터미널 창에 문제를 보고하도록 fsck 에 요청할 수 있습니다. -N (테스트 실행) 옵션은 다음을 수행합니다.

 sudo fsck -N /dev/sdb1 

파일 시스템을 복구하기 전에 테스트 실행

그 반대는 fsck 에 오류를 발견한 경우 메시지를 표시하지 않고 계속 진행하여 수정하도록 지시하는 것입니다. 이렇게 하려면 -y (프롬프트 없음) 옵션을 사용합니다.

 sudo fsck -y /dev/sdb1

루트 파티션에서 fsck 사용

마운트된 파티션에서는 fsck 를 사용할 수 없지만 컴퓨터를 부팅하려면 루트 파티션을 마운트해야 합니다. 그렇다면 루트 파티션에서 fsck 를 어떻게 실행할 수 있습니까? 대답은 부팅 프로세스를 중단하고 복구 모드에서 fsck 를 실행하는 것입니다.

컴퓨터가 부팅되는 동안 "Shift" 키를 누르고 있습니다. 시간을 제대로 맞추면 Linux로 부팅되지 않습니다. 부팅 프로세스는 흑백 메뉴에서 중지됩니다. 이 기사에 사용된 테스트 머신은 Ubuntu를 실행했지만 다른 배포판에는 모양이 다를 수 있지만 동일한 유형의 메뉴가 있습니다. 스크린샷에서 "Ubuntu"라고 표시된 곳에 배포 이름이 표시됩니다.

고급 옵션 메뉴 항목이 선택된 복구 메뉴

"Ubuntu용 고급 옵션" 메뉴 항목이 선택되도록 "위쪽 화살표" 및 "아래쪽 화살표" 키로 강조 표시줄을 이동합니다. "Enter"를 눌러 다음 화면으로 이동합니다.

"복구 모드" 메뉴 항목이 선택된 복구 메뉴

광고

"(복구 모드)"로 끝나는 옵션을 선택하십시오. 이 예에서는 "Ubuntu, with Linux 5.11.0-20-generic(복구 모드)"입니다. "Enter" 키를 누르십시오.

복구 메뉴가 표시됩니다. "fsck check all file systems"를 선택하고 "Tab" 키를 눌러 강조 표시를 "OK" 버튼으로 이동합니다. 엔터 키를 치시오."

fsck가 선택된 복구 메뉴

루트 파티션이 "/etc/fstab" 파일에 정의된 다른 파티션과 함께 마운트된다는 알림이 표시됩니다.

대화식 모드에서 fsck를 시작하려면 예를 선택하십시오.

"Tab" 키를 눌러 강조 표시를 "예" 버튼으로 이동하고 "Enter"를 누릅니다.

fsck 가 대화식 모드에서 실행되는 것을 볼 수 있습니다. 문제가 있는 경우 fsck 가 문제를 수정하도록 할 것인지 아니면 무시할 것인지 묻는 메시지가 표시됩니다. 파일 시스템이 확인되면 복구 메뉴가 다시 표시됩니다.

"재개" 옵션을 선택하고 "Tab" 키를 눌러 강조 표시를 "확인" 버튼으로 이동한 다음 "Enter"를 누릅니다. 부팅 프로세스가 다시 시작되고 Linux로 부팅됩니다.

광고

복구 모드 부팅은 일부 드라이버에 영향을 줄 수 있으므로 Linux로 부팅하는 즉시 다시 한 번 재부팅하는 것이 좋습니다. 이렇게 하면 컴퓨터가 표준 방식으로 작동합니다.

일이 잘못될 때

안전망은 이유가 있습니다. fsck 명령에 대해 알아보십시오. 언젠가 화를 내면서 사용해야 할 필요가 생긴다면 미리 익숙해진 것이 다행일 것입니다.

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북