Ollama 大模型私有化部署与彻底卸载指南(Windows/Linux)

文章来源声明: 原文作者:70后写java的老码农; 来源站点:掘金; 原文链接:https://juejin.cn/post/7702740790343630888; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

面向被 C 盘模型文件困扰的开发者和私有化部署用户,把卸载残留与重装配置讲透,步骤可直接照做,适合作为 Ollama 落地的操作手册。

我写这篇笔记的起因很朴素:C 盘被模型文件吃掉快 60G,想清理的时候才发现,"卸载 Ollama"这件事压根没有想象中那么简单。

在设置里点了卸载,回头敲一句 ollama list,模型还在。手动删了模型目录,手一抖又执行了 ollama serve,服务居然还能起来。折腾半天才想明白,Ollama 不是那种"装在一个文件夹里、删了就没"的软件,它在系统里散着好几层东西,任何一层没清干净,你都会怀疑自己是不是卸载失败了。

下面是我自己走了一遍的完整流程,Windows、Linux 都覆盖到了,最后再讲重装以后最该先做的一件事。

一、动手之前,先看清 Ollama 留了几摊东西

很多人卸载翻车,是从第一步就删错了地方。Ollama 的安装实际上分成了四块,弄清楚这四块,后面每一步清理才有意义。

程序本体。Windows 上是安装包装出来的程序目录,Linux 上是 /usr/local/bin/ollama 这么一个二进制文件。它是真正跑推理的服务端,启动后在本机监听 127.0.0.1:11434。

命令行工具和 PATH。Windows 安装包会顺手把 Ollama 的路径写进环境变量。程序本体即使删了,PATH 里那条指向还在,你在终端敲 ollama 照样有反应,只不过是个报错的"死命令"。不了解这一层的人,常常误以为卸载失败。

后台服务。Windows 靠托盘程序和开机启动项,Linux 走 systemd。服务没停,进程就在,文件句柄还被占着。

模型仓库和缓存。这是占空间的大头,默认位置有两个:

  • Windows:C:\Users<你的用户名>.ollama\models
  • Linux 用官方脚本安装时:/usr/share/ollama/.ollama/models

这个目录下面分 blobs 和 manifests 两层。blobs 里是哈希命名的分片文件,模型的实际数据都在这里;manifests 存的是索引信息,体积很小。所以千万别跑到 blobs 里按模型名找文件,磁盘上根本看不出对应关系,很容易误删别的模型。

如果你之前用环境变量 OLLAMA_MODELS 把模型挪过位置,那上面的默认路径就不作数了,得按你设过的路径来。顺手看一眼当前到底用了哪个目录,不亏。

二、各平台彻底卸载

原则是先停服务、再删模型、然后卸程序、最后清残留,顺序别颠倒。

Windows

先退掉托盘里的 Ollama,再用任务管理器确认没有 ollama.exe 残留进程。剩下的步骤:

  1. 在"设置 → 应用 → 已安装的应用"里找到 Ollama,点卸载;用 winget 装的也可以直接 winget uninstall Ollama.Ollama。
  2. 删掉模型目录:C:\Users<你的用户名>.ollama。顺手看一眼 %LOCALAPPDATA%\Ollama,有些版本会把日志和运行时文件放这儿,程序本体默认装在 %LOCALAPPDATA%\Programs\Ollama,卸载器失效时应手动检查,一并清掉。
  3. 打开"环境变量"窗口,检查有没有 Ollama 相关的条目(比如你之前加过的 OLLAMA_MODELS、OLLAMA_HOST),不需要就删掉,免得下次重装读到旧配置。
  4. 新开一个终端敲 ollama --version,提示命令不存在,才算清干净。

Linux

用官方脚本安装的情况,按顺序执行:

# 停服务并取消开机自启
sudo systemctl stop ollama
sudo systemctl disable ollama
​
# 删除服务定义文件
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
​
# 删除二进制文件(位置可能是 /usr/local/bin 或 /usr/bin)
sudo rm $(which ollama)
​
# 删除模型和 Ollama 专用用户、用户组
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
​
# 如果你不是用官方脚本安装,而是以普通用户身份直接运行 Ollama,模型可能在 ~/.ollama/models
rm -rf ~/.ollama

Docker

如果你是通过容器跑的,就简单得多:

docker stop ollama
docker rm ollama
docker image rm ollama/ollama
# 如果建过命名卷,一并删掉
docker volume rm ollama

三、重新部署

环境清干净了,接着装。装之前先算一笔硬件的账,免得模型一下载就卡在"能不能跑得动"上。

装之前先看清硬件

模型大小和你的内存、显存直接挂钩。往大了选不是勇气,是折磨:

模型规模大致文件大小建议配置适合的场景
1B~2B1~2 GB8 GB 内存,无独显也能跑验证安装、轻量问答
7B~8B4~5 GB16 GB 内存,有 8 GB 显存更顺日常问答、文档处理、写代码
13B~14B8~9 GB12~16 GB 及以上显存复杂推理、长文本生成
30B~70B17~40 GB(随规模与量化等级浮动)专业显卡 + 32 GB 以上内存少数高精度场景

普通笔记本上先拿 7B 级别的中文模型练手,跑顺了再往上加。

安装(Windows / Linux)

  • Windows:官网下 OllamaSetup.exe,双击一路 Install,装完托盘会出现小羊驼图标。也可以在 PowerShell 里跑 irm https://ollama.com/install.ps1 | iex。
  • Linux:一行脚本搞定,它会自动注册 systemd 服务:
curl -fsSL https://ollama.com/install.sh | sh

