ユースケース
以下みたいなケースで、ファイル共有がほしくなったので手順をメモ。
- PVEノード構成
- クラスタにNFS等の共有ストレージなし
- OS用のディスクは小さめ
- VM用のディスクは大き目かつZFS
- ファイル共有したい理由
- ISOイメージ等を各PVEノードのlocal(デフォルト作成されるディレクトリ)に用意するのが大変
- インポートウィザード以外の移行方式の場合にlocalがあるディスクが足りない
- OVA/OVFインポート
- P2V(Clonezillaとか)
- ディスク→イメージを想定。ディスク→ディスクなら不要だが、失敗時の切り分け・手戻りを考慮。
-
Attach Disk & Move Disk (minimal downtime)
- ZFSだとraw形式以外がVMディスクとして利用できないので、NFSとすることでvmdk形式が利用出来る点も〇
手順
有効化
- NFSのパッケージインストール
- 作成済みのZFSプールにNFS用のZFSファイルシステム作成
- 作成したZFSファイルシステムにNFS権限設定
- この時、PVEをrootで利用していると
no_root_squash
が必要なのがはまりポイント。
- この時、PVEをrootで利用していると
- サービス設定
apt update
apt install nfs-kernel-server
zfs create mypool/share
zfs set sharenfs="rw=@xxx.xxx.xxx.xxx/xx,no_root_squash" mypool/share
zfs get sharenfs mypool/share
systemctl start nfs-kernel-server
systemctl enable nfs-kernel-server
無効化
作業終了したら無効化。
VMのディスクとしてNFSを利用していても、ストレージから削除出来たり、NFS共有設定を削除出来てしまう。
この時、VMとディスクを削除出来なくなってしまい面倒なので、先にVM等で利用されていないこと・ZFSファイルシステムが空であることを確認したほうがいい。
systemctl stop nfs-kernel-server
systemctl disable nfs-kernel-server
zfs set sharenfs=off mypool/share
zfs destroy mypool/share
メモ
Clonezilla等であれば関係ないが、Attach Disk & Move Disk (minimal downtime)などESXiからNFSにファイルをコピーする際、ESXiのAPI制限を受けて速度が出ないため、やり方検討したい。(未検討)
ただし、API制限がかかっているのでESXiの利用状況を気にしなくていい、という観点はあり。
※無制限で帯域等の使用して、既存のESXi利用に影響出ちゃうとか。
- データストアとしてでなく、普通にNFSとしてマウントする?
- ESXiローカルからNFSにストレージマイグレーションする?
- vCenterが必要っぽい?