파일 시스템 확인 및 수정: fsck
명령어
1. 왜 파일 시스템 검사가 중요할까?
Linux에서 파일 시스템은 사실상 OS에서 가장 바쁜 "직원" 중 하나야. 너가 파일을 저장하거나, 프로그램을 열거나, 단순히 데이터를 읽을 때에도 열심히 일하고 있어. 그런데 상상해봐: 정말 중요한 순간에 이 직원이 지쳐서 쓰러져 버렸다고 (즉, 전원이 꺼져서 시스템이 종료된 상황이야). 이러면 파일 테이블이 손상되거나 데이터가 손실되거나 여러 가지 골치 아픈 문제가 생길 수 있어.
그런데 뭐가 잘못될 수 있을까?
- 갑작스러운 전원 차단 — 데이터 기록을 끝내지 못한 채로 기기가 갑자기 꺼졌어.
- 저장 오류 — 하드 디스크나 SSD가 하드웨어적인 문제를 겪어 파일 시스템이 손상될 수 있어.
- 소프트웨어 오류 — 드라이버나 시스템 유틸리티에 버그가 있을 가능성도 있어.
이런 일이 발생하면 종종 파일 시스템이 망가져서 시스템이 상태를 검사해달라고 요청할 수도 있어. 바로 이때 fsck
가 등장하는 거지. 이건 File System Check의 약자야.
2. fsck
가 뭐고 어떻게 작동해?
도구의 아이디어
fsck
— 이건 파일 시스템의 무결성을 검사하고 발견된 오류를 수정해주는 범용 유틸리티야. 이건 마치 의사 같아: 테스트를 하고 문제를 찾아서, 가능하면 "치료"를 해줘. 문제가 너무 심각하면, fsck
는 적어도 뭐가 잘못됐는지 진단할 수 있어.
fsck
는 언제 사용해?
- 파일에 명백한 문제가 있을 때 (예를 들어, 갑자기 "사라졌을 때").
- 시스템이 부팅되지 않고 파일 시스템 오류를 알릴 때.
- 정기적으로 점검하면서 모든 게 정상인지 확인하려고 할 때.
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.
이것은 마운트된 파일 시스템을 검사하면 데이터가 손상될 가능성이 있기 때문입니다. 이 문제를 해결하는 몇 가지 방법이 있습니다.
- 장치를 읽기 전용 모드로 마운트하세요.
mount -o remount,ro /dev/sdb1
- LiveCD 또는 LiveUSB를 사용하세요.
부팅 가능한 디스크 또는 USB로 부팅하여 이미 마운트 해제된 장치에서 검사를 수행하세요.
- 복구 모드를 사용하세요.
복구 모드로 시스템을 재부팅하면 검사를 수행하기에 안전한 환경을 제공합니다.
루트 파일 시스템 /
검사의 특징
루트 파일 시스템은 시스템에서 적극적으로 사용되기 때문에 특별한 경우입니다. 이러한 파티션에서 fsck
를 실행하려면 다음이 필요합니다:
- 다음 명령어를 사용하여 단일 사용자 모드로 전환합니다:
systemctl isolate rescue.target
fsck
를 수동으로 실행합니다:
fsck -y /
6. 일반적인 오류와 수정 방법
손상된 inodes
fsck
에서 inode(파일에 대한 정보를 저장하는 구조)가 손상되었다고 보고하면, 이를 삭제하라는 메시지가 나올 거야. 이 작업은 안전한 편인데, 왜냐하면 손상된 inode는 더 이상 현재 파일과 연결되지 않거든.
유실된 파일
가끔 fsck
를 실행한 후 유실된 파일들이 파일 시스템 루트에 있는 lost+found
디렉토리로 이동하게 돼. 중요한 데이터를 복구하려면 이 위치를 수동으로 확인해봐.
중요한 추천 사항
검사 전에 항상 백업을 만들어.
fsck
는 보통 안전하게 작동하지만, 수정 과정에서 데이터가 손실될 수도 있어.마운트된 파티션에서
fsck
를 실행하지 마. 그렇게 하면 데이터가 손상될 수도 있어.초기 분석에는
-n
플래그를 사용해 봐. 오류를 자동으로 수정해야 할지 확신이 없다면, 시뮬레이션 실행으로 시작해봐.
7. 예제: 오류 시뮬레이션 및 수정
- 가상 디스크를 생성하고 그 위에 파일 시스템을 만드세요:
dd if=/dev/zero of=./disk.img bs=1M count=100
mkfs.ext4 ./disk.img
- 디스크를 마운트하세요:
sudo mount ./disk.img /mnt/test/
- 손상을 시뮬레이션 하세요:
sudo dd if=/dev/zero of=/mnt/test/randomfile bs=512 count=10
- 디스크를 언마운트하고 검사하세요:
sudo umount /mnt/test/
fsck ./disk.img
명령어의 출력에 따라 오류를 수정하세요.
이 단계에서는 파일 시스템 검사에 자신감을 가지고, 오류를 올바르게 해결하고 장애를 예방할 수 있게 되었어요. 앞으로 파일 시스템을 다루기 위한 새로운 도구들이 기다리고 있지만, fsck
은 이제 진단 및 수정에 있어 신뢰할 수 있는 도구가 되었어요.
GO TO FULL VERSION