GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS8サーバーにKVMをインストールして構成する

このステップバイステップガイドでは、KVMとは何か、およびCentOS8LinuxオペレーティングシステムにKVMをインストールして構成する方法について説明します。

このガイドは、CentOS8最小サーバーエディションで正式にテストされています。ただし、RHEL8およびAlmaLinux8やRockyLinux8などのクローンでも機能するはずです。

KVMとは何ですか?

KVM Kの略 ernelベースのV irtual M achineは、カーネルがハイパーバイザーとして機能できるようにするFreeBSDおよびLinuxカーネルモジュールです。

カーネルバージョン2.6.20以降、KVMはLinuxカーネルメインラインに統合されています。

KVMを使用すると、Linuxマシンで仮想化環境を簡単にセットアップし、Linux、Windows、BSD、MacOSなどのさまざまなゲストオペレーティングシステムを展開できます。

それでは、CentOS8LinuxにKVMをインストールして構成する方法を見てみましょう。

前提条件

KVMをインストールする前に、まずシステムがハードウェア仮想化をサポートしていることを確認してください。次のガイドでは、Linuxシステムが仮想化をサポートしているかどうかを識別するためのいくつかの異なる方法を文書化しています。

  • CPUが仮想化テクノロジー(VT)をサポートしているかどうかを確認する方法

システムがハードウェア仮想化をサポートしている場合は、次の手順を続行します。

1。 CentOS8サーバーにKVMをインストールして構成する

このガイドでは、次のシステムを使用します。

KVM仮想化サーバー:

  • OS – CentOS 8最小サーバー(GUIなし)
  • IPアドレス :192.168.225.53 / 24

CentOS 8でテストされていますが、このガイドはRHEL8でも問題なく動作するはずです。

1.1。 CentOS8にKVMをインストールする

注: このチュートリアル全体で提供されるすべてのコマンドは、 rootとして実行する必要があります ユーザー。通常のユーザーとしてログインしている場合は、sudoを追加します すべてのコマンドの前に以下を示します。

rootとしてコマンドを使用して、Kvmと必要なすべての依存関係をインストールしてCentOS8サーバーに仮想化環境をセットアップします ユーザー:

# dnf install qemu-kvm libvirt virt-install

ここで

  • emu-kvm -KVMサポート用のQEMUメタパッケージ(つまり、x86ハードウェアでのQEMU完全仮想化)
  • libvirt -libvirtライブラリのプログラム
  • virt-install -仮想マシンを作成および複製するプログラム。

KVMをインストールしたら、libvertdを有効にして起動します サービス(まだ開始されていない場合):

# systemctl enable libvirtd
# systemctl start libvirtd

両方のコマンドを組み合わせて、以下のように1つのライナーとして実行することもできます。

# systemctl enable --now libvirtd

次のコマンドでlibvirtdサービスのステータスを確認します:

# systemctl status libvirtd

出力例:

● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enable>
   Active: active (running) since Wed 2020-07-15 14:27:32 IST; 5s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 1097 (libvirtd)
    Tasks: 17 (limit: 32768)
   Memory: 57.0M
   CGroup: /system.slice/libvirtd.service
           └─1097 /usr/sbin/libvirtd

Jul 15 14:27:28 centos8.ostechnix.lan systemd[1]: Starting Virtualization daemon...
Jul 15 14:27:32 centos8.ostechnix.lan systemd[1]: Started Virtualization daemon.

libvertdサービスが稼働しています!

KVMモジュールがロードされているかどうかを確認します:

# lsmod | grep kvm

出力例:

kvm_intel             294912  0
kvm                   786432  1 kvm_intel
irqbypass              16384  1 kvm

素晴らしい! KVMモジュールがロードされます。今すぐネットワークブリッジを作成しましょう。

1.2。 CentOSでKVMを使用してブリッジネットワークをセットアップする

ブリッジネットワーク ホストコンピューターの実際のネットワークインターフェイスを他のVMと共有して、外部ネットワークに接続します。したがって、各VMは利用可能なIPv4に直接バインドできます。 またはIPv6 物理的なコンピュータのように、アドレス。

デフォルトでは、KVMはプライベート仮想ブリッジをセットアップし、すべてのVMがホストコンピューター内で相互に通信できるようにします。

ゲストのネットワークを構成するための独自のサブネットとDHCPを提供し、NATを使用してホストネットワークにアクセスします。

ipを使用して、KVMのデフォルトの仮想インターフェースのIPアドレスを確認してください。 コマンド:

# ip a

出力例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.52/24 brd 192.168.225.255 scope global dynamic noprefixroute enp0s3
       valid_lft 42217sec preferred_lft 42217sec
    inet6 2409:4072:918:98cf:ad3b:b969:8ec8:f9c7/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::b404:4d52:8bee:18bf/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff

ご覧のとおり、KVMのデフォルトネットワーク virbr0 192.168.122.1/24を使用します IPアドレス。すべてのVMは、192.168.122.0/24のIPアドレスを使用します IP範囲とホストOSは192.168.122.1で到達可能になります 。

ホストOSにSSH接続できるはずです(192.168.122.1 )ゲストOS内から、scpを使用します ファイルを前後にコピーします。

ホスト自体から内部のVMにのみアクセスする場合は問題ありません。ただし、ネットワーク内の他のリモートシステムからVMにアクセスすることはできません。

異なるIP範囲を使用しているため、つまり192.168.225.0/24 私の場合。他のリモートホストからVMにアクセスするには、ホストネットワーク上で実行され、ホストネットワーク上にある外部DHCPサーバーを使用するパブリックブリッジをセットアップする必要があります。

これを簡単に言えば、すべてのVMがホストシステムで使用されるのと同じIPシリーズを使用するようにします。

パブリックブリッジネットワークを設定する前に、 Netfilterを無効にする必要があります パフォーマンスとセキュリティ上の理由 。 Netfilterは現在、デフォルトでブリッジで有効になっています。

netfilterを無効にするには、/etc/sysctl.d/bridge.confというファイルを作成します

# vi /etc/sysctl.d/bridge.conf

次の行を追加します:

net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
net.bridge.bridge-nf-call-arptables=0

ファイルを保存して閉じます。

次に、/etc/udev/rules.d/99-bridge.rules

# vi /etc/udev/rules.d/99-bridge.rules

次の行を追加します:

ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"

これにより、システム起動の適切な場所でブリッジのnetfilterを無効にするために必要なフラグが設定されます。ファイルを保存して閉じます。 システムを再起動します これらの変更を有効にします。

次に、KVMがそれ自体のためにインストールしたデフォルトのネットワークを無効にする必要があります。

「iplink」コマンドを使用して、KVMのデフォルトのネットワークインターフェースの名前を見つけます。

# ip link

出力例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff

上記の出力にあるように、エントリvirbr0 およびvirbr0-nic KVMネットワークです。

次のコマンドを使用して、デフォルトのKVMネットワークを削除しましょう:

# virsh net-destroy default

出力例:

Network default destroyed

次のコマンドでデフォルトネットワークの定義を解除します:

# virsh net-undefine default

出力例:

Network default has been undefined

上記のコマンドが何らかの理由で機能しない場合は、次のコマンドを使用して、KVMのデフォルトネットワークを無効にしたり、定義を解除したりできます。

# ip link delete virbr0 type bridge
# ip link delete virbr0-nic

次に、ip linkを実行します virbr0かどうかをもう一度確認します およびvirbr0-nic インターフェイスは実際に削除されます:

# ip link

出力例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff

そうですね、KVMのデフォルトネットワークはなくなりました。

次に、新しいVMを作成するときに使用するKVMパブリックブリッジをセットアップしましょう。

br0という名前の新しいブリッジインターフェースを作成します nmcliを使用する コマンド:

# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0

ブリッジインターフェースのIPアドレスを設定します:

# nmcli connection modify br0 ipv4.addresses 192.168.225.53/24 ipv4.method manual

ブリッジインターフェースのゲートウェイを設定します:

# nmcli connection modify br0 ipv4.gateway 192.168.225.1

ブリッジインターフェイスのDNSを設定します:

# nmcli connection modify br0 ipv4.dns 192.168.225.1

次に、ネットワークインターフェイスカードの1つを取り外し、それをスレーブとしてブリッジに追加する必要があります。

サーバーにNICが1つしかなく、SSH経由でサーバーにアクセスしている場合、NICを削除すると接続が終了することに注意してください。サーバーのコンソールで次の手順を実行することをお勧めします。

たとえば、enp0s8を追加します ブリッジインターフェースbr0のスレーブとしてのインターフェース 。

ネットワークインターフェースを削除するにはenp0s8 、実行:

# nmcli connection del enp0s8

enp0s8を置き換えます 自分のネットワークカードを使用します。

注: ブリッジにワイヤレスネットワークインターフェイスカードを使用しないでください。ほとんどのワイヤレスインターレースはブリッジングをサポートしていません。シームレスな接続のために、常に有線ネットワークインターフェースを使用してください!

次に、enp0s8を追加します コマンドを使用してブリッジに移動します:

# nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0

ここでは、ブリッジネットワークインターフェースbr0 ホストのネットワークインターフェースenp0s8に接続されています 。ネットワークと一致する上記のネットワークインターフェースの名前を置き換えます。

ネットワークマネージャを再起動して、変更を有効にします。

# systemctl restart NetworkManager

可能であれば、システムを再起動することをお勧めします:

# reboot

サーバーにログインし、IPアドレスがブリッジインターフェイスに割り当てられているかどうかを確認します。

