ノート:

Oracle LinuxでKVMを使用してVMを作成

イントロダクション

カーネルベースの仮想マシン(KVM)は、オープンソースのtype-1 (ベアメタル)ハイパーバイザです。この機能により、Oracle Linux 8などのホストシステムが、サポートされるハードウェア上で実行するときに複数の仮想マシン(VM)またはゲストをホストできます。

このチュートリアルでは、Oracle Linux Kernel Virtualization Manager (KVM)をデプロイして仮想マシンを作成します。

目的

前提条件

次の構成を持つ任意の Oracle Linux 8以降のシステム:

仮想化をサポートする環境の検証

ノート: 無料ラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Labの基本を参照してください。

  1. まだ接続していない場合は、端末を開き、ssh経由でインスタンスに接続します。

    ssh oracle@<ip_address_of_instance>
    
  2. 次のコマンドを実行して、CPUタイプを確認します。

    grep -e 'vendor_id' /proc/cpuinfo
    

    出力例:

    [oracle@ol-node01 ~]$ grep -e 'vendor_id' /proc/cpuinfo
    vendor_id	: GenuineIntel 
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    

    このシステムは、GenuineIntelの出力で示される Intelベースです。

  3. Intelシステムの場合は、次のコマンドを入力します。

    grep -e 'vmx' /proc/cpuinfo
    

    コマンド出力にvmxフラグが存在することは、このシステムが仮想化をサポートしていることを示しています。

  4. ロードされたKVMモジュールを確認します。

    lsmod | grep kvm
    

    出力例:

    [oracle@ol-node01 ~]$ lsmod |grep kvm
    kvm_intel             262144  0 
    kvm                   696320  1 kvm_intel
    irqbypass              16384  1 kvm
    

    出力には、このシステムのハードウェアに基づくKVMカーネルモジュールと kvm_intelプロセッサモジュールが表示されます。これらのモジュールは、最新のLinuxシステムにデフォルトでロードする必要があります。

KVMのインストールと起動

  1. Oracle Linux仮想化モジュールに関連付けられたソフトウェアパッケージをインストールします。

    sudo dnf module install virt -y
    

    このコマンドは、libvirt、qemu- kvm、およびその他の依存関係を含む仮想化パッケージのコレクションをインストールします。

  2. virt-installおよびvirt-viewerをインストールします。

    sudo dnf install virt-install virt-viewer -y
    

    これで、必要なパッケージセットのインストールが完了します。

  3. ホスト・マシンが準備でき、libvirt VMを実行するように設定されていることを確認します。

    virt-host-validate
    

    出力例:

    [oracle@ol-node01 ~]$ virt-host-validate
    QEMU: Checking for hardware virtualization                                 : PASS
    QEMU: Checking if device /dev/kvm exists                                   : PASS
    QEMU: Checking if device /dev/kvm is accessible                            : PASS
    QEMU: Checking if device /dev/vhost-net exists                             : PASS
    QEMU: Checking if device /dev/net/tun exists                               : PASS
    QEMU: Checking for cgroup 'cpu' controller support                         : PASS
    QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
    QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
    QEMU: Checking for cgroup 'memory' controller support                      : PASS
    QEMU: Checking for cgroup 'devices' controller support                     : PASS
    QEMU: Checking for cgroup 'blkio' controller support                       : PASS
    QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
    QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)
    

    すべてがPASSをチェックすると、システムは作成されたVM用に準備されます。失敗をチェックする場合は、手順に従って問題を修正します。いずれかのチェックがWARNの値を返した場合は、指示に従って仮想化機能を改善することを検討してください。

  4. libvirtdデーモンを起動し、各ブート時に自動的に起動されるようにします。次に、ステータスをチェックして稼働中であることを確認します。

    sudo systemctl enable --now libvirtd.service
    sudo systemctl status libvirtd.service
    

    出力例:

    [oracle@ol-node01 ~]$ sudo systemctl enable --now libvirtd.service
    [oracle@ol-node01 ~]$ sudo systemctl status libvirtd.service
    * libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor pr>
       Active: active (running) since Mon 2022-06-13 21:28:19 GMT; 8s ago
         Docs: man:libvirtd(8)
               https://libvirt.org
    ...
    

    出力は、サービスが有効で動作していることを示します。

