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

迁移前先确认当前安装方式。Windows 桌面版通常使用当前用户环境;Linux 的 systemd 服务则以 ollama 服务账号运行。环境变量设置在错误账号下,是“已经配置但仍写入旧目录”的常见原因。

1. 新建目标目录

例如先创建:D:\OllamaModels

2. 配置系统环境变量

  • 变量名:OLLAMA_MODELS
  • 变量值:D:\OllamaModels

可在“系统属性 -> 高级 -> 环境变量”中添加,也可用命令行设置(管理员 PowerShell):

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

3. 重启 Ollama(或重启系统)

环境变量生效后,重新启动 Ollama 服务/应用。若不确定是否已生效,直接重启电脑最稳妥。

不必把重启电脑当作第一选择。Windows 先退出托盘里的 Ollama,再从开始菜单重新启动;Linux systemd 用户应把环境变量写入服务覆盖配置:

1
sudo systemctl edit ollama

加入:

1
2
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"

然后执行:

1
2
sudo systemctl daemon-reload
sudo systemctl restart ollama

4. 验证新目录是否生效

下载或拉取任意模型后,检查 D:\OllamaModels 下是否出现新文件。

更可靠的验收是拉取一个小模型并同时检查 API 和目录写入:

1
2
ollama list
Get-ChildItem -LiteralPath 'D:\OllamaModels' -Recurse | Measure-Object -Property Length -Sum

Linux 可以检查服务实际环境:

1
2
systemctl show ollama --property=Environment
find /data/ollama/models -maxdepth 2 -type f | head

5. 清理旧目录(确认无误后)

确认模型已在新目录正常工作,再删除旧目录内容,回收 C 盘空间。

不要直接剪切正在使用的目录。更安全的顺序是停止 Ollama、复制、比较、切换变量、重启验证,最后再归档旧目录。

Windows 示例:

1
2
3
4
5
$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

robocopy 返回码 07 通常不代表复制失败,8 及以上才应先停止迁移并检查错误。复制后比较文件数量和总字节数:

1
2
3
4
$oldStats = Get-ChildItem -LiteralPath $oldModels -Recurse -File | Measure-Object Length -Sum
$newStats = Get-ChildItem -LiteralPath $newModels -Recurse -File | Measure-Object Length -Sum
$oldStats
$newStats

设置 OLLAMA_MODELS 并重新启动后,用已有模型完成一次最短生成:

1
ollama run <existing-model> "Reply with exactly: ok"

至少保留旧目录到下一次正常启动。不要在复制完成后立刻永久删除。

回滚方法

如果新目录不可读、模型消失或服务无法启动:

  1. 停止 Ollama;
  2. 删除或恢复原来的 OLLAMA_MODELS 环境变量;
  3. 重新启动 Ollama;
  4. 确认 ollama list 能看到旧模型;
  5. 保留新目录,排查权限、磁盘格式和复制完整性。

Linux 还要确认服务账号具有目标目录权限:

1
2
sudo chown -R ollama:ollama /data/ollama/models
sudo -u ollama test -r /data/ollama/models && echo readable

常见问题

设置后仍写入 C 盘怎么办

  • 先确认环境变量是“系统变量”而不是“当前会话临时变量”。
  • 确认 Ollama 进程已重启。
  • 检查变量名是否准确:必须是 OLLAMA_MODELS

是否需要迁移旧模型文件

如果你不想重复下载,可在停止 Ollama 后手动复制旧模型到新目录,再启动 Ollama 验证。

官方资料