2023年 03月 20日
SUSE Linux Enterprise 15 sp5 ではじめての KVM 仮想化
インストールは Full インストールイメージの一枚目を USB メモリ等に書き込んでブートすれば良いのですが、サーバ構築中にパッケージや追加言語のインストール中も、インストールメディアを差しておく必要があって面倒です。大量にサーバをインストールするには面倒ですね。
オンラインでもインストールができますが、サブスクリプション登録が必要です。最新のパッケージがダウンロードできますが、閉じたネットワーク環境では使えません。
また、サードパーティデバイスドライバが必ずしも最新のカーネルに対応しているとは限りません。過去にパッチを当てた後、ドライバがカーネルに合わずインストールできなかったことがあったので、ダウンロードした「吊るしの状態」でドライバをインストールして、その後にサブスクリプション登録とアップデートのインストールをお勧めします。
そこで同じネットワークに HTTP や SMB, FTP などのサーバを用意してインストールソースにする事をお勧めします。以前、 Windows でCDイメージを「共有」させてインストールした事がありました。たまに、ベアメタルサーバの場合 ISO イメージから、ブートできない事もあり、その場合 SMB や HTTP サーバなどからインストールする必要がある場合もあります。そのため事前にインストールソースを別なサーバに用意して置くと便利です。
具体的には、例えば HTTP サーバの場合、ISO イメージを次のようにマウントして置くと良いでしょう。
# mount -o loop <path>/SLE-xxx-xxx-GM1.iso /srv/www/htdocs/<subdir>
> Installation
> 言語とキーボードの選択:特殊記号のレイアウトを確認します
> プロダクトの選択:SUSE Linux Enterprise Server をチェック
License Agreement : Agree にチェック
Registration:ここでは Skip します。スキップしない場合、次のスクリーンでサブスクリプション登録を要求されます。
Extention を選択。ブートメディアから直接インストールする場合は、ここで追加の拡張機能をチェックします。
インストールソースを別に用意した場合は、ここはそのまま Next します
Add on プロダクトのインストールソースがブートメディアになっています。
ここで、前画面でチェックされた拡張機能を全て Delete します。
次に Add ボタンを押して、インストールソースに、用意したインストールソースサーバを指定します。
ここではHTTP サーバを指定しています。
インストールソースにアクセス出来ると、再び追加の拡張機能の選択画面が出てきます。ここで、実際インストールする Extention をチェックします。
追加で Desktop Application Modules ..... と Legacy Modules( 必要であれば )... をチェックします。YaST GUI や virt-manager、サブスクリプション登録など GUI を必要とするケースがあるので、Desktop Application Modules は入れておくと良いでしょう。ifconfig や netstat など、使い慣れた Legacy ツールもここでインストールできます。デスクトップは軽量版の gnome です。
これで、拡張機能のインストール準備ができました。
System Role: SLES with gnome をチェック
次にパーティションを作成します。デフォルトでは、/var/lib/libvirt/images の下に仮想 VM イメージが作成されます。VM の作成時に別なディレクトリの指定もできます。ケース・バイ・ケースで、ここを iSCSI や CIFS マウントさせて、ライブマイグレーション前提で構築する場合もあるでしょう。
ここでは、/var を別パーティションとします。
パーティションの初期提案は、ルート:BTrfs 、/home: xfs です。Expert Partitioner から、提案内容(Start with Current Proposal )を基に ルートパーティションと /var を分割します。
初期提案から、ルートと、/home の割当を削除して、改めて、ルートパーティション( BTrfs )に 30 Gb以上、(60Gb以上推奨)と残りほぼ全てを /var(XFS) に割り当てます。/var を別パーティションにする際に、@/var サブボリュームを削除して別パーティションにします。この辺は BTrfs 固有の操作なので戸惑うかも知れません。
私の好みなのですが、50Gb 程度の未使用領域を残しておくと将来役に立つ事があります。
パーティションの定義が完成しました。ファイルフォーマット(F) とマウントポイントを確認してください。
確認して Accept します。
タイムゾーン: Asia/Tokyo GMT9 を選びます。Set Hardware clock UTP はベアメタルサーバーではチェックしたままで結構です。ただし NTP もきっちり設定しておくことです。
ゲストでインストールする時はいつも NTP を設定して、チェック外しますが、正しいのかな。ご意見ください。
ローカルユーザとルートユーザのパスワードを設定します。ローカルユーザは作成しないでスキップできます。
ここで最終のインストール内容をチェックします。
Software リンクから、追加のソフトウェアのインストールを選択したり、固定 IP の設定、コンソールログインのシステムターゲットの指定などを行います。
このサマリ画面から、KVMハイパーバイザーのインストールを行います。Software リンク - -> 一覧から KVM Virtualization host and tools と KVM Host Server の2つをチェックして追加しておきます。これで、自動的に KVM ホストサーバーがインストールされます。
※ これは aarch64 版なのですが、XEN はないですね。x86 版ならあるのかしら?
※ ここで KVM のチェックを忘れても、後で YaST からインストールもできます。
最後のサマリ画面から Install ボタンでインストールが開始されます。RH 系クローンはここで Enter を押すと勝手にインストールが始まって「あれれ!」となりますが、SUSE 系ではここで必ず確認ダイアログが出てくれるので親切です。
誤って Enter しても、デフォルト Back というのは親切です。この段階ではパーティションのフォーマットもやらないので、いつでも Back することができます。
パーティションの作成とファイルコピー、パッケージのインストール、ブートの設定などが始まり、自動的に再起動します。環境にもよりますが、数分から数十分かかります。
再起動したら、YaST > System > Network Settings を開いて、ネットワークが Brigde 経由で接続されていることを確認してください。ハイパーバイザーは、ブリッジ経由で Lan 接続します。インストールする時に KVM をインストールすると、自動的にここは設定されますが、後で YaST で設定すると、この設定は手動で行う必要があるケースがあります。
あとは、YaST から NTP の設定、第2言語で日本語環境、フォントのインストールなどを行います。
# virt-manager &
を起動して、実際に仮想 VM を作成します。
あとは、必要なデバイスドライバのコンパイル、インストールを行って、YaST の Product Registration から、サブスクリプションの購読を開始して zypper update します。
以上で SUSE Linux Enterprise 15sp5 での KVM ハイパーバイザーの構築ができました。蛇足(本当に蛇足)ですが、この環境は M1 Macbook Air の UTM 仮想環境で試しています。SLES15sp4 以降、「仮想環境の入れ子」( VM on VM ) が可能、という噂を聞いたので、UTM で動く SLES15sp5 でも入れ子が出来るか試してみました。ちなみに M1 mac なので aarch64 版です。
動きました。現実的に使えるかと言えばかなり遅いですね。そもそも macbook の様なデスクトップ環境で動かしてみても、メモリや利用状態では安定しません。たまに落ちます。MAC 用の CPU である M1 チップ自身のパフォーマンスや仮想環境での運用ってどうなのかという問題もあります。そもそもまだ UTM がまだまだ不安定なケースがあります。Parallels Desktop をお持ちの方はチャレンジしてみてはいかがでしょうか。