Profile picture

[Linux] system call failed: (EUCLEAN) - 디스크 불량 섹터 이슈

JaehyoJJAng2025년 12월 01일

개요

  • XFS 로그 손상 + SATA 링크 불안정 + 디스크(불량 섹터) 이슈로 이어진 케이스

백업 디스크(/dev/sdb)에 현재 부팅 디스크 전체 데이터를 rsync로 복제하는 스크립트가 주기적으로 동작하고 있습니다.


어느 날, 스크립트 실행 로그에 다음과 같은 에러 로그가 찍히게 되었습니다.

mount(2) system call failed: 구조에 청소가 필요합니다.

검색해보니 커널 에러(EUCLEAN, Structure needs cleaning)로, 대개 파일시스템 메타데이터 손상 이 의심되는 로그라고 하더군요.


이번 게시글에서는 실제 로그를 바탕으로,

원인 파악 -> 무엇이 문제였나? -> 해결 순서 까지 한 번에 정리해보려고 합니다.


증상: mount 안되고 EUCLEAN이 뜬다

표면적으로는 마운트 실패지만, 이 메시지는 대체로 파일시스템 자체가 깨졌거나, 그보다 아래 계층(디스크/링크)이 불안정해서

정상적인 I/O가 불가능한 상태 에서 함께 나타난다고 합니다.


1차 진단: dmesg 검토

먼저 커널 쪽에 관련한 이슈가 있는지 파악해보기 위해 dmesg로 커널 로그를 확인하였습니다.

dmesg -T | tail -n 200

# 또는
journalctl -k -n 200

이번 이슈에서 확인된 핵심 로그는 아래와 같았습니다.


(1) SATA 링크/디스크 응답 불안정

ata2: link is slow to respond, please be patient (ready=0)
ata2: COMRESET failed (errno=-16)
  • 디스크 응답이 느리거나, 링크 리셋(COMRESET)이 실패하고 있습니다.
  • 흔한 원인은 케이블/포트/전원/백플레인 문제 또는 디스크 자체 이상 입니다.

(2) XFS 파일시스템 로그(저널) 복구 실패

XFS (sdb6): Log inconsistent (didn't find previous header)
XFS (sdb6): log mount/recovery failed: error -117
XFS (sdb6): log mount failed
  • XFS는 마운트 시 저널(log)을 통해 복구(recovery)를 수행하는데, 로그가 비정상이라 복구가 실패하며 마운트가 막힙니다.

2차 진단: SMART로 "디스크 상태" 확인하기

마운트 오류가 나면 파일시스템만 보지 말고, 디스크 건강 상태(SMART) 내역도 함께 확인해야 합니다.

smartctl -a /dev/sdb

이번 케이스에서 중요한 포인트는 다음이었습니다.

(1) Reallocated_Sector_Ct = 560

  • 리얼 불량 섹터가 이미 다수 발생했고, 예비 섹터로 치환이 진행된 상태입니다.
  • 운영 관점에서는 이 수치가 나오면 “교체 대상”으로 보는 것이 일반적입니다.

(2) Command_Timeout 값이 매우 큼

  • 디스크가 명령에 대해 타임아웃을 많이 발생시켰다는 의미로,
    • dmesg의 link is slow, COMRESET failed와 정합됩니다.

(3) UDMA_CRC_Error_Count = 0

  • 흔히 “케이블 불량”이면 CRC가 오르는 경우가 많지만, 여기선 0이었습니다.
  • 즉, “케이블만”의 문제라고 단정하기 어렵고, 디스크 자체 이슈 가능성이 더 큼으로 해석하는 편이 안전합니다.

참고로 SMART의 PASSED는 임계치 기준이라, 현장 장애와 괴리되는 경우가 흔합니다.

결론적으로 이 케이스는 “파일시스템만 고치면 끝”이 아니라, 디스크 문제까지 포함된 장애로 보는 게 맞습니다.


해결 방법

사실 위 케이스는 디스크 장애가 확실하고, 백업 디스크의 / 파티션도 날라간 상태이기 때문에 사실상 복구가 불가능합니다.


저는 장애 디스크를 빠르게 교체하고 백업 스크립트를 다시 돌리는 방식으로 해결하였습니다.


Loading script...