Ollama 模型預設儲存位置與遷移方法(避免 C 槽爆滿)

整理 Ollama 在 Windows、macOS、Linux 的預設模型目錄,並提供 Windows 下遷移到非系統碟的可執行步驟,避免 C 槽空間被吃滿。

本機執行大模型時,最容易先爆掉的通常是系統碟。Ollama 預設會把模型下載到使用者目錄或系統目錄,如果不先規劃路徑,C 槽很快就會被占滿。

Ollama 常見預設模型目錄

  • Windows:C:\Users\<使用者名稱>\.ollama\models
  • macOS:~/.ollama/models
  • Linux:/usr/share/ollama/.ollama/models(不同安裝方式可能略有差異)

Windows:把模型目錄遷移到非系統碟

建議將模型目錄遷移到例如 D:\OllamaModels。核心做法是設定系統環境變數 OLLAMA_MODELS

1. 建立目標目錄

例如先建立:D:\OllamaModels

2. 設定系統環境變數

  • 變數名稱:OLLAMA_MODELS
  • 變數值:D:\OllamaModels

可在「系統內容 -> 進階 -> 環境變數」中新增,也可使用命令列設定(系統管理員 PowerShell):

1
[System.Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "D:\OllamaModels", "Machine")

3. 重啟 Ollama(或重啟系統)

環境變數生效後,重新啟動 Ollama 服務或應用程式。若不確定是否已生效,直接重啟電腦最穩妥。

4. 驗證新目錄是否生效

拉取任意模型後,檢查 D:\OllamaModels 下是否出現新檔案。

5. 清理舊目錄(確認無誤後)

確認模型已在新目錄正常工作,再刪除舊目錄內容,回收 C 槽空間。

安全遷移、驗收與回復

先確認 Ollama 的安裝方式。Windows 桌面版通常使用目前使用者的環境;Linux systemd 服務則以 ollama 帳號執行。把變數設在錯誤帳號下,不會影響服務。

Linux 使用 systemd 覆寫設定:

1
sudo systemctl edit ollama
1
2
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
1
2
3
sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=Environment

不要移動正在使用的模型目錄。先停止 Ollama、複製資料、比較檔案數與總位元組、設定 OLLAMA_MODELS、重啟,最後完成一次最短推理。Windows 的 robocopy 回傳碼 0–7 通常不是失敗,8 以上才需要停止並檢查。

1
2
3
4
5
6
7
$oldModels = Join-Path $env:USERPROFILE '.ollama\models'
$newModels = 'D:\OllamaModels'
New-Item -ItemType Directory -Path $newModels -Force
robocopy $oldModels $newModels /E /COPY:DAT /DCOPY:T /R:2 /W:2
Get-ChildItem -LiteralPath $oldModels -Recurse -File | Measure-Object Length -Sum
Get-ChildItem -LiteralPath $newModels -Recurse -File | Measure-Object Length -Sum
ollama run <existing-model> "Reply with exactly: ok"

至少保留舊目錄到下一次正常啟動。驗收失敗時,停止 Ollama,刪除或恢復 OLLAMA_MODELS,重啟後確認舊模型清單。Linux 還要確認 ollama 帳號可讀取目標目錄。

常見問題

設定後仍寫入 C 槽怎麼辦

  • 先確認環境變數是「系統變數」,而不是「目前工作階段臨時變數」。
  • 確認 Ollama 行程已重啟。
  • 檢查變數名稱是否正確:必須是 OLLAMA_MODELS

是否需要遷移舊模型檔案

如果你不想重複下載,可在停止 Ollama 後手動複製舊模型到新目錄,再啟動 Ollama 驗證。