
Windows版Ollamaのモデル保存先は、ユーザー環境変数OLLAMA_MODELSで変更できます。既存モデルも使い続ける場合は、Ollamaを終了してモデルフォルダーをコピーし、設定変更と再起動の後で動作を確認します。 Cドライブの空き容量が増えるのは、確認を終えて元のコピーを整理した後です。
環境変数(アプリが起動時などに読み込む設定値)を変更する操作と、保存済みファイルを移す操作は分かれています。この記事では元データを残し、問題があれば戻せる順序で進めます。
対象はWindowsの通常インストーラー版を、自分のユーザーアカウントで起動している環境です。WSL(Windows上でLinuxを動かす仕組み)、Docker、別PC、WindowsサービスでOllamaサーバーを動かしている場合は設定先が異なるため、そのまま適用しないでください。
2026年9月11日時点の公式資料に基づきます。Windows PowerShell 5.1で模擬ファイルのコピー・内容照合・終了コードを検証していますが、実モデルをCドライブからDドライブへ移した後のOllama起動・推論は未検証です。以下の確認項目を実際の環境で満たしてから旧データを整理してください。
移すのはアプリ本体ではなくmodelsフォルダー
既定のモデル保存先は次の場所です。エクスプローラーのアドレス欄に貼り付けて開けます。
%USERPROFILE%\.ollama\models
この記事では、新しい保存先をD:\Ollama\modelsとします。DドライブがないPCでは、十分な空き容量があるドライブのパスへ読み替えます。
| 対象 | 役割 | 今回の扱い |
|---|---|---|
| Ollamaアプリ本体 | プログラムを実行する | インストール先を変更しない |
.ollama\models |
ダウンロードしたモデルの管理情報とデータ | 中身をまとめて新保存先へコピーする |
.ollamaのその他のファイル |
設定や鍵など | フォルダーごと削除・移動しない |
| メモリに読み込み済みのモデル | 実行中の処理に使う | 保存先の切替時はOllama自体を終了する |
Ollama公式のWindowsガイドは、本体のインストール先とモデルの保存先を別々に説明しています。既定パスはOllama FAQでも確認できます。
modelsの直下には、モデルデータを置くblobsと、モデルを識別する管理情報を置くmanifestsがあります。一部の大きなファイルだけを選んで移すのではなく、modelsの中身全体をコピーします。この階層は公式実装の保存パス定義でも確認できます。
D:\Ollama\models\ ← OLLAMA_MODELSで指定する場所
├─ blobs\
└─ manifests\

