Ollama가 Linux 디스크를 점유하지 않도록 관리하기: 모델 저장소 이동 및 안전한 정리 방법
요약
Linux 환경에서 Ollama 모델 저장소로 인한 디스크 용량 부족 문제를 해결하기 위한 가이드입니다. 모델 저장 위치를 변경하고 systemd 설정을 통해 이를 영구적으로 적용하는 방법을 다룹니다.
핵심 포인트
- Ollama 모델 기본 저장 경로 확인 및 용량 측정 방법
- OLLAMA_MODELS 환경 변수를 이용한 저장소 이동
- systemd 오버라이드를 통한 환경 변수 영구 적용법
- 모델 이동 시 권한 설정 및 서비스 중지 필요성
Ollama가 Linux 디스크를 점유하지 않도록 관리하기: 모델 저장소 이동 및 안전한 정리 방법
Linux에서 Ollama를 주말 이상 실행하다 보면, 모델에 대한 피로감이 오기 전에 디스크 압박(disk pressure)이 먼저 찾아오곤 합니다.
몇 개의 모델을 다운로드(pull)하고, 몇 가지 큰 변형 모델을 받고, 한 번 테스트하려고 했다가 잊어버린 임베딩 모델(embedding model) 하나만 추가되어도 — 갑자기 루트 파일 시스템(root filesystem)이 계획했던 것보다 훨씬 더 큰 무게를 감당하게 됩니다.
이 가이드는 실질적인 해결책을 제시합니다:
- Ollama가 모델을 어디에 저장하고 있는지 찾기
- 사용 중인 용량 측정하기
- 모델 저장소를 더 나은 위치로 이동하기
- systemd를 사용하여 변경 사항을 영구적으로 적용하기
- 더 이상 필요하지 않은 모델 제거하기
- 신뢰하기 전에 모든 사항 검증하기
마법 같은 방법은 없습니다. 모호하게 "그냥 심볼릭 링크(symlink)를 거세요"라는 식의 조언도 아닙니다.
문서에 명시된 내용
Ollama FAQ에 따르면:
- Linux에서 모델은 기본적으로
/usr/share/ollama/.ollama/models아래에 저장됩니다. OLLAMA_MODELS환경 변수(environment variable)를 설정하여 모델을 이동할 수 있습니다.- Ollama가 Linux 서비스로 실행될 때, 환경 변수는 systemd 오버라이드(override)를 통해 설정해야 합니다.
- Ollama 서비스 계정은 새로운 디렉토리에 대한 읽기/쓰기 권한이 필요합니다.
이것이 우리에게 깔끔하고 지원되는 경로를 제공합니다. 따라서 우리는 이 방법을 사용할 것입니다.
이 글이 다른 관점을 취하는 이유
저는 이미 셀프 호스팅 AI 스택 구축과 로컬 AI 워크플로우 자동화에 대해 작성한 적이 있습니다. 이번 글은 의도적으로 범위를 좁혔습니다:
- 처음부터 Ollama를 배포하는 것에 관한 것이 아닙니다.
- 리버스 프록시(reverse proxies), 웹 UI, 또는 에이전트 오케스트레이션(agent orchestration)에 관한 것도 아닙니다.
- 이미 Ollama를 실행 중인 Linux 호스트에서의 운영 위생(operational hygiene)에 관한 것입니다.
만약 루트 디스크가 가득 차고 있다면, 이 부분이 중요합니다.
1단계: 현재 Ollama가 사용 중인 용량 측정하기
먼저 현재 모델 디렉토리의 크기를 확인하는 것부터 시작합니다.
sudo du -sh /usr/share/ollama/.ollama/models
조금 더 상세한 정보를 보고 싶다면:
sudo du -h --max-depth=2 /usr/share/ollama/.ollama/models | sort -h
왜 du를 사용할까요? du는 디렉토리에 대한 재귀적 디스크 사용량 (disk usage)을 보고하며, --max-depth 옵션을 사용하면 출력 결과에 압도되지 않고 필요한 수준만 확인할 수 있기 때문입니다.
그다음 Ollama가 인식하고 있는 모델 목록을 나열합니다:
ollama ls
그리고 현재 메모리에 로드된 모델이 있는지 확인합니다:
ollama ps
마지막 확인 단계가 중요합니다. 모델이 활발하게 로드되어 있다면, 파일을 이동하기 전에 해당 모델을 중지하십시오.
2단계: 더 나은 저장 위치 선택하기
일반적인 선택지:
/srv/ollama-models와 같은 더 큰 보조 SSD/mnt/ai/ollama-models와 같은 전용 데이터 마운트 (data mount)- 모델 다운로드 (pull) 및 로드 속도가 중요하다면 빠른 로컬 NVMe
지연 시간 (latency)과 장애 동작을 테스트하지 않았다면, 느리거나 신뢰할 수 없는 네트워크 마운트에 모델 저장소를 두는 것은 피하는 것이 좋습니다. 로컬 스토리지가 더 간단하고 일반적으로 더 빠릅니다.
이 예제에서는 다음 경로를 사용하겠습니다:
/srv/ollama-models
해당 디렉토리를 생성하고 ollama 서비스 계정에 소유권을 부여합니다:
sudo install -d -o ollama -g ollama -m 0755 /srv/ollama-models
다른 방식으로 생성하는 것을 선호한다면, 다음 명령어가 동일한 역할을 합니다:
sudo mkdir -p /srv/ollama-models
sudo chown -R ollama:ollama /srv/ollama-models
sudo chmod 755 /srv/ollama-models
3단계: Ollama를 깔끔하게 중지하기
모델 데이터를 복사하거나 이동하기 전에 서비스를 중지하십시오.
sudo systemctl stop ollama
서비스가 실제로 중지되었는지 확인합니다:
systemctl is-active ollama
예상 결과:
inactive
4단계: 기존 모델 저장소 이동하기
더 안전하고 재시작 가능한 복사 경로를 확보하기 위해 먼저 rsync를 사용합니다.
sudo rsync -aHAX --info=progress2 /usr/share/ollama/.ollama/models/ /srv/ollama-models/
그다음 복사된 크기를 확인합니다:
sudo du -sh /usr/share/ollama/.ollama/models /srv/ollama-models
크기가 올바르게 보인다면, 일단 원본은 임시 롤백 (rollback) 지점으로 남겨두십시오. 아직은 삭제하지 마십시오.
5단계: systemd를 사용하여 새 위치 영구 적용하기
Linux에서 지원되는 방식은 systemd 오버라이드 (override)입니다.
오버라이드 편집기를 엽니다:
sudo systemctl edit ollama
다음 내용을 추가합니다:
[Service]
Environment="OLLAMA_MODELS=/srv/ollama-models"
파일을 직접 작성하는 것을 선호한다면:
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf >/dev/null <<'EOF'
[Service]
...
systemd를 다시 로드하고 Ollama를 다시 시작합니다:
sudo systemctl daemon-reload
sudo systemctl start ollama
6단계: Ollama가 새로운 경로를 사용하는지 확인하기
먼저, 적용된 서비스 정의를 검사합니다:
systemctl cat ollama
다음 내용이 포함된 오버라이드(override)가 보여야 합니다:
Environment="OLLAMA_MODELS=/srv/ollama-models"
그 다음, 서비스 환경을 더 직접적으로 확인합니다:
systemctl show ollama --property=Environment
출력 결과에 다음 내용이 포함되어야 합니다:
OLLAMA_MODELS=/srv/ollama-models
이제 Ollama 자체에서 정상 동작을 확인합니다:
ollama ls
그리고 선택적으로 모델 실행을 테스트합니다:
ollama run gemma3 "Reply with: storage path test successful"
서비스가 정상적으로 시작되고 기존 모델들이 보인다면, 이동이 성공적으로 완료된 것입니다.
7단계: 확인 후에만 기존 복사본 제거하기
Ollama가 새로운 위치에서 데이터를 읽고 있다는 점이 확실해지면, 기존 모델 디렉토리의 내용을 삭제할 수 있습니다.
먼저 이름을 변경한 뒤, 하루 정도 기다렸다가 삭제하는 것을 강력히 권장합니다.
sudo mv /usr/share/ollama/.ollama/models /usr/share/ollama/.ollama/models.backup-$(date +%F)
안전한 대기 기간 이후에도 모든 것이 정상적으로 작동한다면, 백업을 제거합니다:
sudo rm -rf /usr/share/ollama/.ollama/models.backup-2026-04-10
날짜 접미사는 호스트에서 실제로 생성된 날짜에 맞게 조정하십시오.
더 신중한 흐름을 원한다면, 다음 재부팅과 모델 풀(pull) 작업이 완료될 때까지 백업을 그대로 두십시오.
8단계: 더 이상 필요하지 않은 모델 정리하기
저장소를 재배치하는 것도 도움이 되지만, 불필요한 용량을 제거하는 것은 훨씬 더 도움이 됩니다.
모델 목록 확인:
ollama ls
필요 없는 모델 제거:
ollama rm mistral
태그가 지정된 다른 변체(variant) 제거:
ollama rm qwen2.5:14b
그다음 디스크 사용량을 다시 확인합니다:
sudo du -sh /srv/ollama-models
빠른 검토 워크플로우 (Review workflow)
저는 다음과 같은 간단한 루프를 선호합니다:
ollama ls
sudo du -sh /srv/ollama-models
ollama ps
이를 통해 다음 사항을 알 수 있습니다:
- 무엇이 설치되어 있는지
- 저장소(store)가 얼마나 많은 공간을 사용하고 있는지
- 현재 무엇이 로드되어 있는지
선택 사항: 간단한 감사 기록 (Audit trail) 남기기
만약 이것이 공유 홈랩 (homelab)이거나 나중에 다시 방문하게 될 서버라면, 변경 사항을 기록해 두세요.
예를 들어:
sudo mkdir -p /etc/ollama
printf '%s
' \
...
이는 Ollama에서 요구하는 사항은 아니지만, 미래의 당신에게 큰 도움이 될 것입니다.
문제 해결 (Troubleshooting)
Ollama는 시작되지만 모델이 나타나지 않는 경우
보통 다음 중 하나가 원인입니다:
OLLAMA_MODELS가 잘못된 디렉토리를 가리키고 있음- 복사 단계가 불완전함
- 권한 문제로 인해
ollama사용자가 새로운 경로를 읽을 수 없음
확인 사항:
systemctl show ollama --property=Environment
sudo ls -lah /srv/ollama-models
sudo namei -l /srv/ollama-models
마지막 명령어가 유용한 이유는, 최종 디렉토리가 올바르게 보이더라도 상위 경로의 디렉토리 권한 문제로 인해 접근이 차단될 수 있기 때문입니다.
새 디렉토리에서 권한 거부 (Permission denied) 발생
소유권을 수정합니다:
sudo chown -R ollama:ollama /srv/ollama-models
그다음 재시작합니다:
sudo systemctl restart ollama
경로를 변경했지만 systemd를 다시 로드하는 것을 잊은 경우
매우 전형적인 실수입니다.
다음 명령어를 실행하세요:
sudo systemctl daemon-reload
sudo systemctl restart ollama
루트 파일 시스템 (Root filesystem)이 여전히 가득 찬 경우
활성 저장소 (live store)를 이동하더라도, 이전 복사본을 삭제하기 전까지는 공간이 확보되지 않는다는 점을 기억하세요.
두 경로를 명시적으로 확인합니다:
sudo du -sh /usr/share/ollama/.ollama /srv/ollama-models
df -h /
심볼릭 링크 (Symlinks)보다 안전한 패턴
이 작업을 위해 심볼릭 링크 (symlinks)를 추천하는 사람들을 볼 수 있습니다. 저는 그보다는 문서화된 OLLAMA_MODELS 환경 변수를 사용하는 것을 권장합니다.
그 이유는 무엇일까요?
- Ollama에 의해 문서화된 지원되는 메커니즘입니다.
- 서비스 정의 (service definition)에서 확인할 수 있습니다.
- 나중에 감사 (audit)하기가 더 쉽습니다.
- 트러블슈팅 (troubleshooting) 중에 "이 경로가 실제로 어디를 가리키고 있지?"와 같은 당혹스러운 상황을 방지합니다.
심볼릭 링크 (Symlinks)도 작동할 수 있지만, 깔끔한 서비스 설정이 논리적으로 파악하기 더 쉽습니다.
최종 체크리스트 (Final checklist)
요약된 버전을 원하신다면, 바로 이것입니다:
# 현재 사용량 확인
sudo du -sh /usr/share/ollama/.ollama/models
ollama ls
...
이것이 여러분이 감사 (audit)할 수 있는 형태로 구성된 전체 이동 과정입니다.
참고 문헌 (References)
- Ollama FAQ — 모델 저장 위치,
OLLAMA_MODELS, Linux 서비스 환경 설정: https://docs.ollama.com/faq - Ollama Linux docs — 권장되는 systemd 서비스 설정 및
systemctl edit를 통한 커스터마이징: https://docs.ollama.com/linux - Ollama CLI reference —
ollama ls,ollama rm,ollama ps: https://docs.ollama.com/cli - Ollama API intro — 기본 로컬 API 베이스 URL: https://docs.ollama.com/api
- GNU
du매뉴얼 페이지 — 재귀적 디스크 사용량 및--max-depth: https://man7.org/linux/man-pages/man1/du.1.html
만약 용량이 작은 루트 디스크 (root disk)에서 로컬 모델을 실행 중이라면, 이는 나중에 겪을 짜증 나는 주말 상황을 방지해 줄 5분 내외의 정리 작업 중 하나입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기