Oracle LinuxでKVMを管理するためのCockpit Webコンソールの設定

  1. Libvirtに基づいてVMを管理するためのcckpit- machines拡張をインストールします。

    sudo dnf install cockpit cockpit-machines –y
    
  2. コックピットソケットを起動し、システムブート時に自動起動できるようにします。

    sudo systemctl enable --now cockpit.socket
    sudo systemctl status cockpit.socket
    

    出力例:

    [oracle@ol-node01 ~]$ sudo systemctl enable --now cockpit.socket
    Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/lib/systemd/system/cockpit.socket.
    [oracle@ol-node01 ~]$ sudo systemctl status cockpit.socket
    * cockpit.socket - Cockpit Web Service Socket
       Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor pres>
       Active: active (listening) since Mon 2022-06-13 21:39:24 GMT; 10s ago
         Docs: man:cockpit-ws(8)
       Listen: [::]:9090 (Stream)
    ...
    

    出力は、サービスが有効でリスニング中であることを示します。

  3. このサイトにリモートでアクセスするには、cockpitサービスのファイアウォールポートを有効にし、ファイアウォール構成を再ロードして新しい変更を適用します。

    sudo firewall-cmd --add-service=cockpit --permanent
    sudo firewall-cmd --reload
    

    ノート: lunaboxデスクトップの2番目の端末からこの次のコマンドを実行してください。

  4. lunaboxデスクトップで2番目の端末を開き、次のコマンドを入力して、sshを使用してCockpitのローカルポートフォワードを作成します。

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  5. デスクトップでWebブラウザを開き、https://localhost:9090を参照します。

    Cockpit Webコンソールは、自己署名証明書を使用してHTTPSを有効にします。

    accept_cert

    「Advanced」をクリックし、ブラウザから警告が表示されたら接続を受け入れます。

  6. パスワードがoracleoracleユーザーとしてログインします。

    login

    コックピット・ダッシュボードが表示されます。

  7. 「アクセス制限」ボタンをクリックして、管理権限を取得します。

    アクセス

  8. 管理アクセス・ウィンドウを閉じます。

    アクセス

ISOからの仮想マシンの作成

  1. 左側のナビゲーション・パネルで「仮想マシン」オプションをクリックします。

  2. 「Create VM」ボタンをクリックします。

    vm

  3. 次の情報を入力します。

    Name: OL-demo
    Connection: System
    Installation type: URL (ISO image or distro install tree)
    Installation source: https://yum.oracle.com/ISOS/OracleLinux/OL8/u6/x86_64/OracleLinux-R8-U6-x86_64-dvd.iso
    Operating system: Oracle Linux 8.6
    Storage: Create new volume
    Size: 20 GiB
    Memory: 16 GiB
    Immediately start VM: check
    

    vm

  4. 「作成」をクリックして開始します。

  5. 「仮想マシン」のリストから、「OL- demo」リンクをクリックします。

    vmlist

  6. 下にスクロールしてVNCコンソールを表示します。

    十分な速さがある場合は、Oracle Linuxのインストールまたはこのメディアのテストとインストールのオプションを含むメニューが表示されます。「テスト」オプションは、数秒後にデフォルトで選択されます。インストーラは、メディア上のコンテンツが有効であることを確認してから、インストーラを起動します。

    ブートム

  7. インストーラがブートすると、「Welcome to Oracle Linux」画面が表示されます。インストール・プロセスの言語を選択してインストールを開始します。

    lang

    この演習は、インストール・プロセスを続行しません。

    ノート: このビデオ・リンクでOracle Linuxのインストール・プロセスを示す無料ビデオを視聴できます: Oracle Linux 8のインストール

  8. ウィンドウの右上にある「X」をクリックして、Webブラウザを閉じます。

Oracle Cloudイメージを使用した仮想マシンの作成

