1. 为什么 Windows 下 Ollama 的路径问题值得单独写一篇
很多人第一次在 Windows 上装 Ollama,都是直接双击安装包一路下一步,装完跑个ollama run发现能用,就觉得万事大吉了。但用不了几天,C 盘就开始报警——模型文件动辄几个 GB 甚至几十 GB,默认全塞在系统盘的用户目录里,再加上 Ollama 本身的程序文件也在 C 盘,一台 512GB 的笔记本很快就捉襟见肘。我自己第一台用来跑本地模型的机器就是这么被撑爆的,后来不得不花了一个下午做迁移,踩了不少坑,所以这篇笔记专门把 Windows 下 Ollama 的安装路径和模型存储路径这两件事讲透。
核心要解决的就两个问题:Ollama 程序本身装到非系统盘,以及模型文件(blobs 和 manifests)存到非系统盘。前者影响的是程序体积和后续升级,后者影响的是磁盘空间和读写性能。这两个路径的修改方式完全不同,一个靠安装器参数,一个靠环境变量,很多人混为一谈,结果改了半天没生效。
这篇内容适合三类人看:一是 C 盘空间紧张、想把 Ollama 整体搬到 D 盘或数据盘的普通用户;二是需要在多块硬盘之间做模型管理的进阶玩家;三是给团队做本地大模型部署、需要统一路径规范的运维同学。下面我会把每一步的原理、参数、验证方法都写清楚,你照着做基本不会翻车。
2. 先搞清楚 Ollama 在 Windows 上到底把文件放哪了
2.1 默认路径的分布逻辑
Ollama 在 Windows 上的文件分布其实分三块,很多人只知道其中一块。第一块是程序安装目录,默认在C:\Users\<用户名>\AppData\Local\Programs\Ollama,这里面是可执行文件、依赖库和更新组件。第二块是模型存储目录,默认在C:\Users\<用户名>\.ollama\models,这是最占空间的部分,所有 pull 下来的模型权重都在这里。第三块是配置和日志,散落在.ollama目录下的history、id_ed25519等文件里。
为什么 Ollama 默认选用户目录而不是Program Files?因为用户目录不需要管理员权限就能读写,安装和更新都不弹 UAC,对普通用户最友好。但代价就是全压在 C 盘,而且用户目录往往还开着 OneDrive 同步,模型文件被同步上去会非常麻烦。我见过有人.ollama被 OneDrive 同步,几十 GB 上传卡了好几天,这个坑后面会细说。
2.2 两个路径的修改方式为什么不一样
程序安装路径是在安装阶段决定的,安装器(OllamaSetup.exe)支持一个/DIR参数来指定目标目录,装完之后程序位置就固定了,想改只能卸载重装。而模型存储路径是运行时决定的,Ollama 每次启动会读环境变量OLLAMA_MODELS,如果这个变量存在就用它,不存在才回落到默认的.ollama\models。所以模型路径可以随时改,改完重启服务就生效,不用重装。
理解这个差异很关键。很多人想改模型路径,却跑去重装程序,白折腾;也有人想改程序路径,却去设环境变量,当然没用。记住一句话:程序路径靠安装参数,模型路径靠环境变量。
2.3 一张表看清默认位置和可改性
| 内容 | 默认路径 | 修改方式 | 是否需要重装 |
|---|---|---|---|
| 程序文件 | C:\Users\<用户>\AppData\Local\Programs\Ollama | 安装时/DIR参数 | 是 |
| 模型文件 | C:\Users\<用户>\.ollama\models | 环境变量OLLAMA_MODELS | 否 |
| 配置/密钥 | C:\Users\<用户>\.ollama\ | 随模型目录迁移 | 否 |
| 日志 | %LOCALAPPDATA%\Ollama\ | 一般不动 | 否 |
这张表建议先存下来,后面每一步操作都对照着看,不容易乱。
3. 把 Ollama 程序装到 D 盘的完整操作
3.1 安装前的准备工作
动手之前先做三件事。第一,确认目标盘有足够空间,程序本身大概 1-2GB,但留 5GB 余量比较稳妥。第二,确认目标目录路径不含中文和空格,比如D:\Ollama就很好,D:\我的软件\Ollama 程序这种容易出问题,安装器对特殊字符的处理并不总是可靠。第三,如果之前装过 Ollama,先去“设置-应用”里卸载干净,并手动删掉残留的AppData\Local\Programs\Ollama目录,否则新装可能复用旧路径。
提示:卸载后
.ollama\models目录默认不会被删除,如果你打算保留已下载的模型,先别动它,等新程序装好后再迁移。
3.2 用命令行参数指定安装目录
Ollama 的 Windows 安装包本质是个自解压安装器,支持/DIR参数。操作方式是在安装包所在目录打开 PowerShell 或 CMD,执行:
# 在安装包所在目录打开终端,假设安装包名为 OllamaSetup.exe .\OllamaSetup.exe /DIR="D:\Ollama"注意几个细节。/DIR和路径之间用等号连接,路径用英文双引号包起来,防止空格被截断。如果你在 CMD 里执行,去掉前面的.\,直接写OllamaSetup.exe /DIR="D:\Ollama"。执行后会弹出正常的安装界面,但安装位置已经被锁定到你指定的目录,界面上不会显示路径选择,装完去D:\Ollama看就能看到ollama.exe。
实测下来,这个参数在较新版本的安装器上稳定可用。如果遇到参数不生效、还是装到默认位置的情况,多半是安装包版本太老,去官网下最新的OllamaSetup.exe重试即可。
3.3 验证程序是否装对位置
装完后别急着跑模型,先验证。打开 PowerShell,执行:
# 查看 ollama 可执行文件的实际位置 Get-Command ollama | Select-Object Source如果输出是D:\Ollama\ollama.exe,说明程序路径改成功了。如果还是指向AppData\Local\Programs\Ollama,说明/DIR没生效,需要卸载重来。另一个验证方式是直接看D:\Ollama目录下有没有ollama.exe和lib文件夹,有就对了。
注意:程序装到 D 盘后,PATH 环境变量会被安装器自动更新指向新位置,一般不用手动改。如果
Get-Command ollama报找不到命令,检查一下系统 PATH 里有没有D:\Ollama,没有就手动加进去。
3.4 程序路径修改的常见坑
第一个坑是权限问题。如果 D 盘是 NTFS 且当前用户没有写权限,安装会失败或装到一半报错。解决办法是右键目标文件夹,给当前用户完全控制权限。第二个坑是杀毒软件拦截。某些安全软件会把非系统盘的可执行文件当成可疑对象,安装后ollama.exe被隔离,表现为命令找不到。遇到这种情况把D:\Ollama加入白名单。第三个坑是升级覆盖。Ollama 自动更新时,有时会把新版本装回默认目录,导致你有两份程序。建议关闭自动更新,或者每次更新后重新用/DIR参数手动装。
4. 修改模型存储路径:环境变量才是正解
4.1 OLLAMA_MODELS 环境变量的作用机制
模型路径的修改全靠OLLAMA_MODELS这个环境变量。Ollama 服务启动时会检查这个变量,有值就用它作为模型根目录,没有就用默认的%USERPROFILE%\.ollama\models。这里有个容易误解的点:变量值应该是 models 目录本身,而不是它的上级目录。比如你想让模型存在D:\OllamaModels,变量就设成D:\OllamaModels,Ollama 会在这个目录下自己建blobs和manifests两个子目录。如果你设成D:\Ollama,那模型就会跑到D:\Ollama\blobs去,和程序文件混在一起,不推荐。
为什么用环境变量而不是配置文件?因为 Ollama 在 Windows 上没有独立的配置文件来指定模型路径,环境变量是官方支持的唯一方式。这也带来一个好处:不同用户账户可以设不同的模型路径,互不干扰。
4.2 图形界面设置环境变量的步骤
最稳妥的方式是通过系统设置来加,这样对所有终端生效。步骤是:按Win + R输入sysdm.cpl回车,切到“高级”选项卡,点“环境变量”。在“用户变量”区域点“新建”,变量名填OLLAMA_MODELS,变量值填你的目标路径,比如D:\OllamaModels。确定保存后,必须重启 Ollama 服务才生效。
为什么强调用户变量而不是系统变量?因为系统变量需要管理员权限,而且对所有用户生效,个人使用没必要。用户变量只影响当前账户,更安全也更灵活。如果你是多用户共用一台机器,每个用户设自己的模型路径,反而能避免互相覆盖。
4.3 用命令行快速设置(适合脚本化)
如果你习惯命令行,或者要写部署脚本,可以用setx命令:
# 设置用户级环境变量,立即写入注册表 setx OLLAMA_MODELS "D:\OllamaModels"setx的特点是写入后对新开的终端生效,当前已开的终端读不到。所以设完要关掉所有终端重开,或者干脆重启。另外setx有长度限制(1024 字符),路径短的话没问题。如果路径里有特殊字符,记得用双引号包住。
提示:
setx设置的值会永久写入注册表,想撤销就用setx OLLAMA_MODELS ""清空,或者去图形界面删掉这个变量。
4.4 迁移已有模型的正确姿势
如果你已经下了一堆模型,不想重新 pull,就得把旧目录的内容搬过去。正确顺序是:先停掉 Ollama 服务(任务栏图标右键退出,或在任务管理器里结束ollama.exe和ollama app.exe),然后把C:\Users\<用户>\.ollama\models整个文件夹剪切到D:\OllamaModels,再设置环境变量,最后重启 Ollama。顺序错了会出问题——如果先设变量再搬文件,Ollama 启动时找不到模型会以为你没下过,虽然不会删文件,但列表会空。
搬完之后验证:执行ollama list,如果之前下过的模型都还在,说明迁移成功。再ollama run一个模型试试,能正常加载就彻底没问题了。
5. 路径改完后的验证与性能实测
5.1 三步验证法确认路径生效
改完路径别凭感觉,用三个命令验证。第一步,ollama list看模型列表是否正常。第二步,跑一个模型,同时打开任务管理器看磁盘活动,如果读写集中在 D 盘而不是 C 盘,说明模型路径生效了。第三步,去D:\OllamaModels目录下看有没有blobs和manifests文件夹,且blobs里有大文件,这就实锤了。
我一般还会加一步:ollama show <模型名>看模型信息能否正常读取,这个命令会实际访问模型文件,能读出来说明路径和权限都没问题。
5.2 机械盘 vs 固态盘的加载速度差异
模型放哪块盘,加载速度差别很大。我实测过同一个 7B 模型,放在 SATA 固态上首次加载约 3-5 秒,放在机械盘上要 15-20 秒,差距非常明显。原因是模型加载时要一次性把几 GB 的权重读进内存,机械盘的顺序读虽然不慢,但随机读和小文件元数据操作拖后腿。所以如果条件允许,模型目录优先放 NVMe 固态,其次 SATA 固态,机械盘只适合当仓库、不常跑的模型才放。
如果你的 D 盘是机械盘而 C 盘是固态,那就要权衡了:放 C 盘快但占系统盘,放 D 盘省空间但慢。我的建议是常用模型放固态,冷门模型放机械盘,通过切换OLLAMA_MODELS来管理,虽然麻烦点但最合理。
5.3 多盘管理的进阶玩法
如果你有多个模型目录想切换,可以准备几个不同的环境变量值,用批处理脚本切换。比如建两个脚本use-ssd.bat和use-hdd.bat,内容分别是setx OLLAMA_MODELS "D:\Models-SSD"和setx OLLAMA_MODELS "E:\Models-HDD",需要切换时跑一下再重启 Ollama。这样不用每次手动改环境变量,适合模型多、盘多的人。
注意:切换模型目录后,
ollama list只会显示当前目录下的模型,另一个目录的模型不会出现。这不是丢失,只是没被扫描到,切回去就又能看到。
6. 常见问题排查速查表
6.1 环境变量设了但不生效
这是最高频的问题。排查顺序:第一,确认变量名拼写完全正确,是OLLAMA_MODELS不是OLLAMA_MODEL或OLLAMA_MODELS_PATH,一个字母都不能错。第二,确认设的是用户变量还是系统变量,两者都设了的话用户变量优先。第三,确认 Ollama 服务真的重启了,任务栏图标退出不算,要去任务管理器确认ollama.exe进程没了再启动。第四,确认路径存在且可写,路径不存在 Ollama 会回落到默认目录而不报错,很隐蔽。
6.2 模型列表变空或模型丢失
多半是迁移时顺序错了,或者环境变量指向了一个空目录。先检查OLLAMA_MODELS指向的目录里有没有blobs和manifests,没有说明文件没搬过来。如果文件在但列表空,可能是权限问题导致 Ollama 读不到,给目录加当前用户完全控制权限再试。还有一种情况是路径里有中文,Ollama 对非 ASCII 路径支持不完善,改成纯英文路径。
6.3 下载模型时报磁盘空间不足
即使模型路径改到了 D 盘,Ollama 下载时可能还会往 C 盘的临时目录写缓存。解决办法是同时把系统临时目录也指到大盘,或者确保 C 盘至少有模型大小两倍的余量。另外ollama pull下载慢是另一个话题,和路径无关,但如果你发现下载卡在某个百分比不动,先检查磁盘空间而不是网络。
6.4 程序升级后路径被重置
前面提过,自动更新可能把程序装回默认目录。如果你发现Get-Command ollama指向变了,或者 D 盘的程序版本旧了,就是这个问题。对策是关闭自动更新(设置里可以关),或者每次更新后手动用/DIR重装。模型路径一般不受升级影响,因为环境变量还在。
| 问题现象 | 最可能原因 | 解决动作 |
|---|---|---|
| 环境变量不生效 | 变量名拼错/没重启服务 | 核对拼写,任务管理器结束进程重启 |
| 模型列表为空 | 迁移顺序错/路径空 | 检查 blobs 目录,重设变量 |
| 下载报空间不足 | C 盘临时目录满 | 清理 C 盘或改临时目录 |
| 升级后路径重置 | 自动更新覆盖 | 关闭自动更新,手动重装 |
| 命令找不到 | PATH 未更新 | 手动把安装目录加进 PATH |
7. 几个我踩过的坑和实操心得
第一个心得是先规划再动手。我最初是装完用了一阵才想起来迁,结果模型、配置、密钥分散在好几处,搬起来很乱。后来重装时我直接一步到位:程序装D:\Ollama,模型设D:\OllamaModels,配置跟着模型目录走,整个结构清清爽爽。建议新装的同学一开始就这么规划,省得后面折腾。
第二个心得是别把模型目录放进任何同步文件夹。OneDrive、坚果云这类同步工具会扫描.ollama目录,几十 GB 的模型文件被同步上去,既占云端空间又拖慢本地 IO。我有个朋友就是.ollama在 OneDrive 里,每次 pull 模型 OneDrive 就疯狂上传,机器卡得没法用。解决办法是把模型目录设到同步范围之外,或者把.ollama加入同步排除列表。
第三个心得是路径尽量短且纯英文。Windows 的路径长度限制虽然在新版里放宽了,但 Ollama 内部有些操作对长路径支持不好,路径太深容易出莫名其妙的错误。D:\OllamaModels这种就很好,别搞成D:\软件\AI\大模型\ollama\models\正式环境这种又长又中文的。
第四个心得是改完路径后跑一次完整流程验证。不要只ollama list看一眼就完事,要真的 pull 一个小模型、run 一下、再删掉,走完整流程才能发现权限、路径、服务重启这些环节的问题。我一般用ollama run qwen2.5:0.5b这种小模型做验证,几百 MB,快得很。
最后分享一个判断路径是否真的生效的小技巧:跑模型的时候打开资源监视器(resmon),看“磁盘”选项卡里ollama.exe的读写路径,如果全是 D 盘,那就百分百生效了。这个方法比看列表靠谱,因为列表可能读的是缓存,而磁盘活动骗不了人。