大模型本地部署 · 收录于 2026-08-30 · 适用 2 工具 ✓ 实测验证

模型都下到 C 盘/系统盘了,怎么把 Ollama 模型目录换到别的盘

已验证 2026-08-30模型占满 C 盘——停服务后把模型目录搬到新盘(先复制确认无误再删旧),systemd 用 systemctl stop ollama。

快速修复

# 假设新目录是 /data/ollama-models(先建好)
# 1) 停服务
sudo systemctl stop ollama            # systemd 安装
# snap 安装: sudo systemctl stop snap.ollama.service

# 2) 搬目录(首次是复制,确认没问题再删旧的;mv 更快但要承担风险)
sudo mv ~/.ollama/models /data/ollama-models
# snap 安装: sudo mv /var/snap/ollama/common/models /data/ollama-models

# 3) 告诉 ollama 新目录
# systemd 安装: 编辑 /etc/systemd/system/ollama.service 的 [Service] 加一行
#   Environment="OLLAMA_MODELS=/data/ollama-models"
sudo systemctl daemon-reload
# Linux 标准安装器(deb/rpm,服务以 ollama 用户运行):新目录必须先给 ollama 用户读写权限
sudo chown -R ollama:ollama /data/ollama-models

# 4) 起服务 + 验证
sudo systemctl start ollama
ollama list      # 模型应该原样还在
  • Snap 安装:改法不同(不是编辑 service 文件),见下面"一步步来"第 3 步:sudo snap set ollama models=/data/ollama-models。
  • Docker 安装:启动参数里加 -e OLLAMA_MODELS=/models -v /data/ollama-models:/models(把宿主机新目录挂进容器)。
  • Windows 直装:系统环境变量里新增用户变量 OLLAMA_MODELS=D:\ollama-models,重启 ollama(托盘退出重开)。

你会遇到什么

Ollama 装好之后一直用默认目录存模型:Linux 是 ~/.ollama/models,Windows 是 C:\Users\你\.ollama\models,Snap 安装是 /var/snap/ollama/common/models。模型一个比一个大(7B 模型动辄 4~5GB),系统盘很快被塞满。

你想把模型放到 D 盘/别的挂载盘,但不知道改哪里——网上说法杂:有人说改 OLLAMA_MODELS,有人说把整个 .ollama 目录搬走,还有人说必须重装。

其实机制很简单:ollama 读哪个目录完全由 OLLAMA_MODELS 环境变量决定,换目录 = 搬目录 + 改环境变量,不用重装、不用重新下载。

本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。

为什么会这样

  1. ollama 每次启动时用 OLLAMA_MODELS 决定模型存放目录;没设这个变量时,才用平台默认目录(Linux/macOS ~/.ollama/models、Windows %USERPROFILE%\.ollama\models、snap /var/snap/ollama/common/models)。
  2. 模型文件 = manifests/(索引)+ blobs/(真正的权重文件),两者都在 models 目录里,整个目录搬走即可,不依赖绝对路径。
  3. 常见误区:直接把模型目录 mv 走而不改环境变量 → ollama 又按默认目录建了个空目录,表现为"模型全没了";其实模型还在原地,改回环境变量或把目录放回去就恢复。
  4. 注意区分:OLLAMA_MODELS 是模型目录;OLLAMA_HOST 是服务地址。Open WebUI 连不上时改的是后者(见 open-webui-ollama-connect),别混。

模型目录解析是「环境变量优先,默认值兜底」:ollama 每次启动时读 OLLAMA_MODELS 决定 models 目录,没设才用平台默认(Linux ~/.ollama/models、Windows %USERPROFILE%\.ollama\models、snap /var/snap/ollama/common/models)。

models 目录内部是 manifests/(模型索引,记录层与 digest)+ blobs/(权重文件本体),目录整体搬走即可——两个子目录之间没有绝对路径依赖。

陷阱来自「解析时点」:直接把目录 mv 走但没改环境变量,下次启动又按默认目录建了空目录,看起来「模型全没了」,其实模型还在原地。

确定性推论:迁移三步=设 OLLAMA_MODELS 指向新目录 → 搬 manifests+blobs → 重启服务(变量只在启动时读);OLLAMA_MODELS 与 OLLAMA_HOST 是两个不同变量(模型目录 vs 服务地址),改错对象等于没改。

一步步来

1. 先看当前模型目录在哪、多大 — 必做

ollama list                    # 有哪些模型
# Linux 默认 ~/.ollama/models;snap 是 /var/snap/ollama/common/models
du -sh ~/.ollama/models        # 看占了多少

2. 停服务(别在跑的时候搬) — 必做

sudo systemctl stop ollama            # curl 脚本安装
sudo systemctl stop snap.ollama.service   # snap 安装

pgrep -af ollama 应没有 serve 进程了(剩 launcher 也不影响)。

3. 按安装方式设置新目录 — 必做

systemd(官方脚本安装):编辑 /etc/systemd/system/ollama.service,在 [Service] 段加:

Environment="OLLAMA_MODELS=/data/ollama-models"

然后 sudo systemctl daemon-reload。

