ollama install 備忘録

# 概要
ollamaでpullしたモデルはデフォルトでルートパーティション内の `/usr/share/ollama/.ollama/models`に入ってしまう。LLMのサイズは、一般に小さな容量のルートパーティションではとてもまかないきれない。そこで容量の大きなパーティションへ保存するようにシンボリックリンクを設定することがこの備忘録の趣旨である。
このとき注意しなければならないのは、ollamaはインストールと同時に追加されるユーザollamaで制御される点である。つまりその転送先パーティションはユーザollamaがアクセスすることになるため、OSにログインしているユーザihmonだけがアクセスできる$HOME下にリンクを張ると失敗する。たとえ正しくユーザollamaにアクセス権を与えたとしても、OS再起動後にはユーザollamaのアクセス権限が消えるためollama.serviceは`status=1/FAILURE`となる。

- 実施期間: 2025年5月
- 環境：Ubuntu22.04LTS
- ollama: version0.9.0



# Ollama モデル保存先を別パーティションへ移動するためのセットアップ手順

## 前提

* Ubuntu 環境
* モデル保存先のパーティション: `/media/ihmon/data_disk/models/ollama-models`
* `ollama` サービスは systemd 管理

## 目的

* モデル保存先をルートパーティションから別パーティションの `/media/ihmon/data_disk/models/ollama-models` に設定するものとする
* シンボリックリンクを使用して `/usr/share/ollama/.ollama/models` から転送する
* 再起動後も安定して動作させる

---

## 1. Ollama のインストール
[オフィシャルサイト](https://github.com/ollama/ollama/blob/main/docs/linux.md#install)を参照すること。

```bash
curl -fsSL https://ollama.com/install.sh | sh
```

確認:

```bash
which ollama
# => /usr/local/bin/ollama
```

---

## 2. モデル保存先ディレクトリの準備
シンボリックリンク先を準備する。ここでは別パーティション内の`ollama-models`へ移すようにしている。ユーザollamaの権限付与が重要で、特にこの例では`ollama-models`へ至るまでの全パスで与える必要あり（かなりハマった）。
```bash
sudo mkdir -p /media/ihmon/data_disk/models/ollama-models
sudo chown -R ollama:ollama /media/ihmon/data_disk/models/ollama-models
```

### 🔸親ディレクトリの実行権限付与（重要）

```bash
sudo chmod +x /media
sudo chmod +x /media/ihmon
sudo chmod +x /media/ihmon/data_disk
```

確認:

```bash
ls -ld /media/ihmon/data_disk/models/ollama-models
# => drwxrwxr-x ... ollama ollama ... /media/ihmon/data_disk/models/ollama-models
```

---

## 3. シンボリックリンクの設定

```bash
sudo rm -rf /usr/share/ollama/.ollama/models
sudo ln -s /media/ihmon/data_disk/models/ollama-models /usr/share/ollama/.ollama/models
```

確認:

```bash
ls -l /usr/share/ollama/.ollama
# => models -> /media/ihmon/data_disk/models/ollama-models
```

---

## 4. systemd の override.conf で環境変数を指定
下記オフィシャルサイトにのとおり、`OLLAMA_MODELS`を設定する。
**[How do I set them to a different location?](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-do-i-set-them-to-a-different-location)**
また、このPCをLLM serverとして他のPCからもollamaへアクセスできるようにOLLAMA_HOSTも変更する。
ollama.serviceのデフォルト設定に追加するのでoverride.confに追記する。

```bash
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo vim /etc/systemd/system/ollama.service.d/override.conf
```

内容:

```
[Service]
Environment="OLLAMA_MODELS=/media/ihmon/data_disk/models/ollama-models"
Environment="OLLAMA_HOST=0.0.0.0:11434"
```

反映:

```bash
sudo systemctl daemon-reload
sudo systemctl restart ollama
```

確認:

```bash
sudo systemctl status ollama
# => Active: active (running)
```

---

## 5. 自動マウントの設定（fstab で永続化）
PC再起動時、転送先パーティションを自動マウントするように設定する。
```bash
sudo blkid  # UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxを確認
sudo vim /etc/fstab
```

追記例:

```
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /media/ihmon/data_disk ext4 defaults 0 2
```
追記例（通常の読み書き用途に適した安全なマウント構成）:

- ドライブが外れていたり不調でも、OSが起動時にフリーズしない
- 起動時にsystemdが長時間待機しない（10秒でスキップ）

```
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /media/ihmon/data_disk ext4 defaults,nofail,x-systemd.device-timeout=10 0 2
```

確認:

```bash
sudo mount -a
ls /media/ihmon/data_disk
```

---

## 6. 動作確認

### モデルのダウンロード

```bash
ollama pull llama3
```

### モデルファイルの保存先確認

```bash
ls /media/ihmon/data_disk/models/ollama-models
# => モデルファイルが保存されていること
```

---

## 🔍 忘れてはならないポイント

* `/media/ihmon/data_disk/models/ollama-models` に加え、親ディレクトリにも "x" 権限を付けること（`chmod +x`）
* `override.conf` に `OLLAMA_MODELS` を必ず明示的に設定
* systemd でサービスを再起動した後は `status` や `journalctl -u ollama.service` で状態確認

以上