レック・テクノロジー・コンサルティング株式会社TECH BLOG

NFSを使用したOLVMデプロイ検証記

はじめに

はじめまして!2023年新卒入社しました、インフラ技術部OとWです。
OとWともにIT未経験の文系卒で、初めは基本の基も分からないといった状態でした。

7月に本配属されてから約半年近くOracle KVM,OLVMに触れてきました。何度も壁にぶつかり、躓きながら、現在進行形でさまざまな検証を行っています。検証を重ねるにつれ、基礎的な知識が身に付き、Oracle KVM,OLVMについての知見を広められたと思います。

そんな中、上司Kさんから「ブログを書いてみないか」というこれまでの経験をアウトプットする機会をいただいたので、初めてブログ執筆に挑戦します!

さて、前置きが長くなりましたが、今回のテーマは「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に見せてあげるというイメージになります。

スクリーンショット 2023-12-26 124155.png

構築手順

早速ですが、ここからは構築手順に入っていきます!

事前準備

まずは、Oracle Linuxのインストールや設定、Oracle KVMとしてのセットアップを行います。
ここまでの手順は"Oracle KVM 要件と構築について"を参照してください。

NFSストレージの準備

インストール

NFSストレージの構築に必要なパッケージは、事前準備の段階でovirt-hosted-engine-setupと一緒にインストールされるため、別途インストールする必要はありません。

確認事項

NFSストレージを準備する前に2点確認を行います。

確認1.パーティション
今回の環境では、NFSストレージ用のパーティション(/data)を作成しています。

※システムで使用するパーティション(/など)とは別に、NFSストレージ用に独立したパーティションを作成する要件は、Oracleドキュメントに記載されていませんでした。しかし、管理上の利便性や、他パーティションへの容量圧迫抑制、OLVMデプロイ後にNFSストレージ用ディレクトリのファイルシステムタイプがNFSに変更される、といったことを考慮するとパーティションは切り分けておいた方が良いかと思います。
ss019 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

確認2.ユーザーとグループ
ovirt-hosted-engine-setupをインストールすると、自動的にvdsmユーザ(UID:36)とkvmグループ(GID:36)が作成されます。
ss039 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

確認事項は以上となります。

NFSの準備

それでは、NFSストレージの準備に移ります。

1.ストレージドメインとするディレクトリの作成
# mkdir /data

※今回の例では、Oracle Linuxインストール時にNFSストレージ用パーティション(/data)を作成し、/dataをマウントポイントとしています。
そのため、Oracleドキュメントに記載されているNFSストレージ用のディレクトリ作成はスキップしています。"NFS記憶域の準備"ss041 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

続いて、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
ss026 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

4./etc/exportsを編集し、作成したディレクトリを追加します。
# vi /etc/exports

[書式]
パス名 ホスト オプション
ss022 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

設定項目 設定値 設定内容
パス名 /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
ss101 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

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のデフォルト)ss040 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

上記の通り回答し、ストレージドメインの設定を進めていきます。
ss028 - 10.48.51.30 - root@okazaki-kvm:~ VT (1).png

回答が終了すると下記が表示され、ストレージドメインの作成が始まります。
[ 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にログインし、[ストレージ]>[ストレージドメイン]を確認してみます。
ss032 - Oracle Linux Virtualization Manager - Google Chrome.png

ストレージタイプがNFSとなっていますね。KVMホストからも/dataを確認してみます。
ss034 - 10.48.51.30 - root@okazaki-kvm:~ VT.png

無事、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について"やそれ以降の記事もご覧ください!

最後までお付き合いいただきありがとうございました!

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る