Linux 标准安装器(deb/rpm)与 curl 脚本不一样:标准安装器默认目录是 /usr/share/ollama/.ollama/models,服务以 ollama 用户运行——新目录必须 sudo chown -R ollama:ollama <新目录>,否则 ollama 没有写权限、模型会"消失"(官方维护者在 GitHub issue #9677 中确认);

curl 脚本安装才是当前用户的 ~/.ollama/models。

snap 安装(本机实测过配置机制):snap 的启动脚本读 snapctl get models,所以:

sudo snap set ollama models=/data/ollama-models
sudo systemctl restart snap.ollama.service

Docker 安装:容器加挂载 + 环境变量:

docker run -d -v /data/ollama-models:/models \
  -e OLLAMA_MODELS=/models \
  -p 11434:11434 ollama/ollama

Windows 直装:设置 → 系统 → 关于 → 高级系统设置 → 环境变量,新建用户变量 OLLAMA_MODELS=D:\ollama-models,然后退出托盘 ollama 重新打开。

4. 搬目录 — 必做

# 保险做法:先复制验证,确认无误再删旧的(模型大,复制慢但可回退)
sudo cp -a ~/.ollama/models /data/ollama-models
# 或确认无误后直接 mv
sudo mv ~/.ollama/models /data/ollama-models

5. 起服务 + 验证 — 必做

sudo systemctl start ollama
ollama list                     # 模型必须原样还在(名字/大小一致)
ollama run <之前有的模型> "hi"   # 能跑才算数

6. 确认新下载也落新目录 — 必做

ollama pull <一个小模型>        # 比如 all-minilm:l6-v2(45MB)
ls /data/ollama-models/blobs    # 新文件出现在这里

怎么确认修好了

  • ollama list 和迁移前完全一致(同样的模型名、大小)。
  • 随便 ollama run 一个旧模型能正常出字——不是只读到了 manifests,权重也能加载。
  • 新 ollama pull 后,新目录 blobs/ 里出现新文件;旧目录 blobs/ 数量不再增长。
  • 验证旧目录不再被读:把旧目录临时改名后 ollama list 依然正常(改错环境变量时,这里会变成"模型全没了")。

其它环境的表现

  • Linux curl 脚本安装:默认 ~/.ollama/models,systemd 单元 /etc/systemd/system/ollama.service 加 Environment。
  • Snap 安装:默认 /var/snap/ollama/common/models,配置走 snap set ollama models=...(启动脚本 snap_launcher.sh 里 OLLAMA_MODELS=$(snapctl get models)),不是编辑 service 文件。
  • Docker:-e OLLAMA_MODELS=/models + 卷挂载;卷名随意,关键是要把宿主机目录挂到环境变量指向的容器路径。
  • macOS 直装:launchctl setenv OLLAMA_MODELS /Volumes/xxx/ollama-models(或图形界面 app 的默认 ~/.ollama/models)。
  • Windows:用户环境变量 OLLAMA_MODELS,改完要退出托盘 ollama 重新打开才生效。官方 GUI 路径:设置(Win11)/ 控制面板(Win10)搜索"环境变量"→ "编辑账户的环境变量" → 新建/编辑用户变量 OLLAMA_MODELS=D:\ollama-models(docs.ollama.com/windows 原文)。注意:新版托盘 GUI 里改模型路径与命令行读到的不一致(GitHub issue #12154),一律以环境变量为准;官方还说明卸载 Ollama 不会删除 OLLAMA_MODELS 指向的模型。
  • Open WebUI 用户:换模型目录不影响 Open WebUI 连接(它连的是 OLLAMA_HOST/OLLAMA_BASE_URL),只要 ollama 重启后 ollama list 正常,WebUI 里模型照常出现。

症状

  • 系统盘满了,想给模型换目录但 mv 之后 ollama list 变空。
  • 找遍教程不知道 snap / docker / Windows 各自怎么改。
  • 换完目录新下载的模型还是出现在旧路径。

原因

  • OLLAMA_MODELS 未设置时用平台默认目录;只搬目录不改环境变量,ollama 会按默认目录重建空目录,表现为模型丢失(实际没丢)。不同安装方式(systemd/snap/docker/Windows)配置环境变量的入口不同。

解法

  • 停服务 → 复制/移动 models 目录到新位置 → 按安装方式设置 OLLAMA_MODELS(systemd 加 Environment;snap snap set ollama models=;docker -e;Windows 用户环境变量)→ 重启 → ollama list + 实际运行验证 → pull 一个小模型确认新下载落新目录。
验证证据
  • 实测(ollama/ollama:latest 独立容器,不动本机 snap 实例):
  • 复制本机模型(qwen2.5-0.5b,469M)到新目录 /tmp/ollama-models;
  • 容器 A 设 OLLAMA_MODELS=/models(挂载新目录)→ ollama list 直接显示 qwen2.5-0.5b 491MB(未重新下载);
  • 容器 B 不设 OLLAMA_MODELS → 默认 ~/.ollama/models 存在但为空,ollama list 为空(对照);
  • ollama show qwen2.5-0.5b 正常;ollama run qwen2.5-0.5b "say hi" CPU 正常出字;
  • ollama pull all-minilm:l6-v2 → success,新目录 blobs 2→6,ollama list 同时显示两个模型;
  • 本机 snap 配置机制核对:/snap/ollama/current/bin/snap_launcher.sh 中 OLLAMA_MODELS=$(snapctl get models),snap get ollama 有 models 键 → snap 改目录用 sudo snap set ollama models=<路径>;
  • 测试容器与临时目录已清理。
  • 完整日志:实测复现日志(2026-08-30)

相关 canonical

按「前置 → 同根 / 同域 / 相关」读:

参考资料

  • Ollama 官方文档(Windows:安装位置 / 模型目录 / 环境变量)— <https://docs.ollama.com/windows>
  • GitHub issue ollama/ollama#9677(Linux 标准安装器需 chown ollama:ollama)— <https://github.com/ollama/ollama/issues/9677>
  • GitHub issue ollama/ollama#12154(GUI 改路径与 CLI 不一致,以环境变量为准)— <https://github.com/ollama/ollama/issues/12154>

适用工具 (2)

本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。

ollamadocker · 外部工具

来源与证据

收录 验证 ✓ 实测验证适用 2 工具
方案含本地实测或来源可复核的解法;未实测项已在文中如实标注。

← 大模型本地部署 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