当系统盘空间告急,或准备把大容量模型转移到更快的 SSD 时,直接删除再下载既耗时,也可能丢失自定义模型。更稳妥的办法是完整迁移模型目录,再通过 OLLAMA_MODELS 环境变量切换存储位置。下面给出一套适用于 Windows、Linux 和 macOS 的无损调整流程。🧰
一、迁移前先了解模型目录
Ollama 的模型数据通常由清单文件和按哈希保存的 blob 文件组成。迁移时不能只复制某个看起来体积最大的文件,而应复制整个 models 目录,并保留原有层级、文件名和权限。官方文档确认可通过 OLLAMA_MODELS 指定新的模型存储位置,Windows 用户可参考 Windows 官方说明,其他系统的环境变量设置方式可查看 FAQ 配置文档。citeturn1search4turn1search5
常见默认位置如下:
- Windows:通常位于当前用户目录下的 .ollama\models。
- Linux:以普通用户手动运行时,常见于 ~/.ollama/models;通过 systemd 服务运行时,应结合服务账户和实际配置检查。
- macOS:默认模型及配置通常位于 ~/.ollama,模型目录为 ~/.ollama/models,具体文件位置可参考 macOS 官方文档。citeturn1search1
不要仅凭默认路径判断。迁移前可运行 ollama list 查看模型列表,并检查当前进程使用的 OLLAMA_MODELS 环境变量,避免复制错误目录。
二、执行迁移前的安全准备
首先退出 Ollama。Windows 应从系统托盘中彻底退出应用;Linux 若以 systemd 服务运行,可执行 sudo systemctl stop ollama;macOS 则从菜单栏退出 Ollama。这样可以防止复制过程中仍有模型写入,造成清单与 blob 文件状态不一致。🔒
随后确认目标磁盘具有足够空间,并尽量选择本机文件系统目录。若目标位置是移动硬盘、网络共享或受同步软件管理的文件夹,还要考虑断连、休眠、权限变化和同步冲突。建议先新建独立目录,例如 Windows 的 D:\OllamaModels,或 Linux、macOS 的 /data/ollama/models。
正式复制前记录当前状态:
- 运行 ollama list,保存模型名称和标签。
- 检查源目录总大小与可用空间。
- 确认没有正在执行的 pull、create 或模型删除任务。
- 如果存在重要自定义模型,先运行 ollama show 模型名 --modelfile 保存其构建信息。该命令的用途可参考 Modelfile 官方参考。citeturn1search2
三、完整复制模型数据
Windows 操作方法
可使用资源管理器复制整个 models 文件夹,也可在命令提示符中使用:
robocopy "%USERPROFILE%\.ollama\models" "D:\OllamaModels" /E /COPY:DAT /R:2 /W:2
其中 /E 会包含全部子目录,/COPY:DAT 用于复制数据、属性和时间信息。复制结束后应查看 robocopy 摘要,并对比源目录与目标目录的文件数量及总体大小。目标变量应指向实际保存 manifests 和 blobs 的目录,而不是多套一层同名文件夹。
Linux 与 macOS 操作方法
推荐使用 rsync 保留目录结构:
rsync -a --info=progress2 ~/.ollama/models/ /data/ollama/models/
如果 Ollama 由专用服务账户运行,还需确保该账户拥有目标目录的读取、写入和进入权限。Linux 中可根据实际服务用户调整所有者,例如:
sudo chown -R ollama:ollama /data/ollama/models
不要机械照抄账户名称。可先使用 systemctl status ollama 和 systemctl cat ollama 查看服务配置,再决定目标目录的属主与权限。
四、切换 OLLAMA_MODELS 存储位置
Windows:打开“编辑账户的环境变量”,新建或修改 OLLAMA_MODELS,值填写 D:\OllamaModels。保存后重新启动 Ollama。已运行的托盘程序不会自动获取刚修改的变量,因此必须退出并从开始菜单重新启动。官方 Windows 文档也采用用户环境变量方式修改模型位置。citeturn1search5
Linux:若使用 systemd 服务,执行 sudo systemctl edit ollama.service,加入:
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
保存后依次执行 sudo systemctl daemon-reload 和 sudo systemctl restart ollama。这一设置方式与官方 FAQ 中针对 systemd 服务的环境变量配置方法一致。citeturn1search4
macOS:若通过桌面应用运行,可执行 launchctl setenv OLLAMA_MODELS "/Volumes/ModelDisk/ollama/models",然后彻底退出并重新打开 Ollama。若目标位于外置磁盘,应确保磁盘名称和挂载路径保持不变。官方 FAQ 说明,macOS 应用的环境变量可通过 launchctl 设置。citeturn1search4
五、验证迁移是否真正成功
重启后先运行 ollama list。如果原有模型名称和标签均正常出现,说明 manifests 已被识别。接着选择一个已迁移模型执行 ollama run 模型名,确认能够加载并生成回复。✅
还可进行一次定位测试:暂时把旧目录改名,而不是立即删除,然后再次运行模型。如果模型仍可正常加载,说明 Ollama 已从新目录读取数据。若列表为空,优先检查 OLLAMA_MODELS 是否指错层级;若提示权限错误,则检查运行账户能否访问目标磁盘;若系统仍使用旧目录,通常是应用未完全重启,或环境变量只在某个终端会话中生效。
六、回滚与清理原则
建议保留旧目录数日,期间完成模型列表核对、常用模型运行和重启测试。出现异常时,只需停止 Ollama,恢复原来的 OLLAMA_MODELS 值或删除该变量,再重新启动服务,即可回到旧目录。
确认新目录长期稳定后,再删除旧模型文件。删除前务必检查新旧路径,尤其不要在符号链接、挂载点或管理员终端中直接执行未经核对的递归删除命令。若只是临时释放空间,可以先把旧目录改名并观察一段时间,这比立即清理更安全。🛡️
总结
Ollama 模型跨磁盘迁移的关键不是简单“搬文件”,而是遵循停止服务、完整复制、设置变量、重启验证、延迟清理的顺序。只要保留完整目录结构,正确配置 OLLAMA_MODELS,并确认运行账户具备目标目录权限,就能在不重新下载模型的情况下完成存储位置调整,同时保留现有模型标签和自定义配置。