Files
server-infra/docs/storage.md

62 lines
2.4 KiB
Markdown

# 스토리지 구성
## 디스크 구성
| 마운트 포인트 | 디바이스 | 용량 | 사용 | 용도 |
|---|---|---|---|---|
| `/` | `/dev/mapper/rl-root` | 214 GiB | 60 GiB (29%) | OS, 컨테이너 이미지, 서비스 데이터 |
| `/mnt/storage` | `/dev/sda1` | 2.7 TiB | 693 GiB (27%) | 미디어, 파일, AI 모델 |
## 서비스별 데이터 경로
### /podman/data (루트 파티션)
| 경로 | 서비스 | 내용 |
|---|---|---|
| `/podman/data/authentik/env/` | Authentik | 환경변수 (secrets 포함, Git 제외) |
| `/podman/data/filebrowser/` | FileBrowser | DB, config |
| `/podman/data/gitea/` | Gitea | 전체 데이터 (SQLite DB, 설정, LFS 메타) |
| `/podman/data/nextcloud/html/` | Nextcloud | 앱 데이터, config.php |
| `/podman/data/npm/data/` | NPM | nginx conf, 인증서 제외 설정 |
| `/podman/data/npm/letsencrypt/` | NPM | Let's Encrypt 인증서 |
| `/podman/data/prometheus/config/` | Prometheus | prometheus.yml |
| `/podman/data/prometheus/data/` | Prometheus | TSDB (30일 보존) |
| `/podman/data/reservation/` | Reservation | SQLite DB, 업로드 파일 |
| `/podman/data/sftpgo/` | SFTPGo | 설정, 사용자 DB |
### /mnt/storage (대용량 스토리지)
| 경로 | 서비스 | 내용 |
|---|---|---|
| `/mnt/storage/ai/open-webui/` | Open WebUI | 대화 기록, 모델 설정 |
| `/mnt/storage/ai/models/` | Ollama / ComfyUI | LLM/이미지 모델 |
| `/mnt/storage/git/` | Gitea | Git 실제 저장소 (`/git/lfs` 포함) |
| `/mnt/storage/media/` | Jellyfin | 미디어 파일 |
| `/mnt/storage/asr/` | ASR | 업로드 파일, 결과, 모델 캐시 |
### /srv (서비스 런타임)
| 경로 | 내용 |
|---|---|
| `/srv/asr/` | ASR 앱 코드, 모델 |
| `/srv/containers/open-webui/` | open-webui.container 원본 (symlink → /etc/containers/systemd/) |
## 볼륨 마운트 SELinux 옵션
| 옵션 | 의미 | 사용 사례 |
|---|---|---|
| `:Z` | 단독 컨테이너용 레이블 재지정 | 단일 컨테이너가 독점 |
| `:z` | 공유 가능 레이블 재지정 | 여러 컨테이너 또는 호스트 공유 |
| `:Z,U` | 레이블 + UID 매핑 | rootless 컨테이너 + SELinux |
## 백업 현황
> ⚠️ 현재 공식 자동 백업 미구성
백업 대상 권장 경로:
- `/podman/data/` (DB, 설정 전체)
- `/mnt/storage/` (미디어, AI 모델 제외 가능)
- `/etc/containers/systemd/` (Quadlet 파일)
- `/etc/grafana/grafana.ini`
- `/etc/jupyterhub/jupyterhub_config.py`