资讯动态

Ollama模型路径迁移全指南:Windows、Mac、Linux三系统详解

发布时间:2026/10/3 18:44:46 来源:尧图企业网站定制
Ollama这工具现在玩本地大模型的人基本人手一个装起来简单用起来也顺手。但很多人会栽在一个特别尴尬的问题上模型文件默认存在系统盘里。llama3这种几十个G的大模型往里一塞C盘或者系统分区直接告急电脑卡到鼠标都飘。更麻烦的是有些人的工作流涉及多台机器或者想把已有模型挪到新电脑上这时候就躲不开路径迁移这件事。这篇文章我就把你可能遇到的所有迁移场景一次性讲清楚Windows、Mac、Linux三套系统全都有照着抄就行。先说清楚这个教程能解决什么问题一个是把模型默认存储位置改到空间更大的盘符或挂载点另一个是在迁移后让已有模型不丢失、能正常被识别。整个过程不涉及重新下载模型也不改Ollama的二进制文件只动配置和文件位置。适合已经装好Ollama、跑过模型但被磁盘空间或路径管理困扰的人刚接触Ollama的新手也可以先收藏等遇到问题再对照操作。1. 迁移前必须搞懂的三个核心概念1.1 Ollama的目录结构到底长什么样Ollama安装完成之后所有模型相关文件都存在一个叫.ollama的隐藏目录里。这个目录下面最关键的子目录就是models里面按照manifests和blobs两个子目录存放模型的元数据和实际权重文件。manifests目录里是模型的注册信息记录了模型名称、标签、对应的blob哈希。blobs目录才是真正占空间的地方里面全是按哈希值命名的大文件一个量化后的7B模型动辄4到7个GB13B的模型直接奔着8GB以上走。这就是为什么迁移路径时本质上迁移的就是这两个目录。不同系统的默认路径差异很大我列个表给你系统默认模型路径说明WindowsC:\Users\用户名\.ollama\models跟随用户目录在系统盘macOS~/.ollama/models同样跟随用户目录Linux/usr/share/ollama/.ollama/modelssystemd服务默认目录Linux手动安装~/.ollama/models以当前用户运行时很多人在Linux上最容易懵因为用官方脚本安装后Ollama是以系统服务运行的默认用户是ollama所以模型路径藏在/usr/share/ollama下面而不是你自己的home目录。这个坑后面还会反复提到。1.2 OLLAMA_MODELS环境变量的优先级逻辑Ollama在启动时会读取一个叫OLLAMA_MODELS的环境变量这个变量的值就是模型目录的绝对路径。只要这个变量被设置了Ollama就不再去默认位置找模型。这个变量的读取时机很关键它是在Ollama服务进程启动时读的不是在每次拉取模型时才读。所以改完环境变量后必须重启Ollama服务否则改了半天一点反应都没有。关于优先级Ollama的规则很简单环境变量优先于默认路径。但环境变量本身在不同系统里有不同的设置方式系统级环境变量、用户级环境变量、服务配置文件里的环境变量它们的生效范围不一样。你在终端里临时export一个变量只在当前会话有效这跟修改系统的全局配置是完全两码事。后面每个系统的实操章节我会说清楚到底改哪里才算数。1.3 三种迁移方案的底层原理对比路径迁移说白了有三种做法我分别说一下它们的原理和适用场景。第一种是改环境变量。这是最推荐的方式因为Ollama原生支持OLLAMA_MODELS只要把变量指到新目录Ollama就会在新目录里读写模型。优点是不动任何原始文件配置清晰随时可以改回来缺点是你得自己把旧目录里的模型文件搬过去否则迁移后ollama list会变成空的。第二种是软链接symlink。把默认目录整个软链到目标位置Ollama根本感知不到变化。这种方式适合不想改环境变量、或者目标盘挂载路径偶尔会变的场景。但软链接在Windows上需要管理员权限而且有些清理工具会把symbolic link当成垃圾文件扫掉得小心。第三种是物理移动加符号链接“双保险”。先移动真实文件到目标盘再在默认路径留一个指向目标位置的链接。严格来说这是方案二的变体好处是兼容性最好坏处是两层映射容易让人在排查问题时绕晕。我个人建议能用环境变量解决的优先用环境变量。只有当环境变量因为某些系统限制改不生效时再退回到软链接方案。后面各系统的实战部分我会把环境变量方案作为主线来讲软链接作为备用方案补充。2. Windows系统迁移实操五分钟搞定系统盘压力2.1 通过图形界面设置系统环境变量Windows下迁移路径最稳定的方式就是改系统环境变量操作起来不复杂。先确认Ollama的当前状态右击任务栏右下角的Ollama图标选择退出确保服务进程完全停止。然后打开“设置”里的“系统” - “关于” - “高级系统设置”或者在WinR里直接输入rundll32 sysdm.cpl,EditEnvironmentVariables回车会直接弹出环境变量编辑窗口。在“用户变量”区域点击“新建”变量名填OLLAMA_MODELS变量值填你希望存放模型的绝对路径比如D:\ollama\models。注意这个路径不要用中文不要带尾部的反斜杠也不要用D:\ollama\这种根目录写法老老实实写完整路径。注意很多教程会让你用setx命令来设置环境变量。setx确实能写环境变量但如果你在管理员权限的CMD里用setx OLLAMA_MODELS D:\ollama\models它默认写的是注册表里的用户变量这点没问题。但setx在写入超长字符串时有可能截断内容而且设置完之后当前终端窗口读不到新值容易让人误以为没设置成功。如果要用命令行设置完请开一个新的CMD窗口验证。设置完之后从开始菜单重新启动Ollama。稍等几秒等系统托盘出现Ollama的图标说明服务已经重新加载了环境变量。2.2 迁移已有模型文件环境变量改好了但旧路径下那些已经下载的模型并不会自己跑过来。你在新路径下执行ollama list大概率看到的是空列表。这时候打开文件资源管理器进入C:\Users\你的用户名\.ollama目录找到models文件夹。把它剪切到你的目标路径下。如果你在环境变量里设置的是D:\ollama\models那就把原来的models文件夹整个移动到D:\ollama\下面移动完成后确认路径层级是D:\ollama\models\manifests和D:\ollama\models\blobs少了manifests和blobs这两层就说明移动错了。移动完成后回到终端执行ollama list你应该能看到之前下载的所有模型和它们的标签。再随手跑一个ollama run qwen2.5:7b之类的命令确认模型能正常加载。如果一切正常再执行ollama pull一个新模型用任务管理器确认磁盘IO确实发生在目标盘上这才算彻底成功。2.3 Windows下的软链接备用方案有些环境比较特殊比如公司电脑没管理员权限或者你不想动系统环境变量那可以用软链接方案。用管理员身份打开CMD执行# 先把默认位置的模型目录改个名做备份 ren C:\Users\你的用户名\.ollama\models models_bak # 创建目录链接把默认位置指向目标盘 mklink /J C:\Users\你的用户名\.ollama\models D:\ollama\models这里用了mklink /J而不是mklink /D/J创建的是目录联接junction不需要管理员权限就能创建而且对Ollama这种程序来说是完全透明的。创建完成后把刚才备份的models_bak文件夹里的内容复制到D:\ollama\models目录下重新启动Ollama就能正常读取。使用软链接方案有个坑我踩过一次Windows的磁盘清理工具和某些安全软件会把junction当成无效链接处理运行完这些工具之后Ollama可能提示模型目录不存在。遇到这种情况不用慌重新执行一遍mklink /J命令重建链接就行模型文件本身没动过不会丢失。3. Mac系统迁移实操两种方式各有千秋3.1 用launchctl setenv临时迁移路径Mac上Ollama的模型默认存在~/.ollama/models如果你用的是外接SSD或者第二块内置硬盘需要把模型挪过去最快的方式是用launchctl setenv。先退出Ollama应用然后打开终端执行launchctl setenv OLLAMA_MODELS /Volumes/Data/ollama/models这个命令会把环境变量注入到当前用户的GUI启动环境中也就是LaunchServices管理的那些应用。设置完重新启动Ollama它就会去读取这个变量。需要注意launchctl setenv设置的变量在系统重启后不会保留。你最多能用它临时顶一下或者在每次开机后手动执行一次。想永久生效得走下面plist文件的路子。3.2 通过修改launchd plist实现永久迁移Mac上的Ollama应用是通过launchd来守护的它的启动配置存放在~/Library/LaunchAgents/com.ollama.ollama.plist。直接编辑这个文件可以给Ollama进程注入固定的环境变量。操作步骤是这样的# 先退出Ollama osascript -e quit app Ollama # 备份原始配置 cp ~/Library/LaunchAgents/com.ollama.ollama.plist ~/Library/LaunchAgents/com.ollama.ollama.plist.bak # 编辑plist文件 open -e ~/Library/LaunchAgents/com.ollama.ollama.plist在打开的文本编辑器里找到dict主键区域在keyEnvironmentVariables/key对应的字典中添加一项如果没有这个字典就手动补上。最终效果类似keyEnvironmentVariables/key dict keyOLLAMA_MODELS/key string/Volumes/Data/ollama/models/string /dict保存退出后需要重新加载这个launchd配置launchctl unload ~/Library/LaunchAgents/com.ollama.ollama.plist launchctl load ~/Library/LaunchAgents/com.ollama.ollama.plist然后重新打开Ollama跑一下ollama list确认路径生效。注意新版Ollama的LaunchAgent文件名可能是com.ollama.app.plist或者com.electron.ollama.plist不同版本有差异。不确定的时候就到~/Library/LaunchAgents/目录下用ls -la看看实际文件名再操作千万别对不存在的文件硬执行命令。3.3 Mac迁移后的文件同步与验证Mac上迁移模型文件有个比Windows方便的地方.ollama目录就在你的home目录底下Finder里用快捷键CmdShift.就能显示隐藏文件直接拖动即可。我的建议是先用Finder把~/.ollama/models整个文件夹拖到目标位置再回来配置环境变量。这样配置生效的同时模型已经就位Ollama启动就能直接识别。验证阶段除了ollama list之外我还习惯多看一步执行ollama show llama3.2:3b看返回信息里有没有异常。如果ollama list能看到模型名但运行时报错说找不到文件大概率是manifests和blobs的相对位置放错了或者模型文件在拷贝过程中损坏。真遇到这种情况别急着重新下载先核对目标路径下的目录层级再看看磁盘剩余空间是否足够。4. Linux系统迁移实操服务化部署的全套解法4.1 官方脚本安装后的systemd配置Linux上最复杂也最需要小心的就是路径迁移因为不同安装方式的配置入口完全不同。官方脚本安装后Ollama是以systemd服务运行的服务定义文件在/etc/systemd/system/ollama.service。修改思路很清晰给服务添加Environment字段。最规范的方式不是直接改服务文件而是用systemd的override机制这样即使Ollama升级覆盖了原始service文件你的自定义配置依然保留。sudo systemctl edit ollama这会打开一个空的override文件在里面写入[Service] EnvironmentOLLAMA_MODELS/data/ollama/models保存退出后执行sudo systemctl daemon-reload sudo systemctl restart ollama注意override文件里不需要重复写[Unit]、[Install]这些段落只写[Service]和要覆盖的字段就行。systemd会把override文件的内容和原始service文件合并重复的键以override里的为准。4.2 直接把路径放到独立数据盘我通常建议把模型目录放在独立的数据盘挂载点上比如/data/ollama/models。原因很现实系统盘空间有限而且系统重装、升级时挂载在根分区里的数据有被覆盖的风险。独立挂载点的数据盘重装系统后直接挂载回来模型一个不用重新下载。挂载完数据盘之后把原始模型文件搬过去# 先确认服务已停止 sudo systemctl stop ollama # 创建目标目录 sudo mkdir -p /data/ollama # 迁移模型数据 sudo mv /usr/share/ollama/.ollama/models /data/ollama/models # 确保ollama用户有访问权限 sudo chown -R ollama:ollama /data/ollama这里有个非常容易踩的坑/data/ollama/models的所有者必须改成ollama用户否则服务启动时读取模型会报permission denied。我用chown -R ollama:ollama递归设置所有者和组确保子目录manifests和blobs的权限也正确。如果你的数据盘挂载时用了root权限光改目录所有者还不够还得检查挂载点本身是否允许ollama用户读取必要时在/etc/fstab里加uidollama,gidollama或fmask0133,dmask0022之类的参数。4.3 手动安装方式下的环境变量配置另一种情况是你没有用官方脚本而是从GitHub Releases上下载了ollama-linux-amd64.tgz手动解压运行那服务管理方式就完全不在systemd的统一管理之下。这时候/usr/share/ollama那个路径反而不存在了你多半是把ollama二进制放在自己的目录下直接跑的。手动安装时Ollama以你当前用户身份运行默认模型路径就是~/.ollama/models。改动方式就是在启动Ollama前设置环境变量。可以把这行加到你的shell配置里也可以写一个小的启动脚本export OLLAMA_MODELS/data/ollama/models ./ollama serve注意如果你之前用官方脚本启动的是系统服务现在又手动跑了一个实例两个Ollama进程会同时监听11434端口新实例会起不来。遇到这种情况先停掉systemd服务再手动启动测试。4.4 Linux下的软链接迁移方案Linux里软链接是特别成熟的手段因为符号链接本身就是POSIX的一部分几乎所有程序都透明支持。操作比Windows还简单sudo systemctl stop ollama # 移动真实目录 sudo mv /usr/share/ollama/.ollama/models /data/ollama/models # 创建软链接 sudo ln -s /data/ollama/models /usr/share/ollama/.ollama/models # 确保软链接能被ollama用户访问 sudo ls -la /usr/share/ollama/.ollama/models sudo systemctl start ollama软链接的优势是不用改任何服务配置Ollama依然按默认路径启动实际读写会透传到目标目录。但有个副作用du -sh /usr/share/ollama/.ollama/models看到的不再是真实占用因为软链接不代表实际数据。做磁盘空间排查时容易产生误判我自己就在这上面栽过一次。如果你习惯用du看目录占用记得加-L参数追到真实目标du -shL /usr/share/ollama/.ollama/models5. 迁移过程中的关键细节与原理解读5.1 为什么改完环境变量模型还是不见了这是出现频率最高的问题。很多人改完环境变量、重启服务后执行ollama list发现之前的模型全没了第一反应就是“模型是不是被清掉了”。实际上模型一个都没少还在旧目录里躺着。原因很简单OLLAMA_MODELS指向的是新目录Ollama只认新目录里的manifests和blobs旧目录里的模型自然不在它的视线范围内。你开了一个新仓库旧仓库里的货不会自动搬进来。正确的操作顺序应该是先迁移文件再改配置或者迁移文件与改配置同步进行。如果你已经改完配置了才想起来文件没搬也别慌直接把旧路径下的models文件夹移到新路径即可不需要重新下载。这里有个小技巧查看当前模型路径是否生效可以用ollama list的输出判断但更直接的是lsof -p ollama进程PID | grep models能看到进程实际打开的模型文件路径。5.2 模型文件到底能不能直接拷走很多人在多个设备间同步模型想知道能不能直接把blobs目录里的文件拷到另一台机器上不用重新ollama pull。答案是能但有一个前提manifests和blobs必须一起拷贝而且要保持相对路径一致。比如你在A机器上有llama3.2:3b这个模型它的manifest文件记录了blobs的哈希列表。如果只拷贝blobs而漏掉manifestsB机器上的Ollama就不会认为这个模型存在。反过来只拷贝manifests不拷贝blobsOllama能看到模型名字但ollama run时立刻报错找不到文件。我把这个操作称为“双目录同步原则”跨机器迁移模型时始终把models整个目录作为最小传输单位。拷贝方式上如果两台机器在同一局域网我试过直接用rsync比走网盘或者U盘靠谱得多rsync -avP --progress /data/ollama/models/ user目标机器:/data/ollama/models/-a保留权限和符号链接属性-v显示过程-P支持断点续传。几百个G的模型传出问题还能接着传比重新下载省心太多。5.3 关于OLLAMA_MODELS其他相关变量的补充迁移模型路径时你可能还会注意到OLLAMA_HOST、OLLAMA_KEEP_ALIVE这些同类环境变量。它们跟模型路径没有直接关系但理解它们的作用能帮你避免误操作。OLLAMA_HOST控制的是服务监听地址默认127.0.0.1:11434。有人为了局域网访问会把地址改到0.0.0.0:11434但要注意这只改监听端口不会影响模型存储路径。OLLAMA_KEEP_ALIVE控制模型在内存中驻留的时间默认5分钟。这些变量跟路径迁移不冲突不过你在统一管理环境变量时建议把它们写在一起方便以后排查。另外一个容易混淆的变量是OLLAMA_CONTEXT_LENGTH它是控制上下文长度的。有些教程会把它跟路径迁移放在一起讲实际两者毫无关联。如果网上搜到一堆Ollama环境变量配置注意区分哪些影响存储、哪些影响运行性能别一股脑全配置上。6. 常见问题排查与避坑指南6.1 Windows迁移后Ollama图标消失或无法启动Win系统上迁移后最诡异的现象是环境变量改好了、模型文件搬好了但Ollama托盘图标死活不出现。十有八九是服务没有彻底重启。Ollama在Windows上注册了一个后台启动项设置环境变量之后如果只是关掉托盘窗口进程其实还在后台跑。解决方法是打开任务管理器在“详细信息”里找到ollama.exe和ollama app.exe强制结束所有相关进程再重新启动。实在不行直接重启电脑简单粗暴但有效。还有一种情况是OLLAMA_MODELS路径写到了带空格的目录比如D:\My Models\ollama。Ollama对这些路径的解析偶尔会出问题。如果条件允许尽量使用不含空格的路径能省掉很多不必要的麻烦。6.2 Mac上launchctl setenv不生效Mac的launchctl setenv只对之后启动的GUI应用有效且不跨重启。所以如果你设置了变量但ollama list还是旧路径先确认是不是Ollama进程在设置之前就已经在运行了。正确做法是设置前退出Ollama设置完再重新打开。另外Mac从某个版本的Ollama开始会默认从~/Library/Application Support/Ollama读取启动配置跟老的~/.ollama路径并存。如果你发现改了launchctl setenv完全没有反应可以检查一下这个目录下有没有config.json之类的配置覆盖了环境变量的优先级。这种情况比较少见但确实有人碰到过遇到时不用怀疑自己的操作按照plist方案重做一遍基本能解决。6.3 Linux权限问题引发的模型加载失败Linux迁移后最常见的报错是下面这种Error: model %s not found或者提示无法访问模型目录。这类错误90%是权限问题。Ollama服务运行在ollama用户下如果迁移后的目录所有者是你当前的普通用户服务就没法访问。排查指令我先跑这三条# 检查服务的实际运行用户 ps aux | grep ollama # 检查目录权限 ls -ld /data/ollama/models # 检查目录里的文件所有者 ls -la /data/ollama/models看到目录所有者不对直接改正sudo chown -R ollama:ollama /data/ollama/models还有一个细节如果你用的是SELinuxCentOS、Rocky Linux这类系统默认开启光改权限还不够还得给目录打上正确的SELinux上下文标签sudo semanage fcontext -a -t httpd_sys_content_t /data/ollama/models(/.*)? sudo restorecon -Rv /data/ollama/models如果系统里压根没装semanage说明SELinux可能不是主要矛盾先检查普通文件权限再说。6.4 常见问题速查表现象可能原因解决方案改环境变量后模型列表为空模型文件未迁移到新路径把旧models目录整个移动到新路径Windows下Ollama无法启动服务进程未彻底退出任务管理器结束所有ollama进程后重试Mac重启后设置失效launchctl setenv不持久改用plist配置LaunchAgentLinux报无权限目录所有者不是ollamachown -R ollama:ollama迁移后下载速度异常目标盘文件系统碎片或IO瓶颈检查目标盘剩余空间和格式NTFS/exFAT尽量改用本地格式跨机器拷贝后模型不可用manifests和blobs未同步复制整个models目录打包传输软链接被清理安全工具误删symbolic link重建链接尽量用环境变量方案6.5 我踩过的最值得说的一次坑最后分享一个真实经历。有次我在Linux服务器上做路径迁移改完systemctl edit ollama之后没有先停服务就直接移动了模型目录。结果ollama服务还在运行中部分文件被进程锁定移动过程报错中断导致blobs目录只剩一半文件ollama list还能看到几个模型但每个都无法运行。当时我第一反应是重新ollama pull但那模型有十几个G重新下载太浪费时间。后来冷静下来检查发现损坏的只是部分blob文件。最终我用目标机器上之前rsync备份的完整模型目录做了一次补偿同步把缺失的文件补回来才算解决。这事的教训是迁移任何有进程占用的目录之前一定要先停服务。Linux上执行systemctl stop ollamaWindows上从托盘退出并确认进程消失Mac上osascript -e quit app Ollama。顺序如果反了遇到文件锁或者IO中断轻则迁移失败重则损坏模型文件。如果你在做迁移之后顺手把模型目录和OLLAMA_MODELS相关的环境变量三者对应关系梳理清楚后续再遇到空间不足、换硬盘、多机同步这类需求就能一遍过。我个人现在每换一台机器落地的第一件事就是把模型目录迁到独立数据盘然后写进自己的部署脚本里。这个习惯帮我省下了好几次“系统盘告急”的半夜救火操作。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