Linux 서버 파일 시스템 오류 복구 방법
Linux 서버의 파일시스템 오류가 의심되면, 서버 접속 콘솔을 통해 파일시스템 복구를 진행해 주십시오.
I/O 에러 발생 여부는 직접 서버에 접근하여 확인하거나, 접속이 되지 않는 경우에는 서버 콘솔 screenshot 메뉴를 통해 확인이 가능합니다.
VM에 파일 시스템 오류가 발생한 경우, 아래와 같은 증상들이 발생합니다.
-
Case 1) I/O 에러가 발생합니다.
-
Case 2) initramfs 프롬프트 복구 모드에 빠져있습니다.
Linux 파일시스템 복구 명령어
Linux 파일시스템의 복구를 위해서는 fsck
혹은 xfs_repair
명령어를 사용합니다.
- fsck는 ext4 파일시스템 검사 및 복구 도구입니다.
- xfs_repair는 XFS 파일시스템 검사 및 복구 도구입니다.
fsck
명령어 실행 시 지원하는 옵션 정보들은 다음과 같습니다.
옵션 | 설명 |
---|---|
-y | 모든 질문에 대한 응답을 yes로 취급하여 파일시스템 복구를 자동으로 실행합니다. |
-n | 모든 질문에 대한 응답을 no로 취급하여 파일시스템에 대한 체크만 진행합니다. |
-a | 명령 수행에 대한 확인 질문을 하지 않고 자동으로 복구를 실행합니다. ※ 해당 옵션 수행을 권장하지 않습니다. |
-f | 파일 시스템의 이상 유무에 상관 없이 강제로 파일 시스템을 체크합니다. |
xfs_repair
명령어 실행 시 지원하는 옵션 정보들은 다음과 같습니다.
옵션 | 설명 |
---|---|
-n | 실제 복구 작업을 수행하지 않고 파일시스템에 대한 체크만 진행합니다. |
-f | 마운트 되어있지 않은 파일시스템이나 파일에 대해 강제로 체크합니다. |
-L | f 옵션보다 강력한 옵션으로, 강제로 로그를 비우며 파일 시스템 복구를 수행합니다. ※ 데이터 손실이 발생할 수 있습니다. |
1) 파일시스템 오류 복구 준비
1-1) 파티션명과 파일시스템 타입 확인
-
부팅에 실패한다면 기본 스토리지의 파일시스템 오류를 의심해 볼 수 있습니다.
-
서버가 부팅은 되었으나 파일시스템 관련 오류가 발생하였다면 추가 스토리지의 파일시스템 오류를 의심해 볼 수 있습니다.
파일시스템 관련 오류는 /var/log/messages에 남게 되며, 콘솔의 I/O 에러 내용에서도 문제가 발생한 디스크를 확인할 수 있습니다.
- 파티션 확인 :
cat /proc/partitions
[root@servera ~]# cat /proc/partitions
major minor #blocks name
202 0 52428800 xvda
202 1 1024 xvda1
202 2 52425728 xvda2
- 파일시스템 타입 확인 :
blkid
[root@servera ~]# blkid
/dev/xvda1: UUID="f95bed0a-11af-4b2c-bfcc-4afb91a68fc1" TYPE="xfs"
/dev/xvda2: UUID="0692fdb8-bb3c-4094-83f0-fe95a339b8c1" TYPE="xfs"
1-2) 스냅샷 생성
복구 작업 전 Snapshot 생성가이드를 참고하여 스냅샷을 생성해 주십시오.
잘못된 복구 시도로 인해 서버가 망가질 경우를 대비하여 스냅샷을 생성한 후 복구를 진행하는 것을 권고드립니다.
2) 기본 스토리지에 파일시스템 오류가 발생한 경우
-
기본 스토리지에 오류가 발생하면 root file system check와 mount에 실패하며 initramfs로 빠지게 됩니다.
-
initramfs 쉘에서 기본 스토리지에 대해 파일 시스템 체크를 수행해 주십시오.
아래는 문제가 발생한 디바이스가 /dev/xvda1인 경우에 대한 예시입니다.
파일시스템 | 명령어 |
---|---|
ext4 | fsck.ext4 /dev/xvda1 |
xfs | xfs_repair /dev/xvda1 ⚠️ 옵션 미사용으로 복구 불가시에는 -L 옵션을 추가하여 수행해주세요. -L 옵션 사용시 데이터 손실이 있을 수 있습니다. xfs_repair -L /dev/xvda1 |
- 파일시스템 체크를 한 번 더 진행한 후 clean이 출력되면 서버를 리부팅 하십시오.
3) 추가 스토리지에 파일시스템 오류가 발생한 경우
- 추가스토리지에 파일 시스템 오류가 발생한 경우, 오류가 발생한 디바이스의 마운트를 해제해 주십시오.
umount /dir (/dir : 추가스토리지 영역 마운트 디렉토리)
언마운트가 정상적으로 진행되지 않는 경우 언마운트 강제 명령어 또는 fuser 명령어를 통해서 특정 파일이나 파일 시스템, 포트 등에서 사용 중인 프로세스를 확인 및 종료해야 합니다.
- 언마운트 강제 명령어
umount -l /mnt/a
umount -f /mnt/a
- fuser 명령어 사용 순서
fuser -cu /mnt/a
로 디렉터리를 사용하는 사용자 또는 프로세스 확인fuser -ck /mnt/a
로 프로세스 강제 종료umount /mnt/a
로 언마운트 수행
- 오류가 발생한 디바이스에 파일시스템 체크를 수행해 주십시오.
아래는 문제가 발생한 디바이스가 /dev/xvdb1인 경우에 대한 예시입니다.
파일시스템 | 명령어 |
---|---|
ext4 | fsck.ext4 /dev/xvdb1 |
xfs | xfs_repair /dev/xvdb1 ⚠️ 옵션 미사용으로 복구 불가시에는 -L 옵션을 추가하여 수행해주세요. -L 옵션 사용시 데이터 손실이 있을 수 있습니다. xfs_repair -L /dev/xvdb1 |
- 추가스토리지에 대해 파일시스템 체크를 진행한 경우, 추가스토리지를 다시 마운트해 주십시오.
- /etc/fstab 에 추가스토리지 영역에 대한 마운트 설정이 되어있는 경우
mount -a
- 직접 mount 수행
mount /dir (/dir : 추가스토리지 영역 마운트 디렉토리)
- 파일시스템 체크를 한 번 더 진행한 후 clean이 출력되면 서버를 리부팅해 주십시오.
4) 서버 재시작
fsck
또는 xfs_repair
를 시도한 이후에도 파일 시스템이 복구되지 않았다면 OS 강제 리부팅이 필요합니다.
- 사용자 콘솔에서 리부팅을 진행해 주십시오.
재시작 → 재시작실패 → 강제정지 → 시작
위 절차들을 수행한 이후에도 서버 정상화가 되지 않는 경우에는 스냅샷을 통한 데이터 복구가 필요합니다.
Snapshot 을 이용한 Block storage 생성을 참고해 주십시오.
Windows 서버 파일 시스템 오류 복구 방법
Windows 파일시스템 복구 명령어
Windows 파일시스템의 복구를 위해서는 chkdsk
명령어를 사용합니다.
chkdsk 는 파일 시스템 점검 및 복구를 지원하는 Windows Tool입니다.
옵션 없이 실행할 경우, 기본 스토리지를 점검만 수행합니다.
chkdsk 수행 중에 중간에 취소하거나 중단할 경우, 그 전 상태보다 더 손상되지는 않지만 권장하지 않습니다.
chkdsk가 완전히 실행 완료될 때까지 기다리는 것이 안전합니다.
chkdsk
명령어 실행 시 지원하는 옵션 정보들은 다음과 같습니다.
옵션 | 설명 |
---|---|
/f | 발견한 에러들을 복구합니다. 해당 옵션을 적용할 경우, 드라이브는 lock 상태여야 합니다. lock 상태가 아닐 경우, 다음 리부팅 시 드라이브 체크 예약 여부에 대한 메세지가 나타납니다. |
/r | bad sector 들을 찾아 읽을 수 있는 정보를 복구합니다. 해당 옵션을 적용할 경우, 드라이브는 lock 상태여야 합니다. |
/x | 필요한 경우 드라이브를 강제로 dismount 합니다. 또한, 드라이브에 열려있는 모든 핸들을 무효화 합니다. |
자세한 내용은 Microsoft 아티클을 참고해 주십시오.
1) OS hang 이 발생한 경우
- 사용자 콘솔에서 리부팅을 진행해 주십시오.
재시작 → 재시작실패 → 강제정지 → 시작
리부팅 후에도 서버 정상화가 되지 않는 경우에는 스냅샷을 통한 데이터 복구가 필요합니다.
Snapshot 을 이용한 Block storage 생성을 참고해 주십시오.
2) 기본 스토리지에 파일시스템 오류가 발생한 경우
- 다음 명령어를 입력해 chkdsk 를 실행해 주십시오.
chkdsk C: /f /r /x
- 기본 스토리지의 경우, 현재 사용 중으로 다음 리부팅 시 드라이브 체크 예약 여부에 대한 메세지가 나타납니다. Y 를 입력해 주십시오.
- 리부팅을 진행해 주십시오.
3) 추가 스토리지에 파일시스템 오류가 발생한 경우
run - diskmgmt.msc
명령어를 입력해 복구하고자 하는 추가 스토리지의 드라이브명을 확인해 주십시오.- 다음 명령어를 입력해 chkdsk 를 실행해 주십시오.
chkdsk <드라이브명> /f /r /x