KVM の紹介 Kernel-based Virtual Machine の略称は、Linux 2.6.20 以降のすべての主要な Linux ディストリビューションに統合されているオープン ソース システム仮想化モジュールです。 KVM 仮想化には、ハードウェア サポート (Intel VT テクノロジーや AMD V テクノロジーなど) が必要です。ハードウェアに基づいて完全に仮想化されています。 仮想化はクラウド コンピューティングの基盤です。仮想化により、1 台の物理サーバー上で複数の仮想マシンを実行できるようになります。仮想マシンは物理マシンの CPU、メモリ、および IO ハードウェア リソースを共有しますが、論理的には仮想マシンは互いに分離されています。 一般的に物理マシンはホストマシン(ホスト)と呼ばれ、ホストマシン上の仮想マシンはクライアントマシン(ゲスト)と呼ばれます。 [[269100]] 仮想化の分類 仮想化には、タイプ 1 仮想化とタイプ 2 仮想化の 2 種類があります。 タイプ 1 仮想化 ハイパーバイザーは物理マシンに直接インストールされ、複数の仮想マシンがハイパーバイザー上で実行されます。ハイパーバイザーの実装は通常、特別にカスタマイズされた Linux システムです。 Xen と VMWare の ESXi はどちらもこのタイプに属します。 タイプ 2 仮想化 まず、Redhat、Ubuntu、Windows などの通常のオペレーティング システムを物理マシンにインストールします。ハイパーバイザーは OS 上のプログラム モジュールとして実行され、仮想マシンを管理します。 KVM、VirtualBox、VMWare Workstation はすべてこのタイプに属します。 理論上は: タイプ 1 仮想化は一般にハードウェア仮想化機能を最適化し、タイプ 2 よりもパフォーマンスが高くなります。 タイプ 2 仮想化は、共通のオペレーティング システムに基づいているため、ネストされた仮想マシンをサポートするなど、より柔軟です。ネストとは、KVM 仮想マシン内で KVM を実行できることを意味します。 KVM を展開する 環境の準備 仮想化を有効にするには確認します - [root@ken ~]# grep -E "(vmx)|(svm)" /proc/cpuinfo
- フラグ: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid aperfmperf earlyfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap xsaveopt clzero irperf xsaveerptr ibpb arat nptsvm_lock nrip_save vmcb_clean flushbyasid デコードアシスト
ステップ1: 関連するソフトウェアをダウンロードする - [root@ken ~]# yum install libvirt virt-install qemu-kvm -y
libvirt: KVM 管理ツール。 Libvirtは、バックグラウンドデーモンプログラムlibvirtd、APIライブラリ、コマンドラインツールvirshの3つで構成されています。 qemu-kvm: CPU、メモリ、IO 仮想化機能を提供する KVM および QEMU コア パッケージ virt-install は、仮想マシンを作成し、libvrit API をサポートする KVM、Xen、またはその他のハイパーバイザーのゲスト OS のインストールを完了できるコマンドライン ツールです。 ステップ2: libvirtを起動する - [root@ken ~]# systemctl libvirtdを再起動します
ステップ3: ディスクを作成する - [root@ken ~]# qemu-img create -f raw /ken/centos7-x86_64.raw 10G
- '/ken/centos7-x86_64.raw'をフォーマットしています、fmt=rawサイズ=10737418240
ステップ4: 仮想マシンを作成する - [root@ken ~]# virt-install
注: 画像を/tmpディレクトリまたは他のディレクトリにアップロードする必要があります。上記で指定してください。 ステップ5: VNCを使用して素早く接続する IPアドレス 仮想マシンのIPを入力してください システムのインストールを開始する カスタマイズされたシステム インストールを開始 ステップ6: 作成した仮想マシンを表示する [root@ken ~]# virsh list --all ID 名前 州 - Centos7-x86_64 をシャットダウン ステップ7: 仮想マシンを起動する - [root@ken ~]# virsh を起動 Centos7-x86_64
- ドメイン Centos7-x86_64 が開始されました
- [root@ken ~]# virsh list
- ID名前州
-
- 2台のCentos7-x86_64が稼働中
ステップ8: VNCを使用して再度接続する これで、作成した仮想マシンにログインできます。 ステップ9: SSH接続 ホストに接続する まず、新しく作成した仮想マシンのIPアドレスを確認します ホスト接続 - [root@ken ~]# ssh 192.168.122.198
- ホスト「192.168.122.198 (192.168.122.198) 」の信頼性を確立できません。
- ECDSAキーのフィンガープリントはSHA256:t+jpHwwHJk8mo2XZB93H9afhSVy7BCMvLsvqsUF+Obg です。
- ECDSAキーのフィンガープリントはMD5:48:d5:9e:db:f8:bb:5e:56:c1:c8:1d:a2:4b:45:d6:fc です。
- 本当によろしいですか? 接続を続行しますか(はい/いいえ)?はい
- 警告: '192.168.122.198' (ECDSA)が既知のホストのリストに永続的に追加されました。
- [email protected]のパスワード:
- 最終ログイン: 2019年3月18日月曜日 21:06:27
- [root@localhost ~]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 不明
- リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 スコープ ホスト lo
- valid_lft 永久に preferred_lft 永久に
- inet6 ::1/128 スコープホスト
- valid_lft 永久に preferred_lft 永久に
- 2: eth0: <BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
- リンク/イーサ 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff
- inet 192.168.122.198/24 brd 192.168.122.255 スコープグローバル 動的eth0
- 有効_lft 3510秒 推奨_lft 3510秒
- inet6 fe80::5054:ff:fe89:17d7/64 スコープ リンク
- valid_lft 永久に preferred_lft 永久に
仮想マシンへのログインとログアウト ***手順: 作成したKVM仮想マシンで次のコマンドを実行します [root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0" ステップ2: KVM仮想マシンを再起動する ステップ3: virshコンソールを使用して仮想マシンにログインする virsh console仮想マシン名を実行する - [root@ken ~]# virsh コンソール Centos7-x86_64
- ドメイン Centos7-x86_64に接続しました
- 逃げる キャラクター ^ ] #このステップでもう一度Enterキーを押します
- CentOS Linux 7 (コア)
- x86_64上のカーネル 3.10.0-327.el7.x86_64
- localhostログイン: root #ユーザーを入力
- パスワード: #パスワード
- 最終ログイン: 3月18日月曜日22:19:47 ttyS0
- [root@localhost ~]#
ステップ4: KVM仮想マシンを終了する これらの 2 つのキーの組み合わせを押すには、Ctrl キーを押しながら括弧の右側を押します: Ctrl+] - [root@ken ~]# virsh コンソール Centos7-x86_64
- ドメイン Centos7-x86_64に接続しました
- 逃げる キャラクター は^]
- CentOS Linux 7 (コア)
- x86_64上のカーネル 3.10.0-327.el7.x86_64
- ローカルホストログイン: root
- パスワード:
- 最終ログイン: 3月18日月曜日22:20:44 ttyS0
- [root@localhost ~]#
- [root@ken ~]#
仮想マシンのクローン作成 ステップ1: 仮想マシンをシャットダウンする - [root@ken ~]# virsh シャットダウン Centos7-x86_64
- ドメイン Centos7-x86_64 はシャットダウン中です
- [root@ken ~]# virsh list
- ID名前州
-
- - Centos7-x86_64 をシャットダウン
ステップ2: ディスクの場所を作成する - [root@ken ~]# mkdir /ken/img
ステップ3: virt-cloneを使用して新しい仮想マシンを複製する - [root@ken ~]# virt-clone -o Centos7-x86_64 -n centos7_test -f /ken/img/centos7_test.img
- 'centos7_test.img'を割り当てています| 10 GB 00:00:36
- クローン'centos7_test'が正常に作成されました。
ステップ4: 仮想マシンを確認する - [root@ken ~]# virsh list
- ID名前州
-
- - Centos7-x86_64 をシャットダウン
- -centos7_test をシャットオフ
ステップ5: 仮想マシンを起動する - [root@ken ~]# virsh start centos7_test
- ドメイン centos7_test を開始しました
- [root@ken ~]# virsh list
- ID名前州
-
- 3 centos7_test 実行中
ステップ6: 仮想マシンに入る - [root@ken ~]# virsh コンソール centos7_test
- ドメイン centos7_testに接続しました
- 逃げる キャラクター は^]
- CentOS Linux 7 (コア)
- x86_64上のカーネル 3.10.0-327.el7.x86_64
- ローカルホストログイン: root
- パスワード:
- 最終ログイン: 3月18日月曜日22:21:24 ttyS0
- [root@localhost ~]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 不明
- リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 スコープ ホスト lo
- valid_lft 永久に preferred_lft 永久に
- inet6 ::1/128 スコープホスト
- valid_lft 永久に preferred_lft 永久に
- 2: eth0: <BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
- リンク/イーサ 52:54:00:cc:69:f8 brd ff:ff:ff:ff:ff:ff
- inet 192.168.122.161/24 brd 192.168.122.255 スコープグローバル 動的eth0
- 有効_lft 3597秒 推奨_lft 3597秒
- inet6 fe80::5054:ff:fecc:69f8/64 スコープ リンク
- valid_lft 永久に preferred_lft 永久に
xshell 仮想マシンに接続する これで、物理ホストは KVM 仮想マシンに ping を実行できなくなります。 KVM と通信できるのはホストのみです。 ステップ1: スクリプトを作成して実行する - [root@ken ~]# cat bridg.sh
- #!/bin/bash
- brctl addbr br0 #ブリッジネットワークカードを作成する
- brctl addif br0 eth0 #eth0をbr0に追加
- ip a d 192.168.4.190/24 dev eth0 #eth0のIPアドレスを削除します
- ifconfig br0 192.168.4.190/24 up #br0ネットワークを開始
- ルート追加 default gw 192.168.4.1 #ゲートウェイを追加
ステップ2: ネットワークを確認する ステップ3: 外部ネットワーク接続をテストする - [root@ken ~]# www.baidu.com にpingを実行します
- PING www.a.shifen.com (119.75.217.26) 56(84) バイトのデータ。
- 119.75.217.26からの64 バイト (119.75.217.26): icmp_seq=1 ttl=54 time =6.08 ms
- 119.75.217.26からの64 バイト (119.75.217.26): icmp_seq=2 ttl=54 time =9.20 ms
- 119.75.217.26からの64 バイト (119.75.217.26): icmp_seq=3 ttl=54 time =8.58 ms
- ^C
-
- 送信パケット 3 個、受信パケット 3 個、パケット損失 0%、時間6020 ミリ秒
- rtt最小/平均/最大/ mdev = 6.087/7.957/9.201/1.346 ミリ秒
ステップ4: 仮想マシンを編集する 次の3箇所を変更するだけです - [root@ken ~]# virsh edit Centos7-x86_64
ステップ5: KVM仮想マシンを起動し、KVM仮想マシンに入ってネットワークカードを編集します。 物理ホストと同じネットワークセグメントにネットワークを構成する - [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
- TYPE = "イーサネット"
- BOOTPROTO = "静的"
- 名前= "eth0"
- デバイス = "eth0"
- ONBOOT = "はい"
- IPアドレス=192.168.4.165
- ネットマスク=255.255.255.0
- ゲートウェイ=192.168.4.1
- DNS1=8.8.8.8
- [root@localhost ~]# systemctl ネットワークを再起動します
ステップ6: xshellがKVM仮想マシンに接続する - 192.168.4.165:22に接続しています...
- 接続が確立されました。
- に 逃げる に ローカルシェルの場合は、 「Ctrl+Alt+]」を押します。
- 警告!リモート SSH サーバーが X11 転送要求を拒否しました。
- 最終ログイン: 2019年3月18日月曜日 23:33:21
- [root@localhost ~]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 不明
- リンク/ループバック 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 スコープ ホスト lo
- valid_lft 永久に preferred_lft 永久に
- inet6 ::1/128 スコープホスト
- valid_lft 永久に preferred_lft 永久に
- 2: eth0: <BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
- リンク/イーサ 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff
- inet 192.168.4.165/24 brd 192.168.4.255 スコープグローバルeth0
- valid_lft 永久に preferred_lft 永久に
- inet6 fe80::5054:ff:fe89:17d7/64 スコープ リンク
- valid_lft 永久に preferred_lft 永久に
|