Jellyfin 앱 데이터, 캐시, 백업을 분리할 때는 재구축 후에도 유지해야 하는 것, 다시 생성할 수 있는 것, 라이브 상태 저장 장치에 장애가 발생한 후에도 사용할 수 있어야 하는 것을 기준으로 판단하세요. 소형 서버에서는 이 세 가지 역할이 같은 물리적 SSD를 사용할 수 있지만, 수명 주기와 복구 정책은 서로 달라야 합니다.
영구적인 애플리케이션 상태에는 데이터베이스, 설정, 사용자 및 재생 상태, 동일한 서버를 복구하는 데 필요한 기타 파일이 포함됩니다. 활성 작업에서 더 이상 필요하지 않은 캐시와 트랜스코딩 데이터는 삭제해도 됩니다. 백업은 복구용 사본이므로, 복구 대상과 동일한 스토리지 경계에 의존해서는 안 됩니다.
영구 앱 데이터를 기준 상태로 설정하기
먼저 Jellyfin의 영구 상태를 저장하는 호스트 경로 또는 볼륨을 파악하세요. 컨테이너 배포에서는 이미지를 교체할 수 있지만, 컨테이너를 다시 만들었을 때 연결해야 하는 것은 마운트된 상태 데이터입니다. 호스트 경로, 컨테이너 경로, 소유권, 파일 시스템, 최소 여유 공간 및 백업 방법을 기록해 두세요.
최신 Jellyfin Docker Compose 구성에서는 미디어를 마운트하기 전에 영구 설정 디렉터리와 캐시 디렉터리를 분리합니다. 두 디렉터리가 처음에는 같은 SSD에 있더라도 경로를 구분해 두면 운영에 도움이 됩니다.
문제 해결 과정에서 삭제해도 된다고 생각하는 위치에 기준 데이터베이스를 두지 마세요. 캐시를 정상적으로 정리했을 때 사용자, 라이브러리, 시청 기록 또는 서버 정체성이 초기화될 가능성이 있어서는 안 됩니다.
캐시와 트랜스코딩 공간을 재생성 가능한 작업 데이터로 취급하기
캐시는 반복 작업을 줄이거나 임시 처리 결과를 보관하기 위한 것입니다. 캐시의 가치는 성능과 편의성에 있지, 서버의 정체성을 보존하는 데 있지 않습니다. 일반적인 백그라운드 작업과 트랜스코딩의 최대 사용량을 감당할 만큼 용량을 할당하되, 서버 전체를 복원하지 않고도 다시 만들 수 있게 하세요.
빈번히 변경되는 캐시나 트랜스코딩 작업 때문에 데이터베이스 백업 정책이 좌우되지 않도록 하세요. 같은 고속 장치에서 두 역할을 모두 처리한다면 디렉터리나 데이터셋을 분리하고 각각 별도의 할당량과 모니터링을 적용하세요. 이렇게 하면 일시적인 사용량 급증으로 여유 공간이 부족해져 데이터베이스 쓰기나 향후 복원에 지장이 생기는 일을 막을 수 있습니다.
순차 미디어 읽기는 원활한데 탐색, 메타데이터, 상태 작업이 느리다면, 대용량 미디어 라이브러리도 같은 스토리지 작업을 한다고 여기지 말고 ZimaSpace의 인터랙티브 미디어 서버 상태 데이터를 SSD에 보관하기 분석을 다음 테스트의 참고 자료로 활용해 보세요.
컨테이너는 일회용이지만 상태 데이터와 재구축 레시피는 그렇지 않습니다
컨테이너는 다시 가져올 수 있지만 배포 레시피와 영구 데이터가 다시 나타난다고 단정할 수는 없습니다. Compose 또는 서비스 정의, 이미지 버전이나 태그 정책, 마운트 매핑, 서비스 ID, 필요한 비밀 정보 참조, 영구 Jellyfin 상태를 저장하세요.
이 Docker 볼륨 백업 워크플로의 실용적인 원칙은 유용한 복구 데이터가 일회용 컨테이너 자체가 아니라 볼륨, 바인드 마운트, 앱 데이터, 서비스 정의에 있다는 것입니다.
실행 중인 데이터베이스에서는 서비스가 바쁜 동안 모든 바이트를 복사하는 것보다 일관성을 유지하는 일이 더 중요합니다. 임의로 실행 중인 파일을 복사해 검증된 복구 지점으로 간주하지 말고, 애플리케이션에서 지원하는 백업 경로나 배포 환경에 적합한 통제된 중지/스냅샷 방식을 사용하세요.
실행 중인 상태 옆의 백업으로는 호스트 장애에 대비할 수 없습니다
실행 중인 데이터베이스 옆에 백업을 보관하면 실수로 인한 변경에는 도움이 될 수 있지만, 운영 환경을 없앨 수 있는 모든 스토리지 풀, 호스트, 랜섬웨어, 도난 또는 정전 상황에 대비할 수는 없습니다. 다른 장치나 관리 경계에 복구용 사본을 보관하고, 해당 사본을 읽는 데 필요한 키나 자격 증명도 보호하세요.
셀프 호스팅 백업 계획에서는 상태, 비밀 정보, 복구용 사본, 복원 안내를 함께 다뤄야 합니다. 이 셀프 호스팅 복구 점검에서는 스냅샷 수를 완전한 계획의 척도로 삼기보다 명백한 피해 범위 밖에 사본을 보관하고 재구축에 필요한 입력 정보를 문서화하는 데 중점을 둡니다.
백업 대상이 라이브 앱 풀과 동일한 캐시 보존 규칙이나 정리 명령의 영향을 받지 않도록 하세요. 같은 섀시에 임시로 저장하더라도 백업은 별도의 역할을 합니다.
드라이브를 구매하거나 옮기기 전에 스토리지 역할을 구분하세요
| 역할 | 예시 | 재생성 가능 여부 | 주요 정책 |
|---|---|---|---|
| 영구 앱 상태 | 데이터베이스, 구성, 사용자, 시청 상태, 플러그인/설정 | 저렴하게는 불가능 | 낮은 지연 시간, 여유 공간, 일관된 백업 |
| 캐시 / 임시 파일 | 캐시, 트랜스코딩 임시 공간, 폐기 가능한 중간 파일 | 예 | 용량, 성능, 제한된 정리 |
| 백업 | 버전 관리되는 상태 복사본, 배포 절차, 복구 메타데이터 | 아니요. 복구 원본입니다 | 독립적인 장애 도메인, 보존 기간, 복원 테스트 |
| 미디어 | 영화, TV 프로그램, 가족 동영상 | 원본에 따라 다름 | 용량 및 별도 보호 정책 |
이 구성도는 흔히 발생하는 재설계 실수를 방지합니다. 문제가 앱 상태의 지연 시간에만 있는데도 모든 것을 가장 빠른 디스크로 옮기거나, 컨테이너 재구축에 필요한 서비스 정의는 빠뜨린 채 모든 임시 파일을 백업하는 실수입니다.
폐기 가능한 복원으로 분리 검증
Jellyfin 상태를 새 경로나 격리된 호스트에 복원하고, 복사한 배포 정의가 해당 위치를 가리키도록 설정한 다음, 대표적인 미디어에 비파괴적으로 액세스할 수 있게 하고, 원래 캐시 없이 서비스를 시작합니다. 캐시가 비어 있는 상태에서 시작하더라도 서버에 예상한 식별 정보, 라이브러리, 사용자 및 설정이 복원되어야 합니다.
백업을 격리된 대상에 복원하고 프로덕션 상태를 빌리지 않은 채 검증해야 차이를 측정할 수 있습니다. 테스트용 Jellyfin 인스턴스는 복구 복사본에서 시작하고, 필요한 경로에 다시 연결해야 하며, 복원이 몰래 라이브 볼륨에 의존하지 않는다는 점을 입증해야 합니다.
캐시를 삭제해도 식별 정보가 유지되고, 메모리에서 라이브러리를 다시 만들지 않고도 런타임을 재생성할 수 있으며, 최소 하나의 백업으로 라이브 앱 데이터 장치를 사용할 수 없는 상황에서 서비스를 복구할 수 있다면 이 구성이 검증된 것입니다.
NAS 및 서버 설정
더 읽어보기

기숙사 서버는 잠을 자거나 공부하고 화상 통화를 할 때 방해되지 않을 만큼 조용하게 작동할 수 있을까요?
네, 전력 소비가 적은 하드웨어를 사용하고, 저장 장치의 진동을 제어하며, 부하가 큰 작업은 예약하고, 방 안에서 소음을 확인하면 기숙사 서버를 조용히 사용할 수 있습니다.

기숙사에서 첫 자취방으로 옮겨갈 수 있는 학생용 홈랩
서비스를 특정 공간의 네트워크 환경과 분리하고, 하드웨어를 최소화하며, 상태를 백업하고, 깔끔하게 이전하는 과정을 미리 연습해 학생용 홈랩을 휴대하기 편하게 유지하세요.

계정이나 개인 파일을 공유하지 않고 룸메이트와 하나의 홈 서버를 공유하는 방법
모든 룸메이트에게 이름이 부여된 계정과 개인 저장 공간을 제공하고, 필요한 공유 역할만 부여하세요. 관리, 백업, 계정 정리는 별도로 처리하세요.



