전제 조건과 환경 분할
서비스 계정·홈·권한을 고정합니다. NVMe=핫, 외장·NAS=웜으로 라벨하고 마운트 순서를 README에 적습니다. OPENCLAW_HOME·실제 캐시 env를 표로 남기고 Node는 게이트웨이와 같은 시맨틱 버전으로 고정합니다. CI는 정규 캐시 경로만 쓰게 하고 임시 경로 하드코딩을 금지합니다.
- 핫·웜
df -h·df -i주 1회 기록 - 수동 풀 1회 성공 후 자동화 ON
TMPDIR를 루트가 아닌 핫·전용 tmp로
캐시 경로와 계층화 방안
실제 디렉터리는 티어별로 두고, 애플리케이션이 보는 정규 경로는 심볼릭 링크 하나로 고정합니다. 예시는 다음과 같습니다(경로는 환경에 맞게 바꿉니다).
- 핫:
/Volumes/fast/oc-cache/models - 웜:
/Volumes/bulk/oc-archive/models - 정규:
~/.openclaw/cache/models→ 핫으로ln -s
웜으로 내릴 때 rsync -a --link-dest 또는 같은 FS에서 mv로 원자 이동. 심링크 교체 전 실디렉터리는 백업 후 진행합니다.
| 선택 | 언제 유리한가 | 주의 |
|---|---|---|
| 심링크 → 핫 NVMe | 지연시간 민감 풀·추론 워밍업 | 재부팅 시 외장 마운트 순서·이름 변경 |
| 핫 LRU + 웜 아카이브 | 디스크 압박이 잦은 공유 노드 | 아카이브와 매니페스트 버전 불일치 방지 |
| 단일 볼륨만 사용 | 소규모·프로토타입 | IO·용량 단일 장애점, 정리 없으면 급격히 포화 |
공유 노드는 “핫 LRU + 웜”, 전용 단일 디스크는 단일 볼륨을 기본으로 둡니다.
정기 정리와 로그 로테이션
LaunchAgent StartCalendarInterval로 비피크(예 02–04시) 정리 창을 둡니다. 락 없을 때만 .tmp·불완전 샤드·빈 디렉터리를 LRU 삭제하고, 삭제 전 용량·개수를 로그 한 줄에 남깁니다. macOS에선 launchd가 env·재시작에 유리한 경우가 많고 cron은 헤드리스에도 쓸 수 있습니다.
| 스케줄러 | 장점 | 단점 |
|---|---|---|
| LaunchAgent | StandardOutPath·환경·KeepAlive와 통합 |
사용자 도메인·plist 관리 필요 |
| crontab | 표현이 단순 | 경로·로케일·세션과 어긋나기 쉬움 |
로그 경로를 고정하고 newsyslog 등으로 크기·일수 로테이션을 겁니다.
할당량과 디스크 수위 임계
팀에 맞는 워터마크를 문서에 박아 둡니다. 권장 시작점은 아래와 같습니다(조정 가능).
| 사용률 | 동작 |
|---|---|
| ≥ 80% | 슬랙·메일 등 알림, 다음 정리 창까지 모니터링 강화 |
| ≥ 85% | 신규 대형 풀 큐잉·동시성 스로틀 |
| ≥ 90% | 핫 티어 LRU 공격적 퇴거(매니페스트·필수 모델 화이트리스트 제외) |
알림 셸은 df -P·볼륨별 임계, df -i로 inode도 감시합니다.
실패 재시도와 트러블슈팅
ENOSPC는 정리·웜 이동, 429는 백오프·동시성 감소. exit code·stderr로 원인을 분리해 로그에 섞이지 않게 합니다. 재부팅 후 심링크 타깃 마운트를 확인하고, openclaw doctor로 설정을 정규화한 뒤 자동화를 재개합니다.
- Permission denied: 캐시 디렉터리 소유자·ACL, 전용 계정과 에이전트 사용자 일치
- Broken symlink: 볼륨 이름 변경·지연 마운트 → 안정 경로 또는 LaunchAgent
StartCalendarInterval지연 - 풀은 성공했는데 추론이 느림: 핫 티어에 실제 weight가 있는지, 웜으로만 읽고 있지 않은지
df와 I/O 모니터로 확인
런칭·검수 체크리스트
- 핫·웜 각각에서
df -h·du -sh로 기대 용량과 일치하는지 확인. - 정리 스크립트를
DRY_RUN=1또는--dry-run으로 한 번 돌려 삭제 대상 목록만 검토. launchctl kickstart로 에이전트 재시작 후 exit code·로그 tail 확인.- CI 한 건을 정규 캐시 경로만 쓰는 설정으로 돌려 캐시 적중 여부 확인.
- 롤백: 심링크를 이전 타깃으로 되돌리고, 정리 잡을
launchctl bootout로 비활성화하는 순서를 문서에 적어 둠.
맺음말·다음 단계
요약: 심링크로 정규 캐시 경로를 고정하고 핫/웜을 나누면 OpenClaw 모델 캐시 운영이 팀 단위로 재현됩니다. 정리 창·로그 로테이션·80/85/90% 임계만으로도 야간 장애가 줄어듭니다. 전용 원격 Mac·디스크 여유는 아래에서 로그인 없이 확인하세요.
- 고객 지원 · 구매 · 블로그
- 연관: 의존성 동기화, Git·npm 캐시