装完在终端执行 ollama --version,能打印出版本号就说明服务已经就位。

ollama --version
ollama version is 0.5.4
​
systemctl status ollama
​
● ollama.service - Ollama Service
   Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2026-10-31 14:01:29 CST; 31min ago
 Main PID: 1551 (ollama)
    Tasks: 9
   Memory: 4.4G
   CGroup: /system.slice/ollama.service
           └─1551 /usr/local/bin/ollama serve
​
Oct 31 14:05:54 dockerRegistry ollama[1551]: llm_load_print_meta: FIM REP token    = 151663 '<|repo_name|>'
Oct 31 14:05:54 dockerRegistry ollama[1551]: llm_load_print_meta: FIM SEP token    = 151664 '<|file_sep|>'
........

重装后的第一件事:先把模型位置钉死

这一步很多人跳过,然后过两周又被 C 盘塞满。Ollama 的模型路径完全由环境变量 OLLAMA_MODELS 决定,服务启动那一刻读一次。所以别再等下载完才想着迁移,装完立刻设。

先建一个不含中文和空格的目录,比如 D:\ollama\models,然后:

  • Windows:在"环境变量"里新建 OLLAMA_MODELS,值填目标目录;之后彻底退出 Ollama 再启动,甚至注销重登一次,确保后台进程读到新值。
  • Linux:在 ~/.zshrc 或 ~/.bashrc 里加 export OLLAMA_MODELS=~/ollama/models。如果你用的是 systemd 服务,光在 shell 里 export 没用,得改服务配置里的 Environment 项:
sudo systemctl edit ollama.service
# 在 [Service] 段落下加一行:
# Environment="OLLAMA_MODELS=/mnt/data/ollama/models"
​
sudo systemctl daemon-reload    # 非必需
sudo systemctl restart ollama

想确认改成了没,敲 ollama list 看模型列表,路径改对后 ollama list 应该是空的,这是正常的,重新 pull 即可;若仍能看到旧模型,说明服务还在用旧路径。或者直接去目标目录看有没有生成 blobs、manifests 两层结构。

拉第一个模型

选个轻快的起步,比如:

ollama run deepseek-r1:7b
​
# 量机型可换 deepseek-r1:1.5b

第一次执行会自动下载,下完直接进对话界面。只想下载不想马上聊,用 ollama pull deepseek-r1:7b。想退出对话,输入 /exit。

想验证接口通不通,可以用一条 curl:

curl http://localhost:11434/api/generate -d '{
  "model": "deepseek-r1:7b",
  "prompt": "用一句话解释什么是递归",
  "stream": false
}'
​
{"model":"deepseek-r1:7b","created_at":"2026-10-31T07:32:42.178431852Z","response":"<think>嗯,我现在要理解一下什么是递归。首先,我看到“递归”这个词由“递”和“归”组成。字面意思可能是指逐步回来的意思吧?那在编程里面,递归应该是什么样的呢?......<think>\n\n递归是程序中一种函数或过程调用自身的方式,用于解决可分解为相似子问题的问题。它通过将问题逐步缩小规模,直到达到基本情况(终止条件),再逐步返回结果,从而避免重复计算并提高代码的可读性。","done":true,"done_reason":"stop","context":[151644,....,1773],"total_duration":157202417280,"load_duration":3168462007,"prompt_eval_count":9,"prompt_eval_duration":1761000000,"eval_count":586,"eval_duration":152237000000}
​
# 注意 response 里 <think> 段是 R1 这类推理模型的思考过程,属于正常输出,最终答案在它之后。

能正常返回 JSON,就说明本地服务完全可用,接下来各类支持 OpenAI 兼容接口的客户端、编辑器插件都能接上来了。

四、几个值得提前知道的环境变量

Ollama 没有独立的配置文件,所有关键设置都走环境变量,改完重启服务才生效。除了 OLLAMA_MODELS,还有几个会经常用到:

  • OLLAMA_HOST:监听地址,默认只对本机开放。想让局域网其他设备调用,设成 0.0.0.0:11434;想换端口,也在这里带上,比如 0.0.0.0:8080。
  • OLLAMA_ORIGINS:浏览器端跨域调用时用来放开来源,测试阶段可以设成 *。
  • OLLAMA_KEEP_ALIVE:模型加载后驻留内存的时间,默认 5 分钟。频繁用的话调大些,比如 24h,能省掉反复加载的等待。
  • OLLAMA_MAX_LOADED_MODELS 和 OLLAMA_NUM_PARALLEL:同时加载的模型数、并发请求数,机器内存充足时可以适当放开。

五、几个常见的坑

  • 改完变量没生效。基本都是忘了重启服务。环境变量在进程启动时读一次,之后改系统变量不影响已经跑着的进程。
  • 下载模型卡住或者超时。先确认服务在运行、网络通;实在慢的话,换个时间段,或通过 HTTPS_PROXY 走代理加速(注意不要设 HTTP_PROXY,官方 FAQ 明确提示它可能中断客户端连接)。Ollama 没有"镜像加速变量"这类东西,别去找不存在的开关。
  • Linux 上 export 了变量但服务还是用旧路径。因为服务不是从你的 shell 启动的,必须在 systemd 的 Environment 里改。
  • 删了模型空间没回来。检查是不是有两份模型目录——旧路径和新路径各存了一份,迁移时复制完忘了删旧的。

整个流程走下来,其实就两件事:卸载时记住 Ollama 有四层残留,别只删程序;重装时先把模型位置定好,别等 C 盘报警才想起迁移。环境干净了,后面不管是接本地知识库、写 Agent,还是纯离线聊天,都会省心很多。