みなさん、こんにちは!
今回のテーマは「 NFSを使用したOLVMデプロイ検証記 」ということで、本編から外れた番外編となります。
Oracle KVM,OLVMに関する本編は"Oracle KVMとOLVMについて"をご覧ください。
NFSを選択した背景
今回はタイトルにもある通り、セルフホステッドエンジン方式でOLVMデプロイ時に選択できる4つのストレージタイプのうち、NFSを使用したデプロイ検証を行いました。
NFSを選択した背景として、お客様から
「共有ストレージのないサーバ1台の構成で、OracleKVM環境を構築したい」
「KVMサーバのディレクトリをNFS共有することで共有ストレージとして扱い、そこをストレージドメインとしOLVMを構成したい」
といったご要望があったため、NFS使用したOLVMデプロイ検証を行いました。
環境
検証で使用したバージョンは以下の通りとなります。
製品 | バージョン |
---|---|
Oracle Linux | 8.8 |
Oracle Linux KVM | 6.1.1 - 8.module+el8.8.0+21161+70fb2747 |
Oracle Linux Virtulaization Manager/ovirt | 4.4.10.7-1.0.25.el8 |
構成図
まずは、今回の検証の簡単な構成図をご覧ください。
セルフホステッドエンジン方式では、OLVMの仮想マシンはハイパーバイザー化したKVMホスト上に展開させます。その際必要となる仮想マシンのディスク領域を、KVMホストの内蔵ストレージ上に作成し、NFSでOLVMに見せてあげるというイメージになります。
構築手順
早速ですが、ここからは構築手順に入っていきます!
事前準備
まずは、Oracle Linuxのインストールや設定、Oracle KVMとしてのセットアップを行います。
ここまでの手順は"Oracle KVM 要件と構築について"を参照してください。
NFSストレージの準備
インストール
NFSストレージの構築に必要なパッケージは、事前準備の段階でovirt-hosted-engine-setupと一緒にインストールされるため、別途インストールする必要はありません。
確認事項
NFSストレージを準備する前に2点確認を行います。
確認1.パーティション
今回の環境では、NFSストレージ用のパーティション(/data)を作成しています。
※システムで使用するパーティション(/など)とは別に、NFSストレージ用に独立したパーティションを作成する要件は、Oracleドキュメントに記載されていませんでした。しかし、管理上の利便性や、他パーティションへの容量圧迫抑制、OLVMデプロイ後にNFSストレージ用ディレクトリのファイルシステムタイプがNFSに変更される、といったことを考慮するとパーティションは切り分けておいた方が良いかと思います。
確認2.ユーザーとグループ
ovirt-hosted-engine-setupをインストールすると、自動的にvdsmユーザ(UID:36)とkvmグループ(GID:36)が作成されます。
確認事項は以上となります。
NFSの準備
それでは、NFSストレージの準備に移ります。
1.ストレージドメインとするディレクトリの作成
#mkdir /data
※今回の例では、Oracle Linuxインストール時にNFSストレージ用パーティション(/data)を作成し、/dataをマウントポイントとしています。
そのため、Oracleドキュメントに記載されているNFSストレージ用のディレクトリ作成はスキップしています。"NFS記憶域の準備"
続いて、 NFS準備で重要となるポイント です。
vdsmユーザーおよびKVMグループには、ディレクトリに対する読取り、書込みおよび実行権限が必要となります。(実行権限を付与せずOLVMデプロイを実行し、デプロイに失敗して1時間ほど時間を無駄にしました...)
2.ディレクトリの所有権をvdsmユーザ(UID:36)とkvmグループ(GID:36)に変更します。
#chown 36:36 /data
3.読取り/書込み権限をvdsmユーザ(UID:36)とkvmグループ(GID:36)に付与します。
#chmod 755 /data
4./etc/exportsを編集し、作成したディレクトリを追加します。
#vi /etc/exports
設定項目 | 設定値 | 設定内容 |
---|---|---|
パス名 | /data | NFS領域とするディレクトリをフルパスで記載 |
ホスト | * | すべてのサーバーに対してストレージドメイン共有を許可※共有したいホストを指定する場合は、パスの後ろに「ホスト名」または「IPアドレス」を記載 |
今回使用したオプションです。
オプション | オプション内容 |
---|---|
rw | クライアントからの読み出し、書き込みを許可 |
sync | クライアントから書き込まれたデータをディスクに書き込むまで次の要求に応じない(同期型での共有) |
no_subtree_check | sub_tree_checkオプション機能を無効化 |
all_squash | クライアント側のすべてのユーザーからの読み出し/書き込み要求を、匿名ユーザーからの要求として扱う |
anonuid=36 | 匿名ユーザーをvdsmユーザー(uid:36)に指定する |
anongid=36 | 匿名グループをkvmグループ(gid:36)に指定する |
5.nfs-server.serviceを起動し、自動起動に設定します。
#systemctl start nfs-server.service
#systemctl enable nfs-server.service
#systemctl status nfs-server.service
6.共有ディレクトリをエクスポートします。
#exportfs -arv
7.firewallを有効にしている場合は、許可するサービスにnfsを追加します。
#firewall-cmd --permanent --add-service nfs
#firewall-cmd --reload
デプロイ設定手順
NFSの準備が出来たら、次はいよいよデプロイです!
下記コマンドで、OLVMのデプロイを開始します。
#hosted-engine --deploy
デプロイが始まると、対話式で設定値を入力しますが、後半のストレージドメインの設定をする部分でNFSを選択していきます。
ストレージドメイン設定前までの内容については"OLVM構築 - セルフホステッドエンジン方式"をご覧ください。
回答手順
以下、NFSを選択する場合の設定項目と設定値です。
No. | 項目 | 内容 | 設定値 |
---|---|---|---|
1 | Please specify the storage you would like to use (glusterfs, iscsi, fc, nfs)[nfs]: | OLVMのディスク配置先となるストレージドメイン"hosted_storage"のストレージタイプ | nfs |
2 | Please specify the nfs version you would like to use (auto, v3, v4, v4_0, v4_1, v4_2)[auto]: | NFSバージョン | auto |
3 | Please specify the full shared storage connection path to use (example: host:/path): | 参照するNFS領域の情報(IPアドレス:/パス) | XXX.XXX.XXX.XXX:/data |
4 | If needed, specify additional mount options for the connection to the hosted-engine storagedomain (example: rsize=32768,wsize=32768) []: | 追加のマウントオプション(任意) | なし |
「2.NFSバージョン」では「auto」を選択していますが、実際には「v4_2」が採用されています。(OSのデフォルト)
上記の通り回答し、ストレージドメインの設定を進めていきます。
回答が終了すると下記が表示され、ストレージドメインの作成が始まります。
[ INFO ] Creating Storage Domain
しばらく待つと下記が表示され、ストレージドメインが起動してきます。
[ INFO ] TASK [ovirt.ovirt.hosted_engine_setup : Activate storage domain]
最後に、 Please specify the size of the VM disk in GiB: [38]:
と聞かれるので、OLVMに割り当てるディスクサイズを入力します。
そして、下記出力がされると、NFSでのOLVMデプロイが完了となります。
[ INFO ] Hosted Engine successfully deployed
OLVMログイン
早速OLVMにログインし、[ストレージ]>[ストレージドメイン]を確認してみます。
ストレージタイプがNFSとなっていますね。KVMホストからも/dataを確認してみます。
無事、NFSを使用したOLVMデプロイができました!
注意点
今回検証した構成を業務システムの実運用で採用する場合には、いくつか注意点があります。
①Oracleで明示されている構成・手順ではない
セルフホステッドエンジン方式でOLVMを構築する際に、NFS領域をデプロイ用ストレージとすること自体は、Oracleのドキュメントに記載されている公式な方法です。"コマンドラインを使用したデプロイ"
しかし、今回の構成のような方法はOracleから明示的に提供されているものではありません。
②サポートが限定的になる可能性がある
上記①の理由で、この構成でOLVM環境を構築した場合、Oracleから提供されるサポート内容が限定的なものになる可能性があります。
上記の注意点より、今回の構成を採用する場合は 検証用、検証環境など非恒常的な環境 での利用にとどめることをお勧めします。
注意点についてご理解いただいた上で、もし恒常的な業務運用での利用を検討する場合は、メーカーサポートへのサポート範囲の確認や、顧客へ提供する場合は注意点を共有すること等をご留意ください。
おわりに
今回は、Oracle KVMシリーズの番外編として、新人2人でNFSを使用したOLVMデプロイに挑戦しました。
かなりニッチな内容ではありますが、基本的にはKVMサーバ上にNFSサーバを構築するだけなので、新人2人でも比較的簡単に構築することができました。
Oracle KVMやOLVMはLinuxがベースなので、製品を扱っていると今回のNFSのようにLinuxの勉強もできて一石二鳥だなと感じます。
この記事は番外編という位置づけのため、OLVMに関する詳しい情報は割愛しています。もっと知りたいと思った方は、ぜひ本編の"Oracle KVMとOLVMについて"やそれ以降の記事もご覧ください!