CodeGym /행동 /Docker SELF /파일 시스템 확인 및 수정: fsck 명령어

파일 시스템 확인 및 수정: fsck 명령어

Docker SELF
레벨 6 , 레슨 2
사용 가능

파일 시스템 확인 및 수정: fsck 명령어

1. 왜 파일 시스템 검사가 중요할까?

Linux에서 파일 시스템은 사실상 OS에서 가장 바쁜 "직원" 중 하나야. 너가 파일을 저장하거나, 프로그램을 열거나, 단순히 데이터를 읽을 때에도 열심히 일하고 있어. 그런데 상상해봐: 정말 중요한 순간에 이 직원이 지쳐서 쓰러져 버렸다고 (즉, 전원이 꺼져서 시스템이 종료된 상황이야). 이러면 파일 테이블이 손상되거나 데이터가 손실되거나 여러 가지 골치 아픈 문제가 생길 수 있어.

그런데 뭐가 잘못될 수 있을까?

  1. 갑작스러운 전원 차단 — 데이터 기록을 끝내지 못한 채로 기기가 갑자기 꺼졌어.
  2. 저장 오류 — 하드 디스크나 SSD가 하드웨어적인 문제를 겪어 파일 시스템이 손상될 수 있어.
  3. 소프트웨어 오류 — 드라이버나 시스템 유틸리티에 버그가 있을 가능성도 있어.

이런 일이 발생하면 종종 파일 시스템이 망가져서 시스템이 상태를 검사해달라고 요청할 수도 있어. 바로 이때 fsck가 등장하는 거지. 이건 File System Check의 약자야.


2. fsck가 뭐고 어떻게 작동해?

도구의 아이디어

fsck — 이건 파일 시스템의 무결성을 검사하고 발견된 오류를 수정해주는 범용 유틸리티야. 이건 마치 의사 같아: 테스트를 하고 문제를 찾아서, 가능하면 "치료"를 해줘. 문제가 너무 심각하면, fsck는 적어도 뭐가 잘못됐는지 진단할 수 있어.

fsck는 언제 사용해?

  1. 파일에 명백한 문제가 있을 때 (예를 들어, 갑자기 "사라졌을 때").
  2. 시스템이 부팅되지 않고 파일 시스템 오류를 알릴 때.
  3. 정기적으로 점검하면서 모든 게 정상인지 확인하려고 할 때.

3. fsck 기본 문법

fsck를 사용하려면 일반적으로 다음 명령어를 사용합니다:

fsck [옵션] <디바이스>

주요 옵션:

  • -y — 자동으로 수정을 확인합니다. 모든 질문에 yes를 누르지 않으려면 이 옵션이 유용합니다.
  • -n — 수정 없이 검사만 수행 (dry run). 상황을 분석하고 싶지만 뭔가 잘못될까 걱정된다면 유용합니다.
  • -t — 파일 시스템 유형을 지정합니다 (예: ext4, xfs).
  • -r — 대화형 모드 활성화 (각 수정 사항을 확인해야 합니다).

4. 실습: 파일 시스템 검사

간단한 검사부터 시작해보자. /dev/sdb1이라는 장치가 있다고 가정하고, 이 장치를 검사해보려고 해.

단계 1: 수정 없이 검사하기

먼저 파일 시스템의 상태를 변경 없이 평가해보자:

fsck -n /dev/sdb1

명령 실행 후, 문제가 있으면 발견된 문제 목록이 표시될 거야. 출력 예시는 아래와 같아:

손상된 고아 연결 목록에 속한 Inodes가 발견되었습니다.
파일 시스템 오류가 감지되었습니다. 수리를 위해 fsck를 실행하세요.

단계 2: 자동 수정

이제 오류 수정 모드를 활성화해보자:

fsck -y /dev/sdb1

fsck는 발견된 모든 오류를 수정하려고 시도하고, 동작을 자동으로 확인해줘. 장치가 크면 시간이 좀 걸릴 수 있어.


5. 파일 시스템이 사용 중인 경우 어떻게 해야 하나요?

fsck 실행 시 발생하는 오류

이미 마운트된 파티션에서 fsck를 실행하려고 하면 다음과 같은 경고를 받게 됩니다:

fsck: cannot check a mounted filesystem.

이것은 마운트된 파일 시스템을 검사하면 데이터가 손상될 가능성이 있기 때문입니다. 이 문제를 해결하는 몇 가지 방법이 있습니다.

  1. 장치를 읽기 전용 모드로 마운트하세요.
mount -o remount,ro /dev/sdb1
  1. LiveCD 또는 LiveUSB를 사용하세요.

부팅 가능한 디스크 또는 USB로 부팅하여 이미 마운트 해제된 장치에서 검사를 수행하세요.

  1. 복구 모드를 사용하세요.

복구 모드로 시스템을 재부팅하면 검사를 수행하기에 안전한 환경을 제공합니다.

루트 파일 시스템 / 검사의 특징

루트 파일 시스템은 시스템에서 적극적으로 사용되기 때문에 특별한 경우입니다. 이러한 파티션에서 fsck를 실행하려면 다음이 필요합니다:

  1. 다음 명령어를 사용하여 단일 사용자 모드로 전환합니다:
systemctl isolate rescue.target
  1. fsck를 수동으로 실행합니다:
fsck -y /

6. 일반적인 오류와 수정 방법

손상된 inodes

fsck에서 inode(파일에 대한 정보를 저장하는 구조)가 손상되었다고 보고하면, 이를 삭제하라는 메시지가 나올 거야. 이 작업은 안전한 편인데, 왜냐하면 손상된 inode는 더 이상 현재 파일과 연결되지 않거든.

유실된 파일

가끔 fsck를 실행한 후 유실된 파일들이 파일 시스템 루트에 있는 lost+found 디렉토리로 이동하게 돼. 중요한 데이터를 복구하려면 이 위치를 수동으로 확인해봐.

중요한 추천 사항

  1. 검사 전에 항상 백업을 만들어. fsck는 보통 안전하게 작동하지만, 수정 과정에서 데이터가 손실될 수도 있어.

  2. 마운트된 파티션에서 fsck를 실행하지 마. 그렇게 하면 데이터가 손상될 수도 있어.

  3. 초기 분석에는 -n 플래그를 사용해 봐. 오류를 자동으로 수정해야 할지 확신이 없다면, 시뮬레이션 실행으로 시작해봐.


7. 예제: 오류 시뮬레이션 및 수정

  1. 가상 디스크를 생성하고 그 위에 파일 시스템을 만드세요:
dd if=/dev/zero of=./disk.img bs=1M count=100
mkfs.ext4 ./disk.img
  1. 디스크를 마운트하세요:
sudo mount ./disk.img /mnt/test/
  1. 손상을 시뮬레이션 하세요:
sudo dd if=/dev/zero of=/mnt/test/randomfile bs=512 count=10
  1. 디스크를 언마운트하고 검사하세요:
sudo umount /mnt/test/
fsck ./disk.img

명령어의 출력에 따라 오류를 수정하세요.

이 단계에서는 파일 시스템 검사에 자신감을 가지고, 오류를 올바르게 해결하고 장애를 예방할 수 있게 되었어요. 앞으로 파일 시스템을 다루기 위한 새로운 도구들이 기다리고 있지만, fsck은 이제 진단 및 수정에 있어 신뢰할 수 있는 도구가 되었어요.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION