【2024年04月版】Proxmoxのストレージタイプ【iSCSI, LVM, NFS, Ceph, GlusterFS】

# はじめに

Proxmoxはプラグインによるストレージオプションがあります。
以下は、Proxmox VE 8.1時点でネイティブにサポートされているストレージタイプです。

- Directory
- GlusterFS
- User Mode iSCSI
- iSCSI
- LVM
- NFS
- CIFS
- Proxmox Backup Server
- Ceph RBD
- CephFS
- ZFS

# Directory

Directoryストレージは、Proxmoxローカルノード上のマウントされたフォルダです。場所は/var/lib/vzの下にマウントされます。これは主にローカルストレージとして使用されます。

別のノードのリモートフォルダをマウントし、そのマウントポイントを使用して新しいDirectoryストレージを作成することもできます。

Directoryストレージに保存された任意のVMは、ライブマイグレーションできません。

すべての仮想ディスクイメージファイルタイプはDirectoryストレージに保存できます。

# GlusterFS

GlusterFSは、スケールアウト型の分散ファイルシステムで、大容量のデータを格納し、管理するために設計されています。ファイルを複数のサーバーに分散して保存することで、高い可用性と柔軟なスケーラビリティを提供します。シンプルな設定と運用で、オンプレミスやクラウド環境におけるデータ共有とストレージの統合に適しています。

ディレクトリのレイアウトとファイルの命名規則はdirバックエンドから継承されます。

# User Mode iSCSI (User Mode Internet Small Computer Systems Interface)

User Mode iSCSIは、基本的にOpen-iSCSIバックエンドと同じ機能を提供します。実装するためにユーザーレベルのライブラリを使用します。このバックエンドを使用するためには、libiscsi-binパッケージをインストールする必要があります。

ユーザモードのため、カーネルドライバーは関与していません。これはパフォーマンスの最適化と見なすことができますが、その代わりに、iSCSI LUNの上にLVMを使用することはできないという欠点があります。すべてのスペース割り当てをストレージサーバー側で管理する必要があります。

VMのみで動作します。コンテナはこのドライバーを使用できません。

# iSCSI (Internet Small Computer Systems Interface)

iSCSI（Internet Small Computer Systems Interface）は、ストレージデバイスにネットワークを介してアクセスするためのプロトコルです。具体的には、SCSIコマンドをTCP/IPネットワークを通じて送受信することにより、遠隔地にあるディスクやテープなどのストレージデバイスを、まるでローカルに接続されているかのように使用できる技術です。

iSCSIデバイスに直接仮想ディスクイメージを保存することはできません。iSCSIデバイスの上にLVMストレージを設定し、その上にディスクイメージを保存することはできます。

# LVM (Logical Volume Management)

LVM（Logical Volume Manager）は、ストレージデバイスをより柔軟に管理するためのシステムです。従来のパーティショニングとは異なり、LVMを使用すると、複数の物理ディスクを一つの大きな「プール」として扱い、必要に応じてこのプールから論理ボリュームを作成・調整することができます。

LVMストレージを設定するには、基本ストレージ(Base Storage)が必要です。ローカルデバイスを元に、またはiSCSIデバイスを元にLVMストレージを作成できます。

LVMは、基本ストレージは同じノード上にも別のノード上にも置くことができるため、スケーラブルなストレージスペースを可能にします。

LVMストレージはRAW仮想ディスクイメージフォーマットのみをサポートします。仮想ディスクイメージまたはコンテナをLVMストレージにのみ保存できます。

LVMディスクアレイがノード内のローカルダイレクトアタッチディスクを使用して構成されている場合、このストレージに保存されているVMは、ライブマイグレーションすることができません。リモートノードからiSCSIデバイスを接続し、その上にLVMストレージを作成している場合は、ライブマイグレーションができます。

:::note info
[TrueNAS(FreeNAS)](https://www.truenas.com/)は、LVM + iSCSI共有ストレージを作成するためのおすすめの構築方法です。
:::

# LVM Thin (Logical Volume Management Thin)

LVMは通常、ボリュームを作成するときにブロックを割り当てます。一方、LVM Thinプールは、ブロックが書き込まれたときにブロックを割り当てます。この振る舞いはシンプロビジョニングと呼ばれ、物理的に利用可能なスペースよりもはるかに大きなボリュームを持つことができます。

通常のLVMコマンドラインツールを使用してLVMシンプールを管理および作成できます。既にpveというLVMボリュームグループを持っていると仮定すると、次のコマンドはdataという名前の新しいLVMシンプール（サイズ100G）を作成します。

```
lvcreate -L 100G -n data pve
lvconvert --type thin-pool pve/data
```

LVM Thinはブロックストレージですが、スナップショットやクローンをサポートしています。新しいボリュームは自動的にゼロで初期化されます。

LVM Thinプールは複数のノード間で共有できないため、ローカルストレージとしてのみ使用できます。

# NFS (Network File System)

NFSは、異なるコンピュータ間でファイルシステムを共有するためのプロトコルです。ネットワークを介してファイルにアクセスし、操作することができるようになります。ローカルにあるかのように扱えます。NFSはシンプルで柔軟なファイル共有ソリューションを提供し、異なるオペレーティングシステム間でのデータ共有を容易にします。

ProxmoxはデフォルトでNFSプロトコルのバージョン3を使用しています。storage.cfgのオプションを使用してバージョン4に変更することができます。NFSストレージは.qcow2、.raw、.vmdkのイメージフォーマットを保存できます。

:::note info
[TrueNAS(FreeNAS)](https://www.truenas.com/)は、NFSを作成するためのおすすめの構築方法です。
:::

# CIFS （Common Internet File System）

CIFSは、ファイルやプリンタなどのリソースをネットワーク上で共有するためのプロトコルです。Windows環境で広く利用されています。SMB（Server Message Block）プロトコルの一形態として機能します。CIFSを使用すると、異なるコンピュータ間でのファイルアクセスや共有が容易になり、ネットワーク上でのデータ交換を効率化できます。

CIFSはストレージレベルでのスナップショットをサポートしていません。

# Proxmox Backup Server

Proxmox Backup Serverはブロックレベルまたはファイルレベルのバックアップのみをサポートします。Proxmox VEは仮想マシンにブロックレベル、コンテナにファイルレベルを使用します。

# Ceph RBD （Ceph Rados Block Device）

Ceph RBDは、Ceph分散ストレージシステムの一部です。仮想マシンのディスクイメージやデータベースなどのブロックレベルのストレージを提供します。高度な機能を備え、スケーラブルで耐障害性があり、クラウドコンピューティング環境での使用に最適です。データはクラスタ全体に分散され、可用性と性能を向上させます。

RBDストレージは、Ceph分散ストレージシステムによって提供されます。RBDストレージは、複数のノードの設定を必要とする、最も複雑なストレージシステムです。

RBDストレージは.rawイメージフォーマットのみを保存できます。Cephクラスターを拡張するために、ハードドライブまたはノードを追加すると、Cephは自動的にデータを再バランスし、新しいハードドライブまたはノードを分散ストレージに加えます。

# CephFS

CephFSは、Ceph分散ストレージシステム上で動作する分散ファイルシステムです。高可用性と高スケーラビリティを特徴とし、複数のクライアントが同時にアクセスできる共有ファイルストレージを提供します。メタデータとデータの分散により、大規模なデータセットの管理とパフォーマンスの最適化を実現します。

CephFSバックエンドは、Cephクラスタ上のPOSIX準拠ファイルシステムです。

# ZFS (Zettabyte File System)

ZFSは、高度な機能を備えたファイルシステム兼ボリュームマネージャーです。データの整合性を確保するためのチェックサム、圧縮、スナップショット、レプリケーションなどをサポートしています。大規模なストレージプールの効率的な管理とデータ保護を目的として設計されました。

Proxmoxには、ZFSストレージプラグインが含まれており、ProxmoxクラスターノードでZFSをネイティブに使用できます。ZFSはストレージを定義するためにプールを使用します。プールはCLIを通じてのみ作成できます。プールが作成されると、Proxmox で利用できるようになります。


# さいごに

かんたんでしたね

# 関連リンク

- [Proxmox](https://www.proxmox.com/en/)
- [Proxmox - Storage](https://pve.proxmox.com/wiki/Storage)
- [【2024年04月版】Apple silicon (M1/M2/M3) de Proxmox【Proxmox on UTM】](https://qiita.com/nouernet/items/c7b116fe332fc9ed93aa)
- [【2024年04月版】MacでProxmoxのインストールUSBを作成【diskutil, dd】](https://qiita.com/nouernet/items/273fdce0e77f0b2528bd)
- [【2024年04月版】Proxmoxのストレージタイプ【iSCSI, LVM, NFS, Ceph, GlusterFS】](https://qiita.com/nouernet/items/9115d497fd62930bbfcb)
- [【2024年04月版】Proxmox で Cluster構築【初心者向け】](https://qiita.com/nouernet/items/33e35409527b1c83df97)
- [【2024年04月版】Proxmox で Ceph/CephFS構築【初心者向け】](https://qiita.com/nouernet/items/120c5d8c8b96f881f077)