記事ディレクトリ
1.仮想化テクノロジー(KVM)とは何ですか?
- KVM(カーネルベースの仮想マシン)は仮想化テクノロジーとも呼ばれます。仮想化テクノロジーにより、コンピューターは複数の論理コンピューターに変換されます。1台のコンピューターで、同僚が複数の論理コンピューターを実行し、各論理コンピューターが異なるオペレーティングシステムを実行できます。 、アプリケーションプログラムは、相互に影響を与えることなく相互に独立したスペースで実行できるため、コンピュータの作業効率が向上します。
1.1KVMテクノロジーの特定の役割
- 1. 1つのオペレーティングシステム(win10)で複数のオペレーティングシステム(centos、win10、suse)をシミュレートし、各オペレーティングシステムで異なるサービス(nginx + tomcat ...)を実行できるため、クラスターを構築するためのホストを実現できます(全体から)
- 2.ソフトウェア/アプリケーションを介して物理ハードウェアの機能を実現します。次に例を示します。
- enspなど
2.KVM技術開発
プロトタイプ
-
1961年、IBM 709マシンは、CPU使用率を複数の極端なタイムスライス(1/100秒)に分割するタイムシェアリングシステムを実装しました。各タイムスライスは異なるタスクを実行しました。これらのタイムスライスをポーリングすることにより、CPUは複数のCPUになりすます
-
1972年、IBMはsystem370マシンのタイムシェアリングシステムを仮想マシンとして正式に命名しました
-
1990年に、IBMによって導入されたシステム390マシンは、論理パーティショニングをサポートします(CPUは、互いに独立した複数の部分に分割されます。つまり、論理パーティショニングです)。
-
Xenは、ホストを制御し、複数のクライアントにリソースを割り当てることができる外部ハイパーバイザー/ VMMプログラム(仮想マシン管理プログラム)として2003年に登場しました。
-
KVM:2007年にリリースされ、現在はカーネルカーネルに組み込まれています
-
Xenがサポートする仮想化テクノロジー:完全仮想化、準仮想化
-
KVMでサポートされる仮想化テクノロジー:完全な仮想化
2.1仮想化の種類
1.完全な仮想化
-
すべての物理ハードウェアリソースはソフトウェアによって抽象化され、最終的に呼び出されます
(物理リソースを仮想化リソースに変換する) -
使用方法:ハイパーライザー(VMM)ソフトウェアを使用する場合、原則は基盤となるハードウェアとサーバーの間に抽象化レイヤーを確立することです。コアベースの仮想マシンは、CPU命令をキャプチャできるLinuxシステム用のオープンソース製品ハイパーバイザー(VMM)です。ハードウェアコントローラーおよび周辺機器にアクセスするための指示の仲介役として機能します。
-
物理リソースのすべての機能はソフトウェアの形で実現され、物理リソースは単一の物理リソースの使用率を向上させるために分割または分割されます
2.準仮想化
- オペレーティングシステムとハードウェアサポートを変更して、そのパフォーマンスと安定性を物理デバイスとより一致させる必要があります
- 仮想エンジン:ハードウェア支援をオンにする-----ソフトウェア仮想化機能
3.スルー
- 物理ハードウェアリソースを直接使用します(サポートが必要ですが、まだ完全ではありません)
-
技術的な構成の難しさ
-
カーネルレベルのサポートが必要です。チップレベルのセットを設定すると、基盤となる物理リソースを直接使用して仮想マシンを提供すると同時に、論理的な分割を実行できます。
-
基盤となる物理ハードウェアサポート、基盤となるアーキテクチャリソースを直接呼び出し、仮想マシンを提供します
-
3つ、KVMランタイムの3つのモード
-
クライアントモード:オペレーティングシステム内のクライアントのモードとして簡単に理解できます。さらに、クライアントモードもカーネルモードとユーザーモードに分けられます。
-
ユーザーモード:仮想マシン管理用のユーザースペースツールをユーザーに提供し、ユーザーに代わってI / Oを実行します。Qemuはこのモードで実行されます。
-
カーネルモード:CPUとメモリをシミュレートし、クライアントモードの切り替えを実現し、クライアントモードからの終了を処理します。KVMカーネルモードはこのモードで実行されます
-
4、KVMの動作原理
- ユーザーモードのQemuは、インターフェイスlibkvmを使用して、ioctlシステム呼び出しを介してカーネルモードに入ります。KVMDriverは、仮想マシンの仮想CPUと仮想メモリを作成し、VMLAU NCH命令を実行してゲストモードに入り、ゲストOSの操作中に割り込みが送信された場合は、ゲストOSをロードして実行します。シャドウページの障害やその他の例外により、ゲストOSの操作が一時停止され、現在のコンテキストが保存されます。これらの例外を処理するには、カーネルモードに戻ります。I/ Oが不要な場合にカーネルモードでこれらの例外が処理される場合は、I / Oが必要な場合は、処理後にゲストモードに再度入ります。 Oはユーザーモードに入り、QemuはI / Oを処理し、処理が完了した後にカーネルモードに入り、クライアントモードに入ります。
5、KVM機能
5.1利点
- 1.集中管理(リモート管理、メンテナンス)
- 2.ハードウェア使用率を改善します(物理リソースの使用率が低い-ピークなど、仮想化は「アイドル」容量を解決します)
- 3.マシン/リソース構成の動的調整(仮想化により、システムのアプリケーションプログラムとサービスハードウェアが分離され、柔軟性が向上します)
- 4.高い信頼性(透過的な負荷分散、移行、リカバリレプリケーションなどのアプリケーション環境を改善するために追加の機能とソリューションを展開できます)
5.2デメリット
- 1.高い初期コスト(初期ハードウェアサポート)
- 2.ハードウェア使用率を削減します(特定のシナリオ-たとえば、四半期ごとにリソースを消費するアプリケーションは仮想化に適していない場合があります)
- 3.エラーの影響範囲が大きくなります(ローカルの物理マシンがダウンすると、仮想マシンが使用できなくなり、仮想マシン内のすべてのファイルが損傷する可能性があります)
- 4.構成の複製と複雑な管理の実装(運用と保守の難しさ、および管理担当者のトラブルシューティング)
- 5.特定の制限(仮想化テクノロジにはさまざまな制限があり、仮想化をサポート/互換性のあるサーバー、アプリケーション、およびベンダーと組み合わせて使用する必要があります)
- 6.セキュリティ(仮想化テクノロジー自体のセキュリティリスク)
6.仮想化前後の比較
6.1仮想化の前
- 1.各ホストにはオペレーティングシステムがあります
- 2.ソフトウェアとハードウェアの緊密な統合
- 3.同じホストで複数のアプリケーションを実行すると、通常、競合が発生します
- 4.システムリソースの使用率が低い(例:5%)
- 5.ハードウェアのコストが高く、柔軟性が不十分
6.2仮想化後
- 1.オペレーティングシステムとハードウェアの相互依存性を断ち切る
- 2.仮想マシンにカプセル化されたテクノロジーにより、管理オペレーティングシステムとアプリケーションプログラムは単一の個人になります
- 3.強力な安全性と障害分離
- 4.仮想マシンはハードウェアから独立しており、任意のハードウェアで実行できます
7、KVM仮想化プラットフォームの実用化
7.1トポロジー図
7.2仮想マシンのリソース環境
まずVMwareソフトウェアをインストールし、CentOS7システムをインストールしてから、仮想マシンのリソース環境を設定し、
最初に仮想マシンを閉じ、仮想マシンのメモリを設定するなどして、KVM仮想化機能を確認すると、ネットワークカードがNATモードを選択します。
CPU:デュアルコアデュアルスレッドCPU仮想化対応
メモリ:8G
ハードディスク:300G
デュアルネットワークカード:シングルネットワークカード
オペレーティングシステム:Centos 7.61
。ファイアウォールの最適化
[root@kvm yum.repos.d]# systemctl stop firewalld.service
[root@kvm yum.repos.d]# systemctl disable firewalld.service
[root@kvm yum.repos.d]# setenforce 0
[root@kvm yum.repos.d]# vim /etc/selinux/config
SELINUX=disabled ' #将enforcing修改为disabled
2.ミラーリングされたディスクを自動的にマウントするように設定します
[root@kvm ~]# vim /etc/fstab
/dev/sr0 /mnt iso9660 defaults 0 0 #尾行添加
3.sshを最適化します
[root@kvm ~]# vim /etc/ssh/sshd_config
UseDNS no #取消注释,并将yes改成no
4.Yumローカル倉庫建設
[root@kvm ~]# cd /etc/yum.repos.d/
[root@kvm yum.repos.d]# mkdir backup
[root@kvm yum.repos.d]# mv * backup
[root@kvm yum.repos.d]# ls
backup local.repo
[root@kvm yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@kvm yum.repos.d]# yum clean all #清空yum仓库
[root@kvm yum.repos.d]# mount /dev/sr0 /mnt #因为没有重启,所以需要手动挂载一下光盘镜像
[root@kvm yum.repos.d]# yum makecache #加载yum数据
5.最適化が完了したら、システムを再起動します
[root@kvm ~]# reboot
7.3KVMのインストール
1.ソフトウェアパッケージをインストールします
[root@kvm ~]# yum groupinstall -y "GNOME Desktop" #安装 GNOME 桌面环境 如果装了图形界面不需要装了
[root@kvm ~]# yum -y install qemu-kvm #安装KVM 模块
[root@kvm ~]# yum -y install qemu-kvm-tools # KVM 调试工具,可不安装
[root@kvm ~]# yum -y install virt-install #构建虚拟机的命令行工具'
[root@kvm ~]# yum -y install qemu-img #qemu 组件,创建磁盘、 启动虚拟机等
[root@kvm ~]#yum -y install bridge-utils #网络支持工具
[root@kvm ~]# yum -y install libvirt #虚拟机管理工具
[root@kvm ~]#yum -y install virt-manager #图形界面管理虚拟机
[root@kvm ~]#reboot #重启
2.CPUが仮想化をサポートしているかどうかを検出します
[root@kvm ~]# cat /proc/cpuinfo | grep vmx
3.KVMモジュールがインストールされているかどうかを確認します
[root@kvm ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
4.起動インターフェイスの表示モードを設定します
[root@kvm ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
#将 系 统 的 默 认 运 行 target 更 改 为graphical.targe。 重启后系统将进入图形化界面。
[root@kvm ~]# systemctl start libvirtd 开启服务
[root@kvm ~]# systemctl enable libvirtd 自启动
7.4KVMネットワークのセットアップ
-
ホストサーバーにKVMをインストールした後、最初にネットワークを設定する必要があります。libvirtでKVMネットワークを実行するに
は、NATとブリッジの2つの方法があります。デフォルトはNATです。-
1.ユーザーモード、つまりNATモード。このモードはデフォルトのネットワーク設定です。データパケットは、外部ネットワークにアクセスできますが、外部から仮想マシンネットワークにアクセスできないNATモードによってホストのインターフェイスを介して送信されます。
-
2.ネットワークブリッジ、ブリッジモード、このモードでは、仮想マシンが独立したホストのようなネットワークを持つことができます。外部マシンは仮想マシンの内部に直接アクセスできますが、ネットワークカードのサポート(通常は有線ネットワークカードのサポート)が必要です。
-
1.ens33ネットワークカードを設定および変更します
[root@kvm ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
#注释ip地址,子网掩码,网管,bns
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e5cd1414-3df7-4052-864a-d561e7b3a836
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.1.10
#NETMASK=255.255.255.0
#GATEWAY=192.168.1.2
#DNS=192.168.1.2
BRIDGE=br0
2. br0ネットワークカードを設定および変更します(ブリッジモード)
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 #配置桥接网卡
TYPE=Bridge
OTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
[root@kvm~]# systemctl restart network #重启网卡
注:ここでネットワークカード構成を構成した後、ネットワークカードを再起動し、エラーを報告しました。LSBの開始に失敗しました:ネットワークの起動/停止、リンクを参照できます:LSBの開始に失敗しました:ネットワークソリューションの起動/停止。これは文書化されたソリューションです。
7.5KVMの展開と管理
KVMストレージとミラーデータ用のディレクトリを作成し、centos7ミラーをアップロードします
[root@kvm ~]# mkdir -p /data_kvm/iso 创建镜像文件存储文件
[root@kvm ~]# mkdir -p /data_kvm/store 创建虚拟机存储
[root@kvm ~]# cp CentOS-7-x86_64-DVD-1708.iso /data_kvm/iso/
[root@kvm ~]# ls /data_kvm/iso/
CentOS-7-x86_64-DVD-1708.iso
1.仮想マシンで仮想システムマネージャーを開きます
[root@kvm ~]# virt-manager
2.仮想マネージャーを使用して仮想マシンを管理および作成します
セットアッププロセスを作成します。
1.创建存储池(ISO、STORE)
2.添加存储卷
3.创建虚拟机
ストレージプールツリーの作成
ダブルクリックしてQEMU / KVMを開きます->ストレージ->プラス記号(+)->名前を入力->転送->参照->その他の場所->コンピューター->データ_kvm--ストア->開く->
ダブルクリックしてQEMIを開きます/ KVM
は、同じ方法でストレージプールを作成します。Apple
は/ data_kvm / isoフォルダーを選択し、
ストレージボリューム
を作成し
、作成するツリーストレージプールを選択します。つまり、/ data_kvm / storeフォルダーを選択
し、仮想マシンを作成し、
QEMU / KVM-New-forwardを右クリックして、
data / kvm /を選択します。 isoのストレージプールappleのイメージ
メモリとCPUサイズを
構成します
ツリーストレージプールの仮想マシンストレージボリュームを構成します
/data_kvm/store/tree.qcow2を
選択しますネットワークモードを選択して(ブリッジ)
インストールを開始します
注:ここにいますCentOS7のインストールを開始したときに、キーボードが使用または移動できないという問題が発生しました。次の項目を参照してください。KVMグラフィカル管理を使用して仮想マシンをインストールすると、キーボードを使用できません。
8.まとめ
-
VMMは、複数の効率的で分離されたプログラム環境(仮想マシン)を維持できると同時に、コンピューターシステムの実際のリソースを管理し、仮想マシンにポートを提供できるシステムソフトウェアです。
-
KVM仮想化テクノロジーを使用すると、ハードウェアの使用率が大幅に向上します。複数の仮想マシンの集中管理、簡単なメンテナンス