Proxmox × TrueNAS (NFS) で共有ストレージを作り、スナップショットも試してみた

これは、**TrueNAS 上で NFS を使って Proxmox クラスタの共有ストレージを構築し、スナップショットやマイグレーションを試してみた** 記事です。  
結論として、**NFS はクラスタ環境でもメタデータ破損などのトラブルがなく、スナップショットも普通に取れて便利** でした。  
同じように「Ceph は難しそうだけど、NFS で共有ストレージをやってみたい」という方の参考になれば嬉しいです。

---

## 背景

- **Proxmox** クラスタで共有ストレージを使うには、**Ceph** などが有名。  
- しかし、自宅で簡単に導入するなら、**NFS** も十分に有力な選択肢。  
- 以前に **TrueNAS 上で iSCSI + LVM** や **Thin-LVM** を試してきたが、今回は **NFS** を利用してみたところ、  
  **スナップショットがバッチリ動く** うえ、**クラスタでもメタデータの破損などの問題がなく** スムーズにマイグレーションできた。  

---

## 環境イメージ

- TrueNAS（詳細の設定は割愛）  
  - `NFS` 共有をエクスポートしており、Proxmox ノード (pve53, pve54, pve55) からアクセス可能  
- Proxmox 3ノードでクラスタを構成  
- ネットワークは 1GbE で各ノードから TrueNAS へ到達できる設定  

### TrueNAS 側の設定

- `Sharing -> Unix Shares (NFS)` から、NFS エクスポートを作成  
- Proxmox ノードの IP (またはサブネット) に対して書き込み権限を与える  
- 詳細なやり方は TrueNAS の UI に従う。ここは本記事では割愛。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/320ee7e0-9e9f-4a8a-ab55-5c65171fc279.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/380df17d-1aaa-4978-a1b0-54ff39981c49.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/2c3e09ed-5423-43c3-a5ba-76d5869d2db9.png)

### Proxmox 側での NFS 接続設定

- Datacenter -> Storage -> `Add -> NFS`  
  - `ID`: `NFS` など任意  
  - `サーバ`: TrueNAS の IP  
  - `Export`: TrueNAS 側で設定したエクスポートパス (例: `/mnt/nas_pool/vm_nfs`)  
  - `内容`: “ディスクイメージ” や “ISO イメージ” を選択  
- 保存すると、Proxmox の各ノードが自動的にマウントして、NFS ストレージとして認識する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/2aca158c-49f4-472d-a914-572ed47f724a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/eadd0670-aad3-4607-ba8b-e5701afcecb6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/8a28d273-896a-4b4e-9779-fda779bc40a8.png)

---

## VM ディスクを NFS に作ってみる (qcow2)

Proxmox で NFS ストレージを使う場合、**ディスクイメージは `qcow2` 形式** になるのが一般的です。（GUI 上でも自動的に qcow2 で作成されます）

### 新規 VM 作成

- “ディスク” の項目で、さきほど追加した `NFS` を選択  
- すると、ディスクフォーマットとしては自動的に `qcow2` となる
- 他は通常と同じように OS インストールを実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/752eb480-ae02-4134-8d9f-f50ecb980899.png)

VM 起動後、普通に OS が動作すれば OK です。

---

## スナップショットを試す

### WebUI からのスナップショット

Proxmox で VM を選択 -> “スナップショット” タブ -> “スナップショット採取”  
- 名前を入力して OK をクリック  
- すぐにスナップショットが作成される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/23d9e2f3-af1b-4508-8ea6-96578f93972a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/8159603a-a368-4a48-9b11-9e708d8e0231.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/c779d2d3-bca5-4946-8c42-c0c47d327d6a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/1c0c6a3b-2eb4-40be-a996-10ca3b750f74.png)


**NFS (qcow2) の場合、プロセス自体がとてもシンプル** で、**メタデータ破損等のトラブルは起きません** 。  
取得したスナップショットは、同タブで一覧表示されるので、必要に応じて “ロールバック” もできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/45b9cb8d-b69f-45a7-9988-b30d86ada9e6.png)

### 実際に ロールバック してみる

- 例: VM を立ち上げて適当なファイルを書き換えたあと、スナップショット作成時点に戻せるか試す  
- “スナップショット” タブから先ほど作ったスナップショットを選択 -> “Rollback”  
- 数秒後に VM がスナップショット取得時点の状態に戻り、**ディスク状態も巻き戻る**  
- ちゃんと起動できることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/6764e9f7-1c6c-4da5-82b3-1fc676dcdc2c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/202ff2c6-1745-4ee5-bfa1-28177cebcc02.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/2efb5fa6-e775-4f53-939a-ceb064c9f4f5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/1cf41d58-5495-444b-ba2e-566b66440f5d.png)

こうしたスナップショット・ロールバック操作が **特に難しい設定なく** 使えるのが qcow2 ファイル形式の良いところです。

---

## マイグレーションも問題なし

### マイグレーションの流れ

- VM を右クリック -> “マイグレート” -> 宛先ノードを選ぶ -> 実行  
- 共有ストレージ (NFS) にディスクイメージがあるので、**ディスクデータのコピーは不要**  
- メモリの同期だけ行われて、素早く移行が完了する  
- 移行後は `/etc/pve/nodes/pve54/qemu-server/<VMID>.conf` のように設定ファイルが切り替わり、宛先ノードで VM が動作する

クラスタ環境でも **メタデータの破損** といった問題は発生せず、非常にスムーズ。  
NFS なので複雑な LVM-Thin のメタデータのような仕組みがなく、ファイル共有ベースでの扱いのためです。


## VM ディスクを NFS に作ってみる (raw)

試験用に、VMディスクをrawとして仮想マシンを作成してみます。

### 新規 VM 作成

- “ディスク” の項目で、さきほど追加した `NFS` を選択  
- ディスクフォーマットとして、あえて `raw` を選択
- 他は通常と同じように OS インストールを実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/a1096fd9-4173-4af2-9301-4c276a98a83f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/83eadfdd-5ee4-4111-a5d8-080f81f8c744.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789581/7643685f-c042-4da2-a91c-2588c879dc79.png)

このように、**スナップショット採取** がグレーアウトされて使えません。

---

## 実際に使ってみた感想

- **NFS は扱いがとてもシンプル**。ファイル共有の仕組みなので、複数ノードで同じディスクイメージを問題なく参照できる  
- **qcow2** 形式なら Proxmox のスナップショットにも対応できるし、**柔軟な運用** が可能  

---

## まとめ

1. **TrueNAS 上で NFS をエクスポート** し、Proxmox クラスタから “NFS” ストレージとして追加  
2. VM ディスクを `qcow2` 形式で置くことで、**WebUI からスナップショットが撮れる**  
3. **クラスタ環境でもメタデータ破損なし** で安定稼働。マイグレーションも高速  
4. シンプルかつ手軽に共有ストレージを実現したい人には **NFS はかなりおすすめ**  

**おうちラボ** や **中規模環境** なら十分な機能と安定性が得られるように思われました。

もし **iSCSI (LVM) は面倒そう** や **Ceph は重そう…** と思っている方は、  
**NFS** をぜひ試してみるとよいと思います。