Ollama 在 Windows 上装完就开工,很省事,但两样东西都默认塞在 C 盘:程序本体在用户目录,模型在 .ollama\models。程序只有几百 MB 无所谓,模型是真吞盘——7B 级 4bit 量化包约 4.7GB,14B 约 9GB,32B 约 20GB,随手拉几个模型 C 盘就飘红。这篇文章把”模型目录搬家”完整走一遍,顺带说清程序安装位置怎么改,以及每一步容易踩的坑。
这篇解决什么问题
先分清两个位置,它们的迁移方式完全不同:
| 对象 | 默认位置(Windows) | 体量 | 迁移手段 |
|---|---|---|---|
| 程序本体 | C:\Users\<用户名>\AppData\Local\Programs\Ollama | 数百 MB | 重装时指定目录,优先级低 |
| 模型目录 | C:\Users\<用户名>\.ollama\models | 单模型 1~40GB+ | 环境变量 OLLAMA_MODELS,核心操作 |
macOS 与 Linux 的默认模型目录分别是 ~/.ollama/models 和 /usr/share/ollama/.ollama/models(后者是安装脚本方式装的,服务以独立 ollama 用户运行)。三个平台都用同一个环境变量 OLLAMA_MODELS 改模型目录,这也是官方 FAQ 给出的标准做法。
模型目录里只有两个东西:blobs 存权重分片(文件名是 SHA 哈希),manifests 记录”模型名:tag → 分片列表”的映射。搬家就是把这两个目录整体搬走,再把 OLLAMA_MODELS 指过去,ollama list 照常能认出所有模型,不用重新下载。
环境与版本
| 项目 | 要求 |
|---|---|
| 系统 | Windows 10/11(本文主线),macOS / Linux 附带说明 |
| Ollama | 任意近期版本,ollama -v 查看【待补:实际安装版本号】 |
| 磁盘 | 目标盘剩余空间 ≥ 最大模型体积的 2 倍(搬家过程两份并存) |
| 权限 | Windows 写用户级环境变量不需要管理员;Linux 改 systemd 服务需要 sudo |
动手前先确认 Ollama 处于运行状态且 ollama list 有输出,搬家完成后用同一命令对照验证。
分步骤走一遍
第 1 步:确认当前模型目录,心里有数
# Windows(CMD / PowerShell 通用)
dir "%USERPROFILE%\.ollama\models\blobs"
# macOS / Linux
ls -lh ~/.ollama/models/blobs
能看到一堆哈希命名的文件,就是模型的权重分片。记下这个目录的总大小,搬完后对照。
第 2 步:新建目标目录,整体搬走旧模型
# Windows PowerShell:把已有模型整体搬到 D 盘(/MOVE 搬完删源)
robocopy "$env:USERPROFILE\.ollama\models" "D:\ollama\models" /E /MOVE
# macOS / Linux(跨盘建议 cp -a 保留结构,验证能跑通后再清理源目录)
cp -a ~/.ollama/models /data/ollama/models
如果你的模型都是小体积、网速也快,这一步可以跳过——直接设好环境变量后重新 ollama pull 也可以,代价是重新下载几十 GB。
第 3 步:设置 OLLAMA_MODELS 环境变量
# Windows:写入用户级环境变量(永久生效),二选一
setx OLLAMA_MODELS "D:\ollama\models"
[Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "D:\ollama\models", "User")
# macOS:菜单栏应用读不到 ~/.zshrc 里的 export,要走 launchctl
launchctl setenv OLLAMA_MODELS /Volumes/Work/ollama/models
# Linux(安装脚本方式装的服务版):
sudo systemctl edit ollama.service
# 在打开的编辑器里写入:
# [Service]
# Environment="OLLAMA_MODELS=/data/ollama/models"
sudo systemctl daemon-reload
sudo systemctl restart ollama
路径建议全英文、不含空格,省掉一类不必要的麻烦。
第 4 步:彻底重启 Ollama,验证生效
Windows 要从系统托盘右键退出 Ollama 再重新启动,正在跑的 ollama serve 也要停掉——环境变量只在进程启动时读取,这是全文最关键的一步。验证:
ollama list
ollama run qwen2.5:7b "用一句话自我介绍"
# Windows 新开一个终端,确认环境变量已带上
echo %OLLAMA_MODELS%
# 再拉一个小模型(约 1.3GB),确认新模型落在 D 盘
ollama pull llama3.2:1b
ollama list 正常列出全部模型、新目录的 blobs 里出现新分片,迁移即告完成。

第 5 步(可选):程序本体也挪出 C 盘
Ollama 的 Windows 安装器没有图形化的路径选择界面,默认装进用户目录。想自定义程序位置,思路是卸载后用命令行参数重装:OllamaSetup.exe /DIR="D:\Apps\Ollama"【待补:当前版本安装器对该参数的实测结果】。程序本体只有几百 MB,收益不大,优先把第 1~4 步做对即可。
常见坑
坑一:setx 之后”没生效”
setx 只影响之后新启动的进程,当前终端和托盘里常驻的 Ollama 读到的仍是旧值。正确顺序是:设变量 → 托盘右键退出 Ollama → 重新启动 → 新开终端验证 echo %OLLAMA_MODELS%。Linux 侧同理,systemctl edit 之后必须 daemon-reload 再 restart,只 restart 不 reload 会用旧配置。
坑二:只搬文件不改变量,或改变量不搬文件
- 只搬文件、没设
OLLAMA_MODELS:Ollama 仍去 C 盘找模型,ollama list空空如也,很多人以为模型丢了,其实是路径没指过去。 - 只设变量、没搬旧文件:旧模型全部”消失”,只能重新 pull,几十 GB 白白重下。国内网络下重新拉模型很痛,先看下载加速的几种做法再决定要不要跳过搬家。
坑三:路径含中文或空格引发疑难杂症
环境变量值含空格时必须整体加引号;含中文的路径在个别环节(脚本、日志、第三方工具拼路径)容易出兼容问题。路径直接用 D:\ollama\models 这种最稳。
坑四:macOS 把模型放到外置盘,唤醒后加载失败
外置盘睡眠或未挂载时,Ollama 找不到 blob 会直接报错。模型目录要么放内置盘,要么确保外置盘开机自动挂载。此外 macOS 菜单栏应用重启后 launchctl setenv 会失效,需要重新执行或写入启动项,这点和 Windows 的永久环境变量行为不同。
最终效果
迁移完成后的验收清单:
ollama list与迁移前完全一致,模型一个不少;- 新
ollama pull的分片出现在D:\ollama\models\blobs,C 盘不再增长; ollama run加载、对话正常,ollama ps能看到显存占用;- 旧的
C:\Users\<用户名>\.ollama\models已清空或只剩缓存文件。
顺带一个进阶技巧:OLLAMA_MODELS 只接受一个目录,想按用途把模型分到多块盘,可以在目标位置建符号链接(mklink /D)把子目录映射出去。更多路径细节与各平台差异,见Ollama 模型存在哪:路径查看与迁移;装好之后想让模型开口说话,看Ollama API 调用:REST 与 OpenAI 兼容模式。