디스크 장애 추적하기

디스크 사진

목차

서버에서 가장 많은 문제의 원인은 대체로 디스크이다.

디스크가 가득 찼을 때

마운트돼 있는 모든 파티션의 크기, 사용중인 공간, 사용 가능한 공간 정보 보기.

df -h

디스크가 꽉찼다고 하더라도 막상 확인 해보면 디스크에는 예약 블록이라는 리눅스가 긴급 상황을 위해 파일 시스템의 여러 블록을 따로 떼어 놓는 것이 있어서 용량이 약간 남은 것처럼 보일 수 있다.

예약 블록 확인하는 방법.

sudo tune2fs -l /dev/sda1 | grep -i "block count"

가장 큰 디렉터리 확인하기

어떤 디렉터리가 디스크 공간을 크게 차지하고 있는지 파악하는 방법.

cd /
sudo du -ckx | sort -n > /tmp/duck-root

du 명령어에 sort 명령어를 파이프해서 어떤 디렉터리가 가장 많은 디스크 공간을 소비하는지 확인할 수 있다.

이러한 명령어를 흔히 ‘duck 명령어’라고 한다.

크기별로 정렬된 모든 파일의 목록을 보는 방법

sudo ls -lS

아이노드가 고갈된 경우

df를 실행했을 때 충분히 여유 공간이 있음에도 파일 시스템이 가득 찼다고 하는 경우.

아이노드 사용량에 대한 정보 보기.

df -i

아이노드가 가득 찼을 때는 아래의 방법으로 해결한다.

  • 다른 파일 시스템으로 옮길 수 있는 파일 옮기기
  • 파일들을 tar 압축 파일로 묶기
  • 현재 파일 시스템 상의 파일을 백업하고 아이노드가 더 많은 파일 시스템으로 다시 포맷한 후 복구하기

 

파일 시스템이 읽기 전용으로  뜰 때

파일을 복사또는 저장하려고 할 때 파일 시스템이 읽기 전용이라는 오류가 나오면, 먼저 파일 시스템을 다시 마운트할 수 있는지 확인한다.

sudo mount -o remount,rw /home

이렇게 해도 똑같은 오류가 발생한다면 완벽하게 해당 파티션을 내리고 나서 다시 마운트 한다.

파일 시스템이 루트 파티션이거나 다시 마운트되지 않는다면 시스템을 재부팅해서 파일 시스템을 확인하고 다시 마운트한다.

손상된 파일 시스템 고치기

fsck로 파일 시스템을 고치기 전에 주의할 점 하나는 반드시 파일 시스템을 먼저 내려야 한다. 파일 시스템을 먼저 내리지 않으면 fsck는 잠재적으로 파일 시스템을 더 손상시킬 수 있다.

모든 마운트된 파일 시스템을 확인하기 위해 mount명령을 실행할 수 있다.

그리고 unmount <devicename>으로 특정 파일 시스템을 내릴 수 있다.

파일 시스템에서 오류를 보고 이를 고치려면 아래 명령어를 입력한다.

# -y 는 YES
# -C 는 진행표시줄 보기
fsck -y -C /dev/sda5

때로 파일 시스템 오류가 너무 심해서 기본 수퍼 블록이 발견되지 않을 땐 아래 명령으로 수퍼 블록 목록을 확인한다.

mke2fs -n /dev/sda5

수퍼 블록 목록이 보이면 하나를 선택하고 fsck를 실행할 때 -b 옵션의 인지로 선택한 값을 전달한다.

fsck -b 8193 -y -C /dev/sda5

RAID 고치기

아래 명령어로 레이드 확인을 할 수 있다.

cat /proc/mdstat

(F)가 뜬 디스크가 있다면 아래 명령으로 디스크를 제거한다.

sudo mdadm /dev/md0 --remove /dev/sdd1

해당 디스크를 제거하기 전에 결함이 있다고 설정하기

sudo mdadm /dev/md0 --fail /dev/sdd1

드라이브의 결함 설정 및 제거 한번에 하기

sudo mdadm /dev/md0 --fail /dev/sdd1 --remove /dev/sdd1

이제 드라이브를 새 것으로 교체하고 파티션을 나눌 수 있다. 시스템이 핫스왑을 지원하면 바로 교체하고 그렇지 않다면 시스템 전원을 내리고 하드디스크를 교체한다.

디스크를 교체할 땐 반드시 RAID 배열 안에 있는 나머지 파티션의 크기와 동일하거나 더 큰 새 파티션을 만들어야 한다.

새 파티션이 준비되면 아래 명령어로 새 파티션을 추가한다.

sudo mdadm /dev/md0 --add /dev/sdd1
#동기화 과정 확인하기
cat /proc/mdstat

#반복적으로 과정 확인하기, 5초마다 명령 실행
watch -n 5 "cat /proc/mdstat"

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요