ノート: クラウド・インスタンス(ol-node01)端末ウィンドウから次のコマンドを入力してください。

  1. KVMイメージの格納場所に変更します。

    cd /var/lib/libvirt/images
    
  2. Oracle Linux VMテンプレートをダウンロードします。

    sudo curl -O https://yum.oracle.com/templates/OracleLinux/OL8/u6/x86_64/OL8U6_x86_64-kvm-b126.qcow
    
  3. メタデータ・ファイルを作成します。

    cat << 'EOF' | sudo tee ~/meta-data > /dev/null
    instance-id: iid-local01
    local-hostname: vm-01
    EOF
    
  4. ユーザーデータ・ファイルを作成します。

    cat << 'EOF' | sudo tee ~/user-data > /dev/null
    #cloud-config
    
    system_info:
      default_user:
        name: opc
    
    ssh_authorized_keys:
      - <paste_public_key_here>
    EOF
    
  5. SSHキー・ペアの生成

    ssh-keygen -t rsa -b 4096
    

    Enterを押して、各デフォルトを受け入れます。キー・ペアは、ユーザー・ホームの.sshディレクトリに書き込まれます。

  6. 公開鍵をuser- dataファイルにコピーします。

    SSHKEY=$(cat ~/.ssh/id_rsa.pub)
    sed -i "s|<paste_public_key_here>|${SSHKEY}|g" ~/user-data
    
  7. ISOイメージを生成します。

    sudo genisoimage -output /var/lib/libvirt/images/vm-01.iso -volid cidata -joliet -rock ~/user-data ~/meta-data
    
  8. インスタンスを作成します。

    sudo cp /var/lib/libvirt/images/OL8U6_x86_64-kvm-b126.qcow /var/lib/libvirt/images/vm-01.qcow
    
    sudo virt-install --name vm-01 \
    --memory 2048 \
    --vcpus 2 \
    --disk /var/lib/libvirt/images/vm-01.qcow,device=disk,bus=virtio \
    --disk /var/lib/libvirt/images/vm-01.iso,device=cdrom \
    --os-type linux --os-variant ol8.6 \
    --virt-type kvm --graphics none \
    --network network=default,model=virtio \
    --noautoconsole \
    --import
    
  9. VMをリストします。

    sudo virsh list
    
  10. vm-01仮想マシンのIPアドレスを取得します。

    sudo virsh net-dhcp-leases --network default
    

    ノート: 仮想マシンの起動速度によっては、IPアドレスを表示するためにコマンドを再度実行する必要がある場合があります。

  11. または、MACアドレスに基づいてフィルタできます。

    sudo virsh domiflist vm-01
    
  12. 前の出力からMACアドレスをコピーし、次のコマンドで指定します。

    sudo virsh net-dhcp-leases --network default --mac <MAC_address>
    
  13. sshに接続して、仮想マシンが動作していることを確認します。

    ssh opc@<vm-01-ip_address>
    

    出力例:

    [oracle@ol-node01 images]$ ssh opc@192.168.122.46
    The authenticity of host '192.168.122.46 (192.168.122.46)' can't be established.
    ECDSA key fingerprint is SHA256:xcuVfQdoFDCC72i7plD0OfqDTSBG6QWhOm5ti4HIKEs.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.122.46' (ECDSA) to the list of known hosts.
      
    [opc@vm-01 ~]$ uname -a
    Linux vm-01 5.4.17-2136.307.3.1.el8uek.x86_64 #2 SMP Mon May 9 17:29:47 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux
    

[オプション] CockpitダッシュボードからVMを表示

ノート: lunaboxデスクトップの端末からこの次のコマンドを実行してください。

  1. lunabox Desktop端末ウィンドウから次のコマンドを入力して、sshを使用してCockpitのローカルポートフォワードを作成します。

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  2. デスクトップでWebブラウザを開き、https://localhost:9090を参照します。

  3. パスワードがoracleoracleユーザーとしてログインします。

    login

    コックピット・ダッシュボードが表示されます。

  4. 必要に応じて、「アクセス制限」ボタンをクリックして管理権限を取得します。

  5. 左側のナビゲーション・パネルで「仮想マシン」オプションをクリックします。

  6. 仮想マシンのリストから、vm-01リンクをクリックします。

  7. 必要に応じて、「概要」セクション、「ディスク」セクション、ネットワーク・インタフェースなどを確認します。

    ノート: vm-01仮想マシンがvirt-install--graphical noneオプションを使用して作成されたため、コンソールはCockpit内でアクティブではありません。

これで、この演習は終了です。

詳細情報:

その他の学習リソース

他のラボをdocs.oracle.com/learnで探すか、Oracle Learning YouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品のドキュメントは、Oracle Help Centerを参照してください。