磁盘眼看着满,df -h 一查发现大头是 ollama 拉下来的模型,可你并不知道它们落在哪个目录,也不敢随便挪——怕挪完模型全丢、还得重下几百 GB。这篇把三个动作讲清楚:先定位当前存放位置,再决定是改环境变量还是整目录搬走,最后验证迁移是否生效、旧目录能不能删。
磁盘眼看着满,df -h 一查发现大头是 ollama 拉下来的模型,可你并不知道它们落在哪个目录,也不敢随便挪——怕挪完模型全丢、还得重下几百 GB。这篇把三个动作讲清楚:先定位当前存放位置,再决定是改环境变量还是整目录搬走,最后验证迁移是否生效、旧目录能不能删。
注意一点:下面讲的是 Linux 上的做法。你在 Windows 或 macOS 上用的路径不一样,判断顺序也略有差别,这篇只覆盖 Linux,别直接套。
默认落在哪:先定位,别凭印象
Linux 上 ollama 通常以服务账号运行,模型存在该账号家目录下的隐藏目录里,不是安装目录,也不是你当前登录用户的家目录。所以第一步不是去翻自己的 ~,而是先查出服务实际用的是哪个账号、家目录在哪。用 systemctl 查服务配置里的用户与家目录,就能推出真实路径。容器或自定义安装会覆盖默认值,判断依据永远是运行进程的环境变量,不是文档里的默认值。
- 看服务用哪个账号跑用 systemctl status 或 cat 查看 ollama 的 unit 文件,确认 User 和 WorkingDirectory,从而得到服务账号的家目录。
- 查进程的环境变量对运行中的 ollama 进程读取其环境变量,看是否显式设置了模型存放目录;有的话,那个值就是最终路径,文档里的默认值不作数。
- 列已下载清单核对调本地 ollama 的目录或模型列表接口,看到已下载的模型清单,再对照上一步推出来的目录,两边一致才算定位成功。
- 量一下占用对定位到的目录做一次 du 统计,确认它就是那几百 GB 的大头,避免改错地方白折腾。
- 真实路径由运行进程的环境变量决定,不以文档默认值为准
- 服务账号的家目录不一定是 /root,也不一定是你登录的那个用户
- 容器部署下路径通常是挂载进去的卷,要看挂载点而不是镜像里的默认位置
- 定位完成后再决定迁移方式,顺序别反
两种改法:改环境变量,还是整目录搬
改环境变量适合还没下多少模型、或愿意重下一次的情况:指定新目录后重启服务,后续拉取的模型直接落到新盘。整目录搬移适合已经下了很多、重下代价大的情况:先停服务,再复制(不要用移动,复制完再删原目录),保留权限与所有者,最后挂载或软链到新位置。判断顺序可以概括成:只剩一个模型、网速快,就改环境变量重下;模型多、带宽紧张、还要保留历史版本,就整目录复制。
| 场景 | 推荐做法 | 关键动作 |
|---|---|---|
| 模型很少、可重下 | 改环境变量 | 新目录指好,重启服务,重新拉取 |
| 模型多、重下代价大 | 整目录复制 | 停服务,复制保留权限,再删旧目录 |
| 新盘已固定挂载 | 挂载点直接指过去 | 确认开机自动挂载,再改路径 |
| 新盘是网络盘/移动硬盘 | 不建议做模型库 | 挂载不稳定会导致服务启动找不到路径 |
有一种情况明确不适用:新目录挂在网络文件系统或移动硬盘上、开机不一定挂得上。这类盘做模型库,会导致服务启动时找不到路径而反复重启,看起来像服务坏了,其实是存储没挂上。
改完怎么验证,旧目录什么时候能删
迁移做完别急着删旧目录,先验证三件事:服务能正常起、模型列表里条目还在、实际跑一次推理不报错。只看到列表在、没跑推理,不算验证通过,因为有些路径问题是加载时才暴露的。再看新目录的占用是否随时间增长,确认新拉取的模型确实写到了新位置,而不是又悄悄回到老地方。
- 重启服务重启后看状态是否为运行中,日志里没有找不到路径或权限相关的报错。
- 核对模型列表调列表接口,确认之前下过的模型条目一个不少。
- 跑一次真实推理任选一个模型做一次对话或生成,返回正常才算通过,别只看列表。
- 观察新目录增长再拉一个小模型,看新目录占用是否增加,确认写入方向没跑偏。
旧目录建议先改名而不是直接删,观察一段时间(跑到下次清理磁盘时)确认没被引用,再彻底清掉。这样万一发现还有东西在读老路径,改回来就行。清理动作和目录位置别凭记忆,去站内的部署与目录说明页核对当时的路径约定再动手。
顺手做个空间规划,别等下次又满
按模型参数量和量化档位粗算单模型占用,再乘以你打算保留的版本数量,得出预留空间。具体换算可以到站内的部署测算页按参数量算一遍,别自己估得差一个数量级。模型目录和大文件缓存目录可能不在同一块盘上,清理前先分别看一眼各自占用,别只清了模型盘却发现系统盘也满了。
- 模型库单独放一块大盘,系统盘只留系统和少量缓存
- 给系统盘留出余量,避免系统和模型抢空间导致写入失败
- 把模型目录指向一个固定挂载的独立盘,别用临时的外接盘
- 在团队文档里记下路径和环境变量,换人时不用重新猜
- 定期看一眼 dv 和 df,把清理节奏固定下来
常见问题
ollama pull 下来的模型默认存在哪个目录?
Linux 上默认在 ollama 服务运行账号的家目录下的隐藏模型目录里,常见于 root 或专用的 ollama 用户。不要凭记忆猜,先确认服务以哪个账号运行、再看该账号的家目录,然后以服务账号身份去列出目录内容,才能确认真实路径。
改了模型存储路径,之前下好的模型会消失吗?
会看起来消失。路径是模型的索引地址,换了目录而没把原文件搬过去,模型列表里就查不到它们了,但文件本身还在旧目录。正确顺序是停服务、把旧目录内容完整复制到新目录、保留权限与所有者,再启动服务看列表是否恢复。
能不能只做软链接,不改环境变量?
可以,前提是软链接指向的盘在服务启动时已经挂载好。做法是停服务、把原目录内容移到新盘、在原位置建一个指向新盘的软链接、再启动服务。如果新盘是外接盘或网络盘、开机挂载不稳定,就不建议这么做,服务会因找不到目录而起不来。