KVM仮想化の設定
[TOC]
仮想化:仮想化は少ない仮想ハードウェアリソースに実際のハードウェアリソースをシミュレートするために、CPU、メモリ、ハードディスクを意味します。仮想化のメリットは、ハードウェアリソースの使用を最大化することです。また、クラウドコンピューティングの基盤。次の図は、仮想モデルを示しています。
仮想化カテゴリ:
ソフトウェアレベル、すべてのハードウェアは、シミュレータで(QEMU)シミュレート
ハードウェアレベルでは、VMM(仮想マシンモニタ)を介して、ハードウェア上で稼働するオペレーティングシステム(のXenは、VMware [ESX、ワークステーション]、KVM、VirtualBoxの)の割り当ておよび管理は、良好なVMを確立します
オペレーティング・システム・レベル、共有するための仮想マシンのオペレーティングシステムとホストオペレーティングシステムでは、仮想マシンのうちの何千もの(OpenVZの)をシミュレートすることができます
準仮想化と完全仮想化
準仮想化:準仮想化、ホストとクライアントがホストの存在を認識し、オペレーティングシステムのカーネル、クライアントを変更する必要があり、2つのシステムが連携する必要があります。(Xen仮想化)、より良いパフォーマンスの準仮想化。
完全仮想化:完全仮想化クライアントは完全な仮想ハードウェアリソースを提供し、クライアントがホストの存在を知らない何らかの変更を加える必要はありません(KVMは完全仮想化に属し、VMwareは完全に仮想化されています)
XenとKVMを比較
1.仮想化をサポートしていないCPUをサポートしているかどうか、xenのをインストールすることができ、およびKVMのCPUは、仮想化の仕事をサポートしている必要があります
2.xenサポート準仮想化は、完全仮想化をサポートする、KVMは、唯一の完全な仮想化をサポート
3. Xenのインストール後、Xenのカーネルは、経営を引き継ぐために、元のシステムに置き換えられますが、Linuxカーネルの唯一のKVMモジュールは、カーネルは、まだ元の管理システムです
時間4.xenが以前KVMより発生した、KVMは、カーネルので、愛のカーネルを引き継いで、最も使用を受信する必要はありません。
5. Xenのアーキテクチャ、ハイパーバイザのXen上で実行しているハードウェア、およびシステム・リソースの仮想化、上位層ユーザの仮想マシン(VM)の仮想リソース割り当て、仮想マシン対応する顧客のVMによって実行オペレーティングシステム
VMwareは64の魏のKVM仮想化構成をcentos7
まず、実験の準備の前に
KVM仮想化は、CPUが仮想化をサポートして設定するには、私たちを必要とし、いくつかのマシンはサポートだけでなく、BIOSを開く必要があります。
私たちは、次のような構成があり、ホストとして仮想マシンを使用して作成しました
1.メモリ4G
2. 50Gのディスクがあります
3.仮想化をサポートするために仮想マシンを構成します
4.電源をオフにし、SELinuxのiptablesのルールを削除します
第二に、KVMをインストール
2.1、お使いのシステムで仮想化をサポートしているかどうかを確認
1
|
grepの-E 'VMX | SVM' / procの/ cpuinfoの
|
あなたが持っている場合は、コンテンツの出力がサポートされています。IntelのCPUはVMX、AMDのCPUをサポートSVMをサポートしています
2.2、KVMをインストール
インストールするとき、我々はまた、依存関係をインストールする必要があります
1
|
yumをvirt- *のkvm qemuの-IMGのlibvirt -yブリッジ-utilsのインストール
|
2.3、チェックKVMがロードされています
1
|
lsmodの|はgrepの平方メートル
|
- そうでない場合は、次の手順を実行する必要があります
modprobe kvm-intel
- そうでない場合、私たちはホストを再起動する必要があります
2.4、ネットワークカードを設定
(1)の構成ens33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
CD / etc / sysconfig / network-scriptsに/
CPのifcfg-eth0ののifcfg-BR0
次のように#編集のifcfg-ens33、構成があります
Vimののifcfg-ens33
TYPE =イーサネット
BOOTPROTO =静的
DEFROUTE =はい
PEERDNS =はい
PEERROUTES =はい
IPV4_FAILURE_FATAL =なし
IPV6INIT =はい
IPV6_AUTOCONF =はい
IPV6_DEFROUTE =はい
IPV6_PEERDNS =はい
IPV6_PEERROUTES =はい
IPV6_FAILURE_FATAL =なし
IPV6_ADDR_GEN_MODE =安定-プライバシー
NAME = ens33
DEVICE = ens33
ONBOOT = yesの
BRIDGE = BR0
|
- BRIDGEは、ブリッジ構成を表します
(2)設定BR0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
vimの/ etc / sysconfig / network-scriptsに/のifcfg-BR0
次のように#設定があります
TYPE = Bridgeの
BOOTPROTO =静的
DEFROUTE =はい
NAME = BR0
DEVICE = BR0
ONBOOT = yesの
IPADDR = 192.168.205.109
NETMASK = 255.255.255.0
GATEWAY = 192.168.205.2
DNS1 = 192.168.1.1
DNS 2 = 119.29.29.29
DNS3 = 192.168.2.1
PREFIX = 24
NM_CONTROLLED =はい
|
- 私たちは、ブリッジに設定されているタイプを入力する必要があります
(3)成功かどうかを確認するために
設定が完了した後にネットワークサービスを再起動する必要があります
1
2
|
systemctl再起動ネットワーク
ifconfigコマンド
|
2.5、にlibvirtdとmessagebusを開始
1
2
|
開始systemctlにlibvirtd
messagebusを開始systemctl
|
ネットワークインターフェイスの一覧を表示します
1
|
brctlショー
|
第三に、仮想マシンを作成
3.1、仮想マシンの格納ディレクトリを作成します
(1)システムディスク50Gをマウントします
1
2
|
mkfs.xfs -fは/ dev / sdbと
マウントは/ dev / sdbとは/ mnt /
|
(2)仮想マシンの格納ディレクトリを作成します
ディレクトリのパーティションを十分に大きくなければなりません
1
|
/ KVMます。mkdir / mntに
|
3.2、仮想マシンを作成
ローカルの画像ファイルを使用して3.2.1、
(1)まず、ホストにCDのファイルのCentOS-7をアップロード
(2)コマンドは、仮想マシンを作成するには
1
|
virt-install --name=test01 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=2 --os-type=linux --os-variant rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1611.iso --disk path=/mnt/kvm/test01.img,size=10 --bridge=br0 --graphics none --console pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
|
- –name,指定虚拟机的名字
- –memory,指定内存大小,maxmemory限制最大内存
- –vcpus,指定分配CPU数量,maxvcpus限制最大CPU数量
- –os-type,指定安装系统类型
- –os-variant,指定系统版本
- –location,指定安装介质地址,可以是网络地址,也可以是本地的绝对路径,这里为镜像文件路径
- –disk path,指定虚拟磁盘位置,size指定磁盘大小。默认创建的磁盘文件为qcow2格式。在centos6中默认创建的磁盘文件为raw格式,不能拍摄快照。可以进行先创建qcow2文件,示例:qemu-img create -f qcow2 -o preallocation=metadata /kvm/test001.img 10G; –disk path=/mnt/kvm/test002.qcow2,format=qcow2,size=10,bus=virtio
- –bridge,指定网络连接类型
- –graphics none,指定安装通过那种类型安装,我们不需要使用图形安装
- –console pty,指定控制台类型
- –extra-args,设定内核参数
(3)配置安装选项
- 1、设置语言
- 2、设置时间时区
- 3、设置安装源
- 4、设置安装方式(默认为最小化安装)
- 5、设置安装位置
- 6、kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务(默认不安装)
- 7、设置网卡
- 8、设置root密码
- 9、创建用户
- “q”为退出,”b”为开始安装,”r”为刷新配置
我们需要设置一下选项:
a.设置时区
1
|
"2"-"1"-"5"-"回车"-"62"
|
b.设置安装源
1
|
"3"-"2"-"c"
|
c.设置安装方式
1
|
"4"-"c"
|
d.设置安装位置
1
|
"5"-"c"-"c"-"c"
|
e.设置root密码
1
|
"8"-"输入passwd"-"再次输入passwd"-"yes"
|
- 会自动检测密码,如果太弱需要我们确认
f.设置ip,可也可以不设置,等安装完成后再设置
1
|
"7"-"2"-"1"-"输入ip"-"2"-"输入子网掩码"-"3"-"输入网关"-"6"-"输入DNS"-"7"-"8"-"c"-"c"
|
g.开始安装
1
|
"b"
|
-
安装时,可能安装源和安装方式还没有读取到。使用”r”刷新即可
-
经过等待后,系统会自动重启让我们登录系统。
3.2.2、使用网络安装
1
|
virt-install --name=test02 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=2 --os-type=linux --os-variant rhel7 --location=http://mirrors.163.com/centos/7/os/x86_64/ --disk path=/mnt/kvm/test02.img,size=10 --bridge=br0 --graphics none --console pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
|
- 将location修改为163的源即可,不过安装时超级慢,因为需要下载软件包。所以建议使用本地镜像文件安装
四、virsh常用操作
libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。链接:http://libvirt.org/,virsh是libvirt对应的shell命令。
(1)查看子机
1
|
virsh list --all
|
- –all,可以查看到未开启的子机
(2)开启子机
类似我们在VMware开启虚拟机
1
2
3
|
virsh start test01
#也可以开启后进入系统,使用ctrl+]可以回到宿主机
virsh start test01 --console
|
(3)关闭
类似我们在VMware关闭虚拟机
1
2
3
4
|
#需要在借助子机上的acpid服务
virsh shutdown test01
#不需要借助子机上的acpid服务,强制关闭子机
virsh destroy test01
|
(4)让子机随着宿主机开机自启动
在VMware中,我们还需要手动开启虚拟机。在kvm中,我们可以设置子机自启动
1
2
3
|
virsh autostart test01
#取消自启动
virsh autostart --disable test01
|
(5)删除子机
1
2
3
4
5
6
|
#我们需要先强制关闭子机
virsh destroy test01
#取消对子机的定义,会删除该子机的配置文件
virsh undefine test01
#如果要彻底删除,我们还需要删除虚拟磁盘文件
rm -rf /mnt/kvm/test01.qcow2
|
- 子机配置文件位置:/etc/libvirt/qemu/*.xml
(6)恢复子机
如果我们使用virsh undefine test01
误删除了子机,只要我们不删除子机配置文件,我们就可以恢复。
我们可以使用该配置文件创建新的子机
首先,我们拷贝其他子机的配置文件
1
|
virsh dumpxml test02 > /etc/libvirt/qemu/test01.xml
|
修改新的子机配置文件,修改UUID,修改source file=’/mnt/kvm/test01.qcow2’
重新定义子机
1
|
virsh define /etc/libvirt/qemu/test01.xml
|
现在就可以启动了
1
|
virsh start test01 --console
|
(7)挂起子机
1
|
virsh suspend test02
|
(8)恢复子机
1
2
|
#主要恢复的是挂起的主机
virsh resume test01
|
五、克隆虚拟机
(1)克隆命令
1
|
virt-clone --original test01 --name template --file /mnt/kvm/clone1.qcow2
|
- –original,指定克隆的源,源机器需要为关闭状态
- –name,指定克隆后的子机名称
- –file,指定克隆子机的虚拟磁盘文件位置
- 克隆完成后可以直接登录克隆虚拟机
virsh start template --console
六、快照管理
6.1、创建快照
(1)创建命令
1
2
|
virsh snapshot-create test02
virsh snapshot-create test02
|
- snapshot-create,后面跟要创建快照的虚拟机
- 快照文件存放位置为:
(2)创建快照的磁盘文件
在centos6中,默认创建的虚拟机磁盘文件为raw格式,我们可以使用以下命令查看磁盘文件格式
1
|
qemu-img info /mnt/kvm/test01.img
|
如果是raw格式的磁盘文件,我们可以执行以下命令修改为qcow2格式
1
2
|
qemu-img convert -f raw -O qcow2 /mnt/kvm/raw.img /mnt/kvm/raw.qcow2
#然后在修改子机配置文件中的type=qcow2
|
(3)列出快照
1
|
virsh snapshot-list test02
|
- snapshot-list,后面跟子机名称
6.2、恢复和删除快照
(1)恢复快照
恢复快照的前提是子机需要关闭
1
2
|
virsh destroy test02
virsh snapshot-revert test02 1510234604
|
- snapshot-revert,后面跟快照名称,即列表中的那一行数字
(2)删除快照
1
|
virsh snapshot-delete test02 1510234894
|
- 后面跟子机,还有要删除的快照名称
七、磁盘扩容
centos6创建快照后无法扩容
针对子机test01扩容
(1)查看现有磁盘容量
可以使用查询磁盘信息命令查询
1
|
qemu-img info /mnt/kvm/test01.qcow2
|
(2)增加磁盘容量
1
|
qemu-img resize /mnt/kvm/test01.qcow2 +2G
|
(3)查看是否增加磁盘
1
2
3
4
|
#如果子机为running状态,我们需要重启一下
virsh destroy test01
virsh start test01 --console
fdisk -l
|
(3)挂载增加的磁盘空间
此时使用df -h
是无法看到增加的磁盘空间的,所以需要我们分区并格式化
1
2
|
fdisk /dev/vda
#增加一个新的分区/dev/vda3,容量为我们添加的2G
|
添加完成后,需要我们将这个/dev/vd3添加到vm里面去
如果/dev/vda3不存在,需要我们重启一下系统
1
2
|
ls /dev/vda3
reboot
|
创建物理卷
1
|
pvcreate /dev/vda3
|
列出物理卷
1
|
pvs
|
- cl为卷组
将/dev/vda3加入卷组cl
1
|
vgextend cl /dev/vda3
|
查看卷组cl
- 还有2G剩余
查看逻辑卷
1
|
lvs
|
将/dev/vda3的容量加入到root中
1
|
lvextend -l +100%FREE /dev/cl/root
|
重新获得逻辑卷分区大小
1
|
xfs_growfs /dev/cl/root
|
- centos6使用resize2fs
八、增加磁盘
(1)创建磁盘
1
|
qemu-img create -f qcow2 /mnt/kvm/test01_2.img 5G
|
(2)关闭虚拟机
1
|
virsh destroy test01
|
(3)编辑test01配置文件
1
2
3
4
5
6
7
8
|
virsh edit test01
#在原来的disk配置下增加以下配置
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/kvm/test01_2.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
|
- dev需要与之前的不同,使用”vdb”
(4)启动虚拟机进行操作
1
2
|
virsh star tets01 --console
fdisk -l
|
九、调整CPU内存,网卡
查看子机的硬件信息
1
|
virsh dominfo test01
|
9.1、调整CPU
编辑子机配置文件
1
2
3
|
virsh edit test01
#找到vcpu,修改数量
|
- 1表示当前CPU数,2表示最大CPU数
- 如果我们设置的CPU大于最大CPU数,会报错
重新启动子机,使配置生效
1
2
|
virsh destroy test01
virsh start test01
|
9.2、调整内存
1
2
3
|
virsh edit test01
#找到currentMemory
|
重新启动子机,使配置生效
1
2
|
virsh destroy test01
virsh start test01
|
9.3、添加网卡
查看子机网卡
1
|
virsh domiflist test01
|
增加子机网卡
这种方法适合自己是running状态,并且为在线增加
1
|
virsh attach-interface test01 --type bridge --source br0
|
此时只存在于内存中,配置文件里添加了相关配置,但是我么已重启自己就没有了,所以我们只需要再执行以下命令即可
1
|
virsh dumpxml test01 >/etc/libvirt/qemu/test01.xml
|
也可以在子机不是running状态,我们修改自己配置文件添加网卡
十、kvm虚拟主机迁移
(1)确认配置文件和磁盘文件位置
该方式需要确保虚拟机是关机状态
1
2
3
4
5
|
virsh shutdown test01
#备份配置文件
virshをdumpxml TEST01> /etc/libvirt/qemu/test001.xml
#は、仮想マシンのディスクの場所を見ます
virshをdomblklist TEST01
|
(2)同期の設定およびディスクファイル
リモートマシンへのディスク構成ファイルとファイルの同期
1
2
|
rsyncの-of /mnt/kvm/test01.* [email protected]:/データ/平方メートル
rsyncの-av /etc/libvirt/qemu/test001.xml [email protected]:/etc/libvirt/qemu/test001.xml
|
それがローカルに同期されている場合は、同期はまた、次のことを行うために私たちを必要とし
1
|
rsyncの-of /mnt/kvm/test01.* /データ/平方メートル/
|
1
2
3
4
|
Vimの/etc/libvirt/qemu/test001.xml
レビュー#<名前> </名前>
#修正UUID
#ディスクパスが/data/kvm/test01.qcow2,/data/kvm/test01_2.imgされる変更
|
使用virsh list --all
test001表示します