図:Ollamaの保存パス定義を基に独自作成。
OLLAMA_MODELSをD:\Ollamaにしたのに、中身をD:\Ollama\modelsへコピーすると、参照する階層がずれます。反対にmodels\modelsと二重になっていないかも確認します。
1. 元の設定・モデル一覧・空き容量を確認する
以下のコマンドはWindowsのPowerShellで実行します。WSL内のシェルに貼り付ける手順ではありません。
変更前にOllamaのバージョンとモデル一覧を確認し、表示結果を保存しておきます。
ollama --version
ollama list
次に、すでに保存先を変更していないか確認します。
# 既存設定を上書きする前に、戻す値と適用範囲を記録する
[Environment]::GetEnvironmentVariable('OLLAMA_MODELS', 'User')
[Environment]::GetEnvironmentVariable('OLLAMA_MODELS', 'Machine')
$env:OLLAMA_MODELS
$env:OLLAMA_HOST
最初の2行はユーザー・システムに保存された値、3行目は現在のPowerShellが持つ値です。値が表示されたら記録し、現在どこにモデルがあるかを確認してください。以降のコピー元の例は既定パスなので、既存設定がある場合は実際の保存先へ変更します。 OLLAMA_HOSTで別のサーバーへ接続している場合は、このPCのファイルを移しても接続先のモデルは変わりません。
何も表示されない場合は設定値が空であることを示しますが、それだけで稼働中サーバーの保存先を証明できるわけではありません。起動方法と実際のフォルダーも合わせて確認します。
コピー先には、現在のmodels全体を置ける空き容量に加え、今後追加するモデルの余裕が必要です。エクスプローラーでコピー元の「プロパティ」と、Dドライブの空き容量を確認します。外付けドライブを使う場合は、接続を維持でき、ドライブ文字が変わらない運用にしてください。
2. Ollamaを終了し、modelsをコピーする
モデルのダウンロードや生成処理を終え、タスクトレイのOllamaから終了します。ウィンドウを閉じただけでバックグラウンド動作が残っていないか確認してください。
ollama stopは読み込み済みモデルを停止する操作で、Ollamaサーバー全体の終了とは目的が異なります。コピー中にファイルが変わらないよう、この手順ではアプリ自体を終了します。操作の違いはOllama CLI Referenceを参照してください。
空のコピー先を用意する
エクスプローラーでD:\Ollama\modelsを作ります。すでにモデルが入っている場合は、その内容を調べてから進めてください。この記事の手順は空のコピー先を前提とし、別のモデル一式との統合は扱いません。
コピー方法は次のどちらかを選べます。
| 方法 | 長所 | 注意点 |
|---|---|---|
| エクスプローラー | フォルダーを目で確認して操作できる | 「切り取り」ではなく「コピー」を使い、コピー元を残す |
| Robocopy(Windows標準のコピーコマンド) | 終了コードや差分を確認できる | コピー元・先とオプションを確認して実行する |
Robocopyでコピーする場合
次の$sourceは既定保存先の例です。事前確認で別の保存先だった場合は、正しい絶対パスへ変更します。変数にはmodelsフォルダーそのものを指定し、末尾の区切り文字は付けません。
$source = Join-Path $env:USERPROFILE '.ollama\models'
$destination = 'D:\Ollama\models'
if (-not (Test-Path -LiteralPath $source -PathType Container)) {
throw 'コピー元がありません。現在の保存先を確認してください。'
}
# /Lで実際にはコピーせず、向きと対象を確認する
robocopy $source $destination /E /COPY:DAT /DCOPY:DAT /R:2 /W:2 /XJ /L
コピー元・コピー先が正しく、対象ファイルに問題がなければ、同じPowerShellで/Lを外して実行します。
# 元を残すため、削除や移動を伴うオプションは付けない
robocopy $source $destination /E /COPY:DAT /DCOPY:DAT /R:2 /W:2 /XJ
$copyExitCode = $LASTEXITCODE
if ($copyExitCode -ge 8) {
throw "コピーに失敗があります。終了コード: $copyExitCode"
}
$copyExitCode
/Eは空フォルダーを含むサブフォルダー、/COPY:DATはファイルのデータ・属性・時刻をコピーします。/XJはジャンクション(別の場所を指す特殊なフォルダー)を除外する指定です。元からリンクを使っている環境は、この手順の対象外としてください。
Robocopyは一般的なコマンドと異なり、終了コード1も正常なコピー結果です。8以上なら少なくとも1件の失敗があるため、設定変更へ進みません。上のコードが例外を出した場合は、その場で作業を止めてください。2〜7では追加ファイルや不一致の情報が含まれる場合があり、ログを確認します。詳細はMicrosoft:Robocopyを参照してください。
/MIRや/PURGEはコピー先からの削除、/MOVEはコピー元からの削除を伴うため、今回の保全手順では使いません。
コピーの内容を照合する
Ollamaを止めたまま、同じPowerShellで確認します。
# サイズや時刻の差分と、コピー先だけにあるファイルを確認する
robocopy $source $destination /E /L /R:0 /W:0 /XJ
$LASTEXITCODE
空のコピー先へ正しくコピーした後なら、終了コード0が目安になります。ただし、これはファイル内容の完全一致を証明する検査ではありません。内容まで比較する場合は、SHA256(ファイル内容から計算する照合値)を確認します。
$mismatches = @(Get-ChildItem -LiteralPath $source -File -Recurse -ErrorAction Stop | ForEach-Object {
$relative = $_.FullName.Substring($source.Length).TrimStart('\')
$target = Join-Path $destination $relative
if (-not (Test-Path -LiteralPath $target -PathType Leaf)) {
$relative
} elseif ((Get-FileHash -LiteralPath $_.FullName -ErrorAction Stop).Hash -ne
(Get-FileHash -LiteralPath $target -ErrorAction Stop).Hash) {
$relative
}
})
if ($mismatches.Count -gt 0) {
$mismatches
throw '未コピーまたは内容不一致のファイルがあります。'
}
実行中にアクセスエラーなどが出た場合も、照合済みとは扱いません。大きなモデルでは両方のファイルを読み込むため時間がかかります。Microsoft:Get-FileHashに、既定でSHA256を使うことが説明されています。
3. OLLAMA_MODELSを変更して再起動する
コピーと照合が終わったら、Windowsで「環境変数」を検索し、「アカウントの環境変数を編集」を開きます。ユーザー環境変数へ次の値を設定します。
| 項目 | 設定値の例 |
|---|---|
| 変数名 | OLLAMA_MODELS |
| 変数値 | D:\Ollama\models |
値の欄にはパスそのものを入れます。設定画面の値を引用符で囲む必要はありません。既存値があった場合は、戻せるよう記録してから変更します。
保存後、スタートメニューからOllamaを起動します。コマンド確認に使うPowerShellも、新しく開き直してください。Ollama Windowsガイドは、実行中なら一度終了してから再起動する手順を示しています。
新しいPowerShellで、保存された値とそのプロセスの値を確認します。
[Environment]::GetEnvironmentVariable('OLLAMA_MODELS', 'User')
$env:OLLAMA_MODELS
どちらも意図したパスになっていることを確認します。古いターミナルから起動したプロセスには、変更前の環境変数が残ることがあります。値が合わない場合は起動元も終了し、必要に応じてWindowsへサインインし直してから確認します。
PowerShellの$env:OLLAMA_MODELSだけを変更すると、そのセッションとそこから起動する子プロセスに対する変更になります。スタートメニューから起動するOllamaへ継続して反映する手順とは区別してください。Microsoft:Environment.SetEnvironmentVariableに設定範囲の説明があります。
4. モデル一覧・起動・保存先を確認する
再起動したOllamaに対して、一覧を確認します。
ollama list
変更前に記録したローカルモデルの名前・タグ・IDと比較します。一覧が空なら、そのまま再ダウンロードせず、コピー先の階層と起動時の設定を確認してください。
次に、一覧にあるローカルのテキスト生成モデルを1つ選びます。下の値は実際のモデル名へ置き換えます。クラウドモデルや埋め込み専用モデルは、この生成確認には使いません。
$model = '一覧に表示されたローカルモデル名:タグ'
ollama show $model
if ($LASTEXITCODE -ne 0) {
throw 'モデルを確認できません。名前と保存先を確認してください。'
}
ollama run $model '短く自己紹介してください。'
showが失敗したらrunへ進みません。指定したモデルが存在しない場合、runによってダウンロードが始まることがあるためです。これらの操作はOllama CLI Referenceを参照してください。
旧フォルダーを退避して、参照先を確かめる
モデルが動いただけでは、元の保存先を使い続けている可能性を除けません。確認を強めるため、次の順に進めます。
- Ollamaを再び終了する。
- コピー元の
modelsを、エクスプローラーでmodels.backupなど未使用の名前へ変更する。Dドライブ側は変更しない。 - Ollamaを起動し直し、一覧と同じローカルモデルの生成を再確認する。
- 問題が出たら削除へ進まず、次節の手順で戻す。
起動し直すのは、メモリに残ったモデルで確認が通ることを避けるためです。元の場所に新しい空のmodelsが作られ、一覧も空になる場合は、保存先設定が反映されていない可能性があります。

図:本記事の移行・保全手順を独自に図解。
5. 確認後に旧コピーを整理する
Dドライブから動くことを確認できたら、Cドライブに残したmodels.backupを整理します。この段階までは元のデータを残しているため、Cドライブの使用量はほとんど減りません。
旧コピーを削除する場合は、エクスプローラーで対象のフルパスを再確認します。削除後もごみ箱に残っていると空き容量が戻らないことがあるため、復旧用コピーが不要になったことを確認してからごみ箱も確認してください。すぐ削除するのが不安なら、旧コピーを別のバックアップ先へ保管する方法もあります。
ここでollama rmを使うと、接続中のOllamaが管理するモデルを削除します。切替後はDドライブ側が対象になるため、Cドライブに残した旧コピーの整理には使いません。
うまくいかない場合の戻し方
Ollamaを終了してから、次の順に戻します。
- ユーザー環境変数
OLLAMA_MODELSを変更前の値へ戻す。元が未設定なら、今回追加したユーザー変数を削除する。 - 旧コピーを
models.backupへ変更していた場合は、元のmodelsへ戻す。 - 元の場所に別の
modelsができている場合は、上書きせず中身を確認して別名で保管する。 - Ollamaと確認用PowerShellを起動し直し、元のモデル一覧と動作を確認する。
Dドライブ側で新しく追加・更新したモデルは、古いコピーには含まれません。戻す際もDドライブ側を削除せず保管し、必要なデータを別途扱います。
| 症状 | 確認すること |
|---|---|
| モデル一覧が空 | OLLAMA_MODELS直下にblobsとmanifestsがあるか。models\modelsになっていないか |
| 保存先を変えたのにCドライブへ書かれる | Ollamaを完全終了したか。古い起動元や別ユーザー、別サーバーを使っていないか |
| コピー時にアクセス拒否が出る | コピー先に書き込めるか。Ollamaが止まっているか。コピー失敗のまま切り替えていないか |
| Dドライブが見つからない | 外付けドライブが接続され、同じドライブ文字になっているか |
| 動くがCドライブが空かない | 旧コピーとごみ箱が残っていないか。本体・ログなど別のデータをモデルと混同していないか |
| 移行後も生成が遅い | ディスク容量とGPUメモリ・GPU認識を別に調べる |
GPUの利用状況はOllamaがGPUを使わないときの対処法で整理しています。WSL内にモデルを置いていて、Linuxで削除してもWindowsの容量が戻らない場合は、WSLでファイルを削除してもCドライブが空かない理由と対処法が対象になります。
この記事で検証した範囲
Windows PowerShell 5.1から、検証用の共有フォルダーに置いた模擬ファイル2件をコピーし、SHA256の一致を確認しました。Robocopyの終了コードは、コピー時1、差分なし0、コピー先だけに追加ファイルがある場合2、存在しないコピー元を指定した場合16でした。
実モデルのフォルダーやユーザー環境変数は変更していません。公式の保存先設定と、ファイルコピー処理の確認を組み合わせた手順であり、実際のモデルの起動・生成は、旧コピーを残した状態で確認してください。



コメント