記事のディレクトリ
1.仮想化テクノロジー
仮想化テクノロジーを使用してコンピューターを複数の論理コンピューターに仮想化し、1台のコンピューターで複数の論理コンピューターを同時に実行できるようにします。各論理コンピューターは異なるオペレーティングシステムを実行でき、アプリケーションプログラムは独立したスペースで実行でき、相互に影響を与えないため、改善されます。コンピューターの効率
2、仮想化タイプ
- 完全仮想化:すべての物理ハードウェアリソースはソフトウェアによって抽象化され、最終的に呼び出されます。
適用可能な方法:ハイパーバイザー(VMM)ソフトウェアを適用します。その原則は、基盤となるハードウェアとサーバーの間に抽象化レイヤーを確立することです。コアベースの仮想マシンは、Linuxシステム用のオープンソースハイパーバイザー(VMM)であり、CPU命令をキャプチャし、ハードウェアコントローラーおよび周辺機器にアクセスするための命令の仲介役として機能します。 - 準仮想化:オペレーティングシステムを変更する必要があります
- 使って:物理ハードウェアリソースを直接使用します(サポートが必要ですが、まだ完全ではありません)
3つ、仮想化機能
1、利点
- 一元管理(リモート管理、メンテナンス)
- ハードウェア使用率を改善します(物理リソースの使用率はピークに達し、仮想化は「アイドル」容量を解決します)
- マシン/リソース構成の動的調整(仮想化システムのアプリケーションとサービスハードウェアの分離により柔軟性が向上します)
- 高い信頼性(追加の機能とソリューションを展開して、透過的な負荷分散、移行、リカバリレプリケーションなどのアプリケーション環境を改善できます)
2、不利益
- 高い初期費用(初期ハードウェアサポート)
- ハードウェアの使用率を削減します(特定のシナリオでは、リソースを非常に消費するアプリケーションは必ずしも仮想化に適しているとは限りません)
- エラーの影響範囲が大きくなります(ローカルの物理マシンがダウンすると、仮想マシンが使用できなくなる可能性があり、同時に、仮想マシン内のすべてのファイルが破損する可能性があります)
- 複雑な実装構成と複雑な管理(管理者の運用と保守およびトラブルシューティングの難しさ)
- 特定の制限(仮想化テクノロジーにはさまざまな制限があり、仮想化をサポート/互換性のあるサーバー、アプリケーション、ベンダーと組み合わせて使用する必要があります)セキュリティ(仮想化テクノロジー自体のセキュリティリスク)
4、KVMの紹介
-
一般化されたKVM
KVM(カーネルベースのVritual Machine)-カーネルベースの仮想マシン
KVMは、仮想化X86ハードウェアに基づくオープンソースのLinuxネイティブ完全仮想化ソリューションです(Intel-VT-xまたはAMD-VをサポートするにはCPUが必要です)
カーネルモジュールに組み込まれたKVM 、プロセッサとメモリは、
仮想マシンの操作をサポートするようにシミュレートされます。仮想マシンは、標準のLinuxスケジューラによってスケジュールされた通常のLinuxプロセスとして実装されます。仮想マシンの
各仮想CPUは、通常のLinuxプロセスとして実装されます。 。これにより、KMVはLinuxカーネルの既存の機能を使用できます
が、KVM自体はシミュレーションを実行しません。/ dev / kvm(この仮想デバイスはハードウェア支援仮想化をオンにする必要があります)インターフェースを介してクライアント仮想サーバーのアドレススペースを設定するには、クライアントスペースプログラム(仮想マシン)が必要
であり、Qemuシミュレーションによってスケジュールされます/ O(ioctl)リソースおよびメンテナンス管理
Libvit:KVM管理ツール。KVMなどのVMMの管理に加えて、Xen、VirtualBox、さらにはOpenStackの最下層も管理でき
ます。Libvirtには、バックグラウンドデーモンプログラムlibvirtdの3つのコンポーネントが含まれています。 APIライブラリ、コマンドライン私はvirshを持っています -
KVM仮想化アーキテクチャと3つのモード
1.ゲストモード(guestOS):VM内のOSは、GuestOS
ゲストがオペレーティングシステムで実行されるモードです。ゲストはカーネルモードとユーザーモードに分けられます
。2。ユーザーモード:
ユーザーに次のユーザースペースツールを提供します。仮想マシンの管理とユーザーに代わってI / Oを実行し、Qemuはこのモードで動作します(Qemuの主な機能)3。Linux
カーネルモード
CPUとメモリをシミュレートし、クライアントモードの切り替えを実現し、クライアントモードの起動を処理し、KVMこのモードで実行されます -
KVMの原則
1.ゲスト:CPU(vCPU)、メモリ、およびドライバー(コンソール、ネットワークカード、I / Oデバイスドライバーなど)を含むゲストシステムは、
KVMによって制限付きCPUモードで実行されます。
2. KVMカーネルモジュールは、仮想マシンの操作をサポートするためにプロセッサとメモリをシミュレートし
ます。3.Qemuは主にI / Oを処理し、
デバイス入力専用の仮想マシン管理ioctl(定義)用のユーザースペース/ dev / kvmツールlibvirtを顧客に提供します。出力オペレーティングシステムは
libvirtを呼び出します:KVM管理ツール
上記は完全な仮想化プラットフォームを構成します
簡単な理解:
KVMドライバーはプロセッサー、メモリ仮想化、およびゲストI / Oインターセプトを提供しますゲストI / Oがインターセプトされた後、QemuQemuによって処理され
ますインターフェイスlibkvmを使用して仮想マシンデバイスインターフェイス/ dev / kvmを呼び出し(ioctl)、リソースの割り当て、管理、および仮想マシンの保守を行います -
KVMワークフロー
ユーザーモードのQemuは、インターフェイスlibkvmを使用して、ioctlシステムコールを介してカーネルモードに入ります。KVMドライバーは、仮想マシン用の仮想CPUと仮想メモリを作成し、VMLAU-NCH命令を実行してゲストモードに入り、ゲストOSをロードして実行します。ゲストOSの動作中に異常が発生した場合、ゲストOSの動作を一時停止し、現在の状態を保存し、カーネルモードを終了して異常を処理します。
カーネルモードがこれらの例外を処理するときに、V / Oが必要ない場合は、処理が完了した後でクライアントモードに再度入ります。V / Oが必要な場合は、ユーザーモードに入り、QemuがI / Oを処理します。処理が完了したら、カーネルモードに入り、クライアントモードに入ります。
5、KVMホストの展開
1.実験環境
CPU:デュアルコアデュアルスレッドCPU仮想化対応
メモリ:8G
ハードディスク:300G
ネットワークカード:シングルネットワークカード
オペレーティングシステム:Centos 7.6(1810)
1.
最初に新しい仮想マシンを作成します。2。実験環境
1.ホスト名を変更します
[root@kvm ~]# hostnamectl set-hostname kvm
[root@kvm ~]# su
2.ミラーリングされたディスクを自動/永続的にマウントするように設定します
[root@kvm ~]# vim /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
[root@kvm ~]# mount -a
[root@kvm ~]# df -hT
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
3.環境の最適化
①DNS逆引き解決を設定する#DNSを逆引きするかどうか、クライアントがサーバーに接続する速度を上げるにはNOに設定する
[root @ kvm〜] #vim / etc / ssh / sshd_config #
DNSコメントを
キャンセルしてNOに変更するUseDNS no
4.ローカルのYUMウェアハウスを作成します
[root@kvm ~]# mkdir /abc
[root@kvm ~]# cd /etc/yum.repos.d/
[root@kvm yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@kvm yum.repos.d]# mkdir bak
[root@kvm yum.repos.d]# mv CentOS-* bak
[root@kvm yum.repos.d]# ls
bak
[root@kvm yum.repos.d]# vim local.repo
[local]
name=kvm
baseurl=file:///abc
gpgcheck=0
enabled=1
[root@kvm yum.repos.d]# yum clean all
[root@kvm yum.repos.d]# yum repolist
5.ファイアウォールとコア保護をオフにします
[root@kvm yum.repos.d]# systemctl stop firewalld
[root@kvm yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@kvm yum.repos.d]# setenforce 0
2、KVMをインストールします
① 安装KVM基本组件
# 安装 GNOME 桌面环境 如果装了图形界面可以不需要装
yum groupinstall -y "GNOME Desktop"
# KVM 模块
yum -y install qemu-kvm
# 安装KVM 调试工具,可不安装
yum -y install qemu-kvm-tools
# 构建虚拟机的命令行工具
yum -y install virt-install
# qemu 组件,创建磁盘、启动虚拟机等
yum -y install qemu-img
# 网络支持工具
yum -y install bridge-utils
# 虚拟机管理工具
yum -y install libvirt
# 图形界面管理虚拟机
yum -y install virt-manager
#以下是安装的内容
yum groupinstall -y "GNOME Desktop"
yum -y install qemu-kvm
yum -y install qemu-kvm-tools
yum -y install virt-install
yum -y install qemu-img
yum -y install bridge-utils
yum -y install libvirt
yum -y install virt-manager
CPUが仮想化をサポートしているかどうかを確認します
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
KVMモジュールがインストールされているかどうかを確認します
Lsmod:显示已载入的系统模块
[root@kvm ~]# lsmod | grep kvm
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
②起動インターフェースの表示モードを設定します
[root@kvm ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3、KVMネットワークをセットアップします
KVMネットワークの2つのモード:
①NAT:デフォルト設定では、データパケットはNATによってホストのインターフェイスを介して
送信されます。NATは外部ネットワークにはアクセスできますが、外部から仮想マシンネットワークにアクセスすることはできません
。②ブリッジ:このモードでは、仮想マシンが1つのように動作する独立したホストにもネットワークがあり、外部マシンは仮想マシンの内部に直接アクセスできますが、ネットワークカードのサポートが必要です(通常は有線ネットワークカードのサポート)。
使用Bridge网桥模式进行部署
[root@bdqn ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=aac61931-47a6-40e5-9511-68adf20e97c5
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.162.130
#PREFIX=24
#GATEWAY=192.168.162.2
BRIDGE=br0 #删除原先地址,设置为网桥模式,关联br0网卡
#ブリッジネットワークカードを作成および編集する
vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=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.162.130
NETMASK=255.255.255.0
GATEWAY=192.168.162.2
第4に、KVMの展開と管理
#KVMストレージとミラーリングデータ用のディレクトリを作成し、centos7ミラーをアップロードします
[root@kvm network-scripts]# mkdir -p /data_kvm/iso
[root@kvm network-scripts]# mkdir -p /data/_kvm/store
[root@kvm network-scripts]# mkdir /abc
[root@kvm network-scripts]# mount.cifs //192.168.162.1/LAMP-C7 /mnt
Password for root@//192.168.162.1/LAMP-C7:
[root@kvm network-scripts]# cd /abc
[root@kvm abc]# cp -p CentOS-7-x86_64-DVD-1806.iso /data_kvm/iso/
ビューミラー
[root@kvm abc]# ll /data_kvm/iso/
总用量 4481024
-rwxr-xr-x. 1 root root 4588568576 2月 20 2019 CentOS-7-x86_64-DVD-1810.iso
仮想システムマネージャーを使用して仮想マシンを管理します。
作成のアイデア:
①ストレージプールの作成(ISO、STORE)
②ストレージボリュームの追加
③仮想マシンの作成
[root@kvm kvmdata]# virt-manager
①ステップ1:ストレージプールを作成する
ダブルクリックしてQEMU / KVMを開きます-storage-add(プラス記号)-名前を入力します-forward-browse-otherlocations-computer-data_kvm-store-open-finish、同じものを使用しますミラーリングされたストレージプールを作成する方法。選択したフォルダーは/ data_kvm / isoです。
②ストレージボリュームを作成する
③仮想マシンを作成する仮想
システムマネージャーを開き、QEMU / KVMを右クリックして[新規]を選択します
ISOイメージの使用を選択します-作成したばかりのイメージのストレージプール内のイメージを参照して選択します-先に進みます
メモリとCPUを構成します-先に進みます
総括する:
1. KVMテクノロジーの概要テクノロジー
とは:仮想化
2. KVMテクノロジーポジショニング(実用的なアプリケーション)
ワークステーション、virtualbox
はハードウェアリソース/機器/オペレーティングシステムをシミュレートします
3. KVM仮想化テクノロジーのコア機能(原則)
QEMU(ユーザーレイヤーでの作業、ibkvmツールの制御(ツール機能、カーネル内のKVMの制御)による物理仮想化リソース
の呼び出し(物理仮想化リソースの呼び出し方法はioctl) 、仮想マシンの提供)
KVM(カーネル層での作業、物理ハードウェアリソースの仮想化/抽象化、Qemuコンポーネント呼び出しの提供)
4. KVMコアコンポーネント機能
QEMU
機能:I / O仮想化の制御、ハードウェアリソースの呼び出し
KVM
機能:仮想マシンにCPU、メモリ(ハードウェアリソース)仮想化を提供します