Immich 경고가 제한적인 범위에서 발생하고, 영향을 받은 작업이 여전히 완료되며, 유용한 작업이 계속되고, 데이터베이스·파일 시스템·마운트 또는 메모리 장애의 징후가 없다면 모니터링만 해도 안전합니다. 동일한 경고가 실패한 작업, 사라지는 스토리지, OOM 종료, 데이터베이스 복구 오류 또는 급격히 악화되는 리소스 압박과 함께 반복되면 새 쓰기를 중지하세요.
결정의 기준은 “경고”라는 단어 자체가 아닙니다. 사용량이 많은 가져오기 작업 중 무해한 재시도 메시지와 “장치에 남은 공간이 없습니다”라는 메시지가 모두 나타날 수 있지만, 두 메시지가 의미하는 위험은 매우 다릅니다. 무엇이든 다시 시작하기 전에 최초 발생 시각, 정확한 작업, 영향을 받은 자산 또는 작업, 스토리지와 컨테이너 상태를 기록하세요.
경고가 중단시킬 수 있는 작업을 기준으로 분류하기
구체적인 사용자 작업 하나부터 시작하세요. 테스트 사진을 업로드하거나, 오래된 자산을 열거나, 검색을 한 번 실행하거나, 메시지를 생성한 백그라운드 작업을 관찰하세요. 경고 발생 시각을 Immich 서버, 머신러닝 서비스, PostgreSQL, 리버스 프록시 및 스토리지 로그와 대조하세요. 핵심은 경고가 성공한 요청, 재시도된 요청 또는 실패한 쓰기 중 어디에 해당하는지 확인하는 것입니다.
로그 수준 심각도 가이드는 유용한 출발점입니다. 일반적으로 WARN은 애플리케이션이 여전히 견딜 수 있는 예상치 못한 상태를 의미하고, ERROR는 작업 실패를 나타냅니다. 하지만 Immich 문제를 해결할 때는 계속 사용해도 안전한지 판단하기 전에 해당 레이블을 영향을 받은 요청, 쓰기 경로 또는 종속 서비스와 연결해야 합니다.
동일한 작업이 반복해서 성공하고 경고 수가 더 이상 증가하지 않는다면, 상황이 바뀔 때까지 모니터링 단계로 분류하세요. 정상적인 발생 빈도와 상황을 기록해 두면 향후 버전이나 라이브러리 변경 또는 용량 문제가 메시지 발생 빈도를 높였는지 확인할 수 있습니다. 사용자에게 보이는 영향이 없는 단일 메시지만으로 스택을 다시 구축할 이유는 없습니다.
Immich 복구와 재구축에 대한 ZimaSpace 의사 결정 프레임워크도 같은 기준을 사용합니다. 즉, 정상적으로 작동하는 배포를 교체하기 전에 상태를 보존하고 국소적인 장애를 진단합니다. 경고가 단일 작업을 넘어 확산되거나 원인을 수정한 후에도 다시 나타나면 더 중요하게 판단해야 합니다.
진행 상황과 상태가 정상적으로 유지되면 계속 모니터링하기
모니터링만 하는 경고에는 안정적인 범위가 있습니다. 새 항목이 더 이상 들어오지 않으면 대기열이 계속 줄어들고, 재시도가 결국 성공하며, 데이터베이스 쿼리가 정상적으로 유지되고, 여유 공간이 운영 기준선보다 높으며, 마운트가 계속 존재하고, 컨테이너 재시작 횟수가 누적되지 않아야 합니다. 사용자에게 보이는 작업 흐름도 정상적인 지연 시간과 오류 범위 안에 있어야 합니다.
추측하지 말고 이 경계를 테스트하세요. 동일한 작업을 다섯 번 반복하고, 오래된 자산 하나와 새로 업로드한 자산 하나를 포함한 다음 전후의 경고 수를 비교하세요. 모델을 로드하는 중이나 일시적인 종속 서비스 재시도 중에 경고가 한 번 나타났지만 다음 시도들이 정상이라면 정확한 버전과 함께 기록하고 계속 관찰하세요. 의미를 파악하기 전에는 경고를 억제하거나 필터링하지 마세요. 시끄러운 로그 한 줄을 숨기면 기준 상태가 사라지고, 무해한 재시도가 실패한 쓰기로 전환되는 과정을 놓칠 수 있습니다. 심각도 레이블만 보지 말고 지속 시간, 발생 빈도, 연관된 작업 실패 및 메시지가 지목한 리소스를 모니터링하세요. 이러한 항목이 더 유용한 판단 기준입니다.
경고가 데이터 안전 경계에 도달하면 새 쓰기를 중지하기
경고가 가득 찬 파일 시스템이나 읽기 전용 파일 시스템, 예상된 마운트 누락, 반복되는 PostgreSQL 복구 또는 쓰기 실패, 컨테이너 OOM 종료, 트랜잭션이 완료되기 전에 반복적으로 재시작되는 서비스를 나타내면 업로드와 백그라운드 작업을 중지하세요. 공간을 확보하거나 소유권을 변경하기 전에 로그와 현재 데이터 경로를 보존하세요.
데이터베이스와 관련된 “장치에 남은 공간이 없습니다”라는 메시지는 일반적인 로그 잡음이 아닙니다. 한 Immich 장애 토론에서는 문제가 있는 배포 중 PostgreSQL 공간 오류와 타임라인 동작 이상이 함께 발생했습니다.
이 사례가 모든 상황에 적용되는 단일 근본 원인을 입증하는 것은 아닙니다. 다만 스토리지와 관련된 데이터베이스 경고가 발생하면 추가 쓰기를 허용하기 전에 즉시 범위를 확인해야 하는 이유를 보여 줍니다.
호스트가 통제할 수 없을 정도로 스왑을 사용하기 시작하거나, 예상치 못한 빈 마운트 아래에 파일이 나타나거나, 의도한 스토리지가 마운트되지 않아 새 업로드가 컨테이너의 쓰기 가능 계층에 저장되는 경우에도 같은 중지 규칙을 적용하세요. 계속 쓰기를 수행하면 복구 가능한 구성 문제가 더 큰 조정 문제로 확대될 수 있습니다.
되돌릴 수 있는 수정 한 가지를 적용하고 원래 트리거를 재현하기
확인된 원인만 수정하세요. 의도한 마운트를 복구하거나, 안전한 여유 공간을 확보하거나, 특정 작업 하나의 동시성을 낮추거나, 실패한 종속 서비스를 수정하거나, 권한 경계를 복구하세요. 모든 대기열을 비우고, 데이터베이스 파일을 삭제하고, 알 수 없는 Docker 볼륨을 정리하고, 버전을 동시에 업그레이드하지 마세요. 그렇게 하면 결과를 판단하는 데 필요한 증거가 사라집니다.
필요하다면 영향을 받은 서비스만 다시 시작한 다음 경고를 발생시킨 정확한 트리거를 반복하세요. 사용자 작업이 성공하고, 경고가 사라지거나 문서화된 무해한 발생 빈도로 돌아오며, 대기열이 비워지고, 스토리지와 메모리가 정상적으로 유지되고, 두 번째 재시작 후에도 장애가 재현되지 않으면 성공입니다. 정리된 재현에서도 메시지가 계속되거나, 데이터베이스 무결성이 불확실하거나, 필요한 파일이 사라지거나, 첫 번째 안전한 수정으로 정상적인 진행이 복구되지 않으면 실험을 계속하지 말고 에스컬레이션하세요. 정확한 Immich 및 PostgreSQL 버전, 시각이 기록된 로그, 파일 시스템 상태, 컨테이너 재시작 및 OOM 상태, 최소 재현 절차 하나를 제공하면 다음 단계에서 장애가 발생한 계층을 정확히 겨냥할 수 있습니다.
지원 및 팁
더 읽어보기

여러 컨테이너에서 동시 실행할 때 Immich 데이터베이스 연결을 최적화하는 방법
먼저 max_connections를 늘리지 마세요. Immich 세션을 측정하고, 모든 컨테이너의 요구량을 합산하며, 관리용 여유 공간을 확보한 뒤, 실제로 확인된 병목만 조정하세요.

Immich에서 중복 작업 또는 가져오기를 방지하는 방법
반복 작업과 중복 자산을 분리하세요. 하나의 표준 수집 경로를 사용하고, 재시도와 경로 변경을 제어한 다음, 소규모 코호트에서 재진입을 테스트하세요.

데이터베이스 볼륨이 가득 찬 후 Immich를 복구하는 방법
공간을 확보하기 위해 PostgreSQL WAL을 절대 삭제하지 마세요. Immich 쓰기를 중지하고, 데이터베이스 상태를 보존한 뒤, 안전하게 용량을 추가하고 PostgreSQL을 복구한 다음 재발을 방지하세요.

