KVMで仮想化環境 - ストレージプール作成
概要
こちらのブログで作成した仮想化環境でNFS外部ストレージプールを作成します。
KVMに外部ストレージを追加していきます。ストレージは大別してローカルストレージを使用するものと、ネットワーク共有ストレージを使用するものに分けられます。
・ローカルストレージ
KVMサーバに直接接続されているディスク。物理ディスク、物理パーティション、論理パーティション、 ディレクトリ等の単位でストレージとして指定することが可能です。
・ネットワーク共有ストレージ
NFS、iSCSI等のネットワーク接続されているストレージを指定することが可能です。
利用できないストレージの種類もありますので、利用する際は適宜Red hatのサイトでの確認をお勧めします。
- 環境
- ESXi上に構築したRHEL9.4にKVMを構築 (KVM on ESXi)
- OS (仮想ホスト)
- Red hat Enterprise Linux 9.4
- 主要ソフトウェア
- qemu-kvm-8.2.0-11.el9_4.3.x86_64
- libvirt-10.0.0-6.3.el9_4.x86_64
- virt-install-4.1.0-5.el9.noarch
- virt-viewer-11.0-1.el9.x86_64
・ストレージプール作成
今回はNFSを使用してストレージプールを作成します。
KVMサーバでSELinuxが有効な場合は以下のコマンドを実行してvirtにNFSの許可設定を行います。
# setsebool -P virt_use_nfs=on
# getsebool virt_use_nfs
virt_use_nfs --> on
KVMサーバでマウントポイントとするディレクトリを作成します。ディレクトリの場所はどこでも構いませんが、ここではvmディスクが作成されるimagesディレクトリにnfspoolというディレクトリを作成してマウントポイントとします。
その後、virshコマンドでストレージプールを作成します。
# mkdir /var/lib/libvirt/images/nfspool
# virsh pool-define-as --name kvm_nfspool --type netfs --source-host='10.14.213.200' --source-path='/data' --source-format='nfs' --target='/var/lib/libvirt/images/nfspool'
引数の意味はそれぞれ以下のようになります。
・name:ストレージプールの名前
・source-host:NFSサーバのIPアドレス、または名前
・source-path:NFSサーバで共有設定しているディレクトリ
・target:KVMサーバのマウントポイント
作成されたストレージプールを確認します。
# virsh pool-list --all
名前 状態 自動起動
----------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
nfspool 停止状態 はい (yes)
作成しただけでは停止状態のままなのでストレージプールを起動します。KVMサーバ自体でNFSマウントする必要はありません。ストレージプール起動処理中でマウントされます。
# virsh pool-start nfspool
プール nfspool が起動されました
# virsh pool-list --all
名前 状態 自動起動
--------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
nfspool 動作中 はい (yes)
# mount | grep nfspool
10.14.213.200:/data on /var/lib/libvirt/images/nfspool type nfs4 (rw,nosuid,nodev,noexec,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.14.213.11,local_lock=none,addr=10.14.213.200)
ストレージプールに仮想マシンのディスクを作成したい場合は、あらかじめストレージプールにボリュームを作成しておく必要があります。ボリュームの作成は以下のように容量とフォーマットを指定する必要があります。GUIからもボリュームの作成は可能です。
# virsh vol-create-as --pool nfspool --name nfs-disk02 --capacity 30G --format qcow2
ボリューム nfs-disk02 が 作成されました
# virsh vol-list nfspool --details
名前 パス 種類 容量 割り当て
----------------------------------------------------------------------------------------------
nfs-disk02 /var/lib/libvirt/images/nfspool/nfs-disk02 ファイル 30.00 GiB 196.00 KiB
ボリュームを作成すると仮想マシンの作成画面でストレージプール、ボリュームを選択できるようになります。GUIでリストに出てこない場合はWeb画面をリロードすると出てきます。
作成したボリュームをワイプするには以下のコマンドを実行します。
ワイプではボリューム自体は残りますので再利用可能です。
# virsh vol-wipe --pool nfspool nfs-disk02
ボリューム nfs-disk02 が完全消去されました
# virsh vol-list nfspool --details
名前 パス 種類 容量 割り当て
--------------------------------------------------------------------------------------------
nfs-disk02 /var/lib/libvirt/images/nfspool/nfs-disk02 ファイル 20.00 GiB 0.00 B
ボリュームを削除するには以下のコマンドを実行します。ボリュームを削除しただけでは仮想マシンは削除されません。
# virsh vol-delete nfs-disk02 --pool nfspool
ボリューム nfs-disk02 は削除されました
ストレージプールを削除するには停止、定義の削除を行います。停止はpool-destroy(非アクティブ化)、定義の削除はpool-undefine(削除)で行います。
# virsh pool-list
名前 状態 自動起動
--------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
nfspool 動作中 はい (yes)
# virsh pool-destroy nfspool
プール nfspool は破壊されました
# virsh pool-list
名前 状態 自動起動
--------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
# virsh pool-list --all
名前 状態 自動起動
----------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
nfspool 停止状態 はい (yes)
# virsh pool-undefine nfspool
プール nfspool の定義が削除されました
# virsh pool-list --all
名前 状態 自動起動
--------------------------------
default 動作中 はい (yes)
iso 動作中 はい (yes)
ストレージプールの基本的な操作は以上です。必要な時に必要な量をNFSサーバから拝借できるようになりました。NFSサーバで容量不足になった場合でも別のNFSサーバを立てたり、NFSサーバにディスクを追加することでKVMサーバ自体を弄らずに使用できる容量を増やすことができます。
参考サイト
技術情報
- Linux KVM製品情報
お気軽にお問い合わせください。応対時間 9:30-17:30 [ 土・日・祝日除く ]
お問い合わせ