ollama_models路径

模型与算力

讲清 Ollama 模型文件到底存在哪、怎么改存储位置、多盘和迁移时怎么排查,给本地跑模型的人一份能直接照做的路径速查。

本地跑 Ollama 的人常卡在同一处:模型下完了,想备份、换硬盘、清理空间或者挪到另一台机器,却不知道文件落在哪。这篇不讲安装、不讲模型选型,只解决路径这一件事——怎么查、怎么改、改完怎么验证,以及改错之后的排查顺序。

本地跑 Ollama 的人常卡在同一处:模型下完了,想备份、换硬盘、清理空间或者挪到另一台机器,却不知道文件落在哪。这篇不讲安装、不讲模型选型,只解决路径这一件事——怎么查、怎么改、改完怎么验证,以及改错之后按什么顺序排查。

先把一个前提说清楚:Ollama 的模型不是一个文件,而是一份清单加一堆权重分片。你按模型名去找单个大文件,大概率找不到,这也是很多人以为「模型没下下来」的原因。搞明白这两层结构,后面换盘和迁移才不会踩坑。

模型文件默认落在哪:先认清目录结构

Ollama 的存储分成两层。上面一层是清单和元数据,记录「这个模型由哪些层组成、每层叫什么名字」;下面一层是真正的权重 blob,文件名是一串哈希,不是模型名。你看到的模型体积几乎全在 blob 这一层,清单本身很小。混淆这两层是后面所有问题的根源:备份只拷了清单、迁移只搬了 blob,都会出现「文件在但加载报错」。

清单目录
存模型名、层组成、元数据,体积很小,但恢复时不能少
blob 目录
存真正的权重分片,文件名是哈希,体积占绝大部分
默认位置
不同系统、不同安装方式不一样,不要死记路径,用环境变量定位

默认位置怎么找?Windows、macOS、Linux 各有一套约定,但更麻烦的是安装方式:用安装包装的、手动解压二进制跑的、用包管理器装的,落点可能不同。所以别去背路径字符串,直接去查当前生效的环境变量,以及服务端启动时打印的路径,这两个最权威。

  • 权重是按层分片存的,单个文件名不是模型名,按模型名搜文件搜不到
  • 清单目录和 blob 目录要一起看,只认识其中一个,迁移必出问题
  • 不同安装方式落点不同,以运行时打印的实际路径为准
  • 系统盘空间紧张,往往就是 blob 目录在悄悄变大

怎么确认自己的实际路径:三条命令按顺序跑

确认路径有一条铁律:先看运行中的配置,再改文件。反过来做,你会对着一个已经被进程覆盖掉的配置文件反复怀疑人生。下面三条按顺序跑,基本能定位到真实位置。

  1. 查进程当前生效的环境变量看正在跑的 Ollama 进程实际读到了什么,这是最权威的来源,比翻任何配置文件都可靠。改之前和改之后都查一次,用来对比。
  2. 看服务端启动日志启动日志通常会打印模型加载和存储相关的路径,能直接暴露真实位置。如果日志里显示的路径和你想的不一样,说明你的配置没被读到。
  3. 列候选目录按体积排序把几个可能的位置都列出来看占用,几个 G 以上的那一个基本就是它。小体积的多半是清单目录,别拿它当全部。
# 第一步:看进程实际生效的环境变量
# 用系统自带的进程查看工具,定位 Ollama 服务进程并读它的环境

# 第二步:看服务端启动日志里的模型存储路径
# 日志位置随安装方式不同,先在服务管理里找到它

# 第三步:列候选目录并按体积排序
# 依次确认清单目录和 blob 目录各自在哪、各占多少

三条跑完,你手上应该有两个路径:一个清单目录、一个权重目录。把这两个记下来,后面换盘和迁移都围绕它们做。如果只想清理空间,到站内的价格与资源页面核对当时的模型体积参考,别凭感觉删。

设置 ollama_models:把模型挪到别的盘

标准动作是固定的一条流水线:停服务 → 设环境变量 → 迁移已有文件 → 重启 → 拉一个小模型验证。顺序不能乱,尤其是最后一步验证,它是唯一能证明改成功了的手段。

环境变量有个生效范围的问题:只在当前终端生效、对当前用户生效、对系统全局生效,三者互不相同。你设完没重启服务,等于没设;你设的是用户变量,但服务是以系统身份跑的,也等于没设。这是「明明改了却没用」的最常见原因。

场景该改哪里常见坑
直接命令行跑当前 shell 环境变量换个终端窗口就丢了
装成系统服务服务自己的环境配置改用户变量不生效
容器里部署容器挂载和环境变量改宿主机环境变量无效
外置盘 / NAS挂载点和权限,注意启动顺序开机时盘还没挂上,服务起不来
  • 多盘机器建议:系统盘只放程序,权重统一放数据盘,方便单独扩容和备份
  • 外置盘和网络盘要确认文件系统权限,以及开机挂载顺序,否则服务会在盘不可用时起不来
  • 容器部署改宿主机环境变量没用,要动容器的挂载和环境变量
  • 改完必须拉一个小模型实测,能加载才算成功

迁移与排错:换盘、换机、多用户共用

跨机迁移时,权限和属主必须先对齐。文件都在、路径也对,但服务跑不起来,多半是属主不对或者权限不足,这是「路径对了还是报错」里最常见的一类。迁移完先确认属主和读写权限,再谈能不能加载。

多用户共用同一份权重能省空间,但风险也真实:一个用户误删或者写坏,会影响其他所有人。要不要共用,看两点——是不是同一台机器、是不是互相信任的小团队。不满足就别共用,各存各的更省心。

  1. 服务是否重启没重启,新配置根本不生效,先排除这一条。
  2. 环境变量是否生效回到进程层面查一次实际读到的值,别只看配置文件。
  3. 目录属主与权限确认运行服务的账号对清单目录和 blob 目录都有读写权限,属主不对就改属主。
  4. 磁盘空间与挂载状态确认目标盘已挂载、剩余空间够、不是只读挂载。这四步依次走,别跳。

最后说备份。备份清单目录加上 blob 目录,恢复时最省事,不容易对不上。如果你只想省空间,正确做法是先删不用的模型(走正常的删除操作),而不是手动去 blob 目录里删单个哈希文件——手删极容易留下一个指向不存在层的清单,之后加载必报错。

路径问题里,绝大多数「改了没用」不是配置写错了,而是改的那份配置压根没被运行中的进程读到。
下一步确认完本地路径,接着该看的是模型体积和存储开销怎么权衡。到站内的模型资料库和资源目录核对当时的数字,比凭印象删文件靠谱。

常见问题

我把环境变量改了,为什么模型还是下载到老地方?

多半是服务没重启,环境变量只对之后启动的进程生效。Ollama 是常驻服务,改完要先停掉再启动。另外要确认你改的是当前生效的那一级变量——用服务方式安装时,改当前终端或用户级变量都可能不生效,得按系统服务的方式配置。

能直接把模型目录整个复制到另一台机器吗?

可以,但复制完必须处理权限和属主,尤其是跨系统或跨用户复制的情况,不然会出现「文件都在、加载失败」。复制时清单目录和权重目录要一起带走,只搬权重容易出现模型列表里看不到的情况。搬完先拉一个小模型跑通,再验证大模型。

模型目录能不能放移动硬盘或者网络盘?

能放,但要想清楚链路稳定性:盘没挂上服务就起不来,网络抖动会让加载超时,磁盘休眠还会带来首字节延迟。只做归档备份没问题;要天天跑推理,建议放本机固定盘,把移动盘当冷备。多用户共用同一份目录时,权限和误删风险要先约定好。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。