$ ip a

出力例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.53/24 brd 192.168.225.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 2409:4072:6084:198:df03:d9ed:62eb:df34/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::e8c8:e98b:7fef:5874/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

上記の出力にあるように、ブリッジネットワークインターフェイス br0 IPアドレス192.168.225.53が割り当てられています およびenp0s8 エントリにmaster br0が追加されました エントリ。これは、enp0s8を意味します 橋に属しています。

bridgeを使用することもできます ブリッジのステータスを表示するコマンド:

# bridge link show br0
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100

ブリッジインターフェイスの作成に成功し、アクティブになっています。最後にもう1つ行う必要があります。

このブリッジインターフェイスをデフォルトのインターフェイスとして使用するようにKVMを設定する必要があります。これを行うには、XMLを作成します host-bridge.xmlというファイル

# vi host-bridge.xml

次の行を追加します:

<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

次のコマンドを実行して、新しく作成されたブリッジを起動し、VMのデフォルトブリッジとして作成します。

# virsh net-define host-bridge.xml
# virsh net-start host-bridge
# virsh net-autostart host-bridge

ブリッジがアクティブであり、コマンドを使用して開始されているかどうかを確認します:

# virsh net-list --all

出力例:

Name          State    Autostart   Persistent
------------------------------------------------
 host-bridge   active   yes         yes

おめでとう! CentOS8ヘッドレスサーバーにKVMを正常にインストールして構成しました。

2。 KVMゲストマシンを作成および管理する

コマンドラインから、またはコックピットやVirt-managerなどのKVM管理ツールを使用して、VMを作成および管理できます。詳細については、次のガイドを参照してください。

  • Virshプログラムを使用してKVM仮想マシンを管理する方法
  • コックピットWebコンソールを使用してKVM仮想マシンを管理する
  • Virt-Managerを使用してKVM仮想マシンを管理する方法

3。仮想マシンのVirshコンソールアクセスを有効にする

KVMゲストを作成した後、SSH、VNCクライアント、Virt-viewer、Virt-manager、Cockpit Webコンソールなどを介してアクセスできます。ただし、virsh consoleを使用してアクセスすることはできませんでした。 指図。 「virshconsole」を使用してKVMゲストにアクセスするには、次のガイドを参照してください。

  • KVMゲストのVirshコンソールアクセスを有効にする方法

このブログの他のKVM関連ガイド

  • Ubuntu20.04ヘッドレスサーバーにKVMをインストールして構成する
  • OpenSUSETumbleweedにKVMをインストールして構成する
  • LinuxでQcow2イメージを使用してKVM仮想マシンを作成する
  • LinuxでVirtualboxVMをKVMVMに移行する方法
  • LinuxでKVM仮想マシンのUEFIサポートを有効にする
  • LinuxのKVMでネストされた仮想化を有効にする方法
  • LinuxでVirt-topを使用して仮想化システムの統計を表示する
  • KVM仮想マシンのIPアドレスを見つける方法
  • KVMゲスト仮想マシンの名前を変更する方法
  • Libguestfsを使用して仮想マシンのディスクイメージにアクセスして変更する
  • Virt-builderを使用して仮想マシンイメージをすばやく構築する
  • Virt-rescueを使用して仮想マシンをレスキューする方法
  • LinuxでKVM仮想マシンのディスクサイズを拡張する方法
  • KVMホストとゲストの間に共有フォルダーを設定する
  • KVMLibvirtのデフォルトのストレージプールの場所を変更する方法
  • [解決済み]ストレージファイルにアクセスできません、KVMLibvirtでアクセスが拒否されましたエラー
  • LinuxでKVM仮想マシンをエクスポートおよびインポートする方法

結論

このガイドでは、CentOS8サーバーエディションにKVMをインストールして構成する方法について説明しました。

また、virshを使用してコマンドラインからKVM仮想マシンを作成および管理する方法についても説明しました。 ツールとCockpitおよびVirt-managerという名前のGUIツールを使用します。

最後に、KVM仮想マシンのvirshコンソールアクセスを有効にする方法を確認しました。

この段階では、CentOS8サーバーで完全に機能する仮想化環境が整っているはずです。


Cent OS
  1. CentOS 7 / RHEL 7にFTPサーバーをインストールして構成する–(vsftpfd)

  2. CentOS8にGitlabをインストールして構成する方法

  3. Centos8にPostgres13をインストールして設定する方法

  1. RHEL 8 / CentOS8LinuxにHAProxyをインストールして構成する

  2. CentOS7にVNCをインストールして設定する方法

  3. CentOS8にNFSサーバーをインストールして構成する方法

  1. CentOS8にVNCをインストールして設定する方法

  2. CentOS7およびRHEL7にVNCサーバーをインストールして構成する

  3. CentOS7サーバーにFreeIPAをインストールして構成する方法