本节所讲内容:
1.1 虚拟化产品对比介绍
1.2 安装 KVM 虚拟机
1.3 实戓 1:配置 KVM 网络桥接功能
1.4 实戓 2:使用 KVM 安装虚拟机
1.5 实戓 3:解决 centos6 下 shutdown 关丌了 KVM 虚拟机的问题
实验环境:
第四阶段以 centos7.4 为主
centos7.4 镜像下载: http://mirrors.163.com/centos/7.4.1708/isos/x86_64/ 注:安装系统时,把图形界面和开发工具安装好
1.1.1 虚拟化产品对比介绍
虚拟化技术
-vmware 支持仿真虚拟化
xen 半虚 REHL5 自带 xen, 安装时需要安装内核 rpm -ivh kernel-xen-xxx.rpm kvm 全虚拟化 RHEL6 自带 kvm
KVM 即 Kernel-based Virtual Machine 基亍内核的虚拟机。 KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。
它使用 Linux 自身的调度器进行管理,所以相相对于 Xen,其核心源码很少。KVM 目前已成为学术界的主 流 VMM(虚拟机监控器)之一。KVM 的虚拟化需要硬件支持(如 Intel VT 技术戒者 AMD V 技术)。是基于硬件的完全虚拟化。而 Xen 早期则是基于软件模拟的 Para-Virtualization。
1.2.1 开机后查看 CPU 是否支持全虚拟化
1、查看 CPU 是否支持硬件虚拟化技术。 CPU 要支持 例:
查看自己的 CPU 是否支持全虚拟化虚拟化技术且是 64 位的
Intel:cat /proc/cpuinfo | grep --color vmx
AMD :cat /proc/cpuinfo | grep --color svm
看看 flag 有没有上面的 vmx 戒者是 svm,有的话就是支持全虚拟化技术
[root@xuegod63 Desktop]# cat /proc/cpuinfo | grep --color vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
1.2.2 安装 KVM:
(1)安装 KVM 模块、管理工具和 libvirt,命令行安装:
[root@xuegod63 ~]#yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y
注:使用系统镜像,先配置好 yum 本地源
安装包
qemu-kvm : kvm 主程序, KVM 虚拟化模块 virt-manager: KVM 图形化管理工具
libvirt: 虚拟化服务
libguestfs-tools : 虚拟机的系统管理工具
virt-install : 安装虚拟机的实用工具 。比如 virt-clone 克隆工具就是这个包安装的
libvirt-python : python 调用 libvirt 虚拟化服务的 api 接口库文件
1.2.3 查看安装完KVM后的服务:
[root@xuegod63 ~]# systemctl start libvirtd
#开启虚拟化服务
[root@xuegod63 ~]# systemctl enable libvirtd
#设置 libvirtd 服务开机启劢
[root@xuegod63 ~]# systemctl is-enabled libvirtd
#查看是否是开机启劢 enabled
确定正确加载 kvm 模块
[root@xuegod63 ~]# lsmod | grep kvm kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
检查 KVM 模块是否成功安装
1.2.4 使用命令:virt-manager 建立虚拟机,
将 kvm 管理工具从英文界面,切换成中文界面:
[root@xuegod63 ~]# echo $LANG
en_US.UTF-8
[root@xuegod63 ~]# LANG='zh_CN.UTF-8'
[root@xuegod63 ~]# virt-manager
安装桥设备工具:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-9.el6.x86_64.rpm
把 eth0 绑到 br0 桥设备上:
[root@xuegod63 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod63 network-scripts]# cp ifcfg-ens33 /tmp/
#备份一下 eth0
[root@xuegod63 network-scripts]# vim ifcfg-ens33
#编辑配置文件为以下内容
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=c713acec-674b-411d-9e61-646482a292ca DEVICE=ens33
IPADDR=192.168.1.63 #这些蓝色内容接下来,需要删除 NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.106.46.151
ONBOOT=yes
IPV6_PRIVACY=no
PEERDNS=no
BRIDGE="br0" #在文件最后插入这一行
生成桥设备的配置文件:
[root@xuegod63 network-scripts]# vim ifcfg-br0
#创建 ifcfg-br0 文件,并写入以下内容
DEVICE="br0"
NM_CONTROLLED="yes" ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=none
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
注:TYPE="Bridge" , B要大写
[root@xuegod63 network-scripts]# service network restart
测试 br0:
root@xuegod63 network-scripts]# ifconfig
[root@xuegod63 network-scripts]# ping g.cn
PING g.cn (203.208.37.20) 56(84) bytes of data.
64 bytes from 203.208.37.20: icmp_seq=1 ttl=57 time=12.3 ms
查看桥接的信息:
[root@xuegod63 network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c290283db no ens33
virbr0 8000.525400183a62 yes virbr0-nic
1.4 实站 2:创建一台 KVM 虚拟机
1.4.1 创建一个分区,用于存放安装好的 Linux 操作系统:
[root@xuegod63 ~]# fdisk /dev/sdb
#创建 sdb1,大小 20G
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xe2316600.
Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
Command (m for help): n Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): Using default value 2610
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks.
格式化,挂载使用
[root@xuegod63 network-scripts]# mkfs.xfs /dev/sdb1
[root@xuegod63 network-scripts]#mount /dev/sdb1 /var/lib/libvirt/images/
#安装虚 拟机,默认存放的路径:
注:准备系统镜像:把 centos7.4 镜像上传到/var/lib/libvirt/images/目录下。
注:准备系统镜像:把 centos7.4 镜像上传到/var/lib/libvirt/images/目录下。
[root@xuegod63 ~]# virt-manager
1.4.3 KVM 虚拟机常用命令
[root@xuegod63 ~]# virsh list
#列出在运行的虚拟机
[root@xuegod63 ~]# virsh start centos7-71
# centos7-71 虚拟机 [root@xuegod63 ~]# virsh shutdown centos7-71 #关闭 centos7-71 虚拟机
[root@xuegod63 ~]# virsh autostart centos7-71
#设置 centos7-71 虚拟机为物理机开机 后,自劢启劢
测试:
reboot 后,没有发现 kvm 虚拟机开机启动。原因是什么? 解决:
[root@xuegod63 ~]# chkconfig --list libvirtd
#开机启动了 libvirtd 0:off 1:off 2:off 3:on 4:on5:on 6:off
[root@xuegod63 ~]# vim /etc/fstab
#记得设置开机自劢挂载 sdb1,然后开机启动开了虚 拟机
/dev/sdb1 /var/lib/libvirt/images xfs defaults 0 0
1.5 解决 centos6 系统上 shutdown 关丌了虚拟机的问题
了解一下这个坑。
1.5.1 实验环境准备:
1.5.2. 解决方法:
在安装好的 KVM 的 Linux 虚拟机中安装并启动 acpid 服务 virsh shutdown 命令使用发送 acpi 指令来控制虚拟机的电源,
而 kvm 虚拟机最小化安装的 centos6 系统时默认是没有安装 acpi 服务的,会处理 shutdown 发来的关机信号。 在 centos7 最小化安装的 linux 系统上有安装 acpid 服务。
只需要在虚拟机里安装和启劢 acpid 服务即可。 做一件事: 安装 acpid 服务 -》 yum 源
1、给 KVM 虚拟机配置个 IP 安装
配置网卡 IP 地址:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="52:54:00:95:89:DE"
IPADDR=192.168.1.71
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
NM_CONTROLLED="yes"
ONBOOT="yes"
[root@localhost ~]# service network restart
#启动网卡
在 xuegod63 上搭建一个基于 http 协议 yum 源服务
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# service httpd start
[root@xuegod63 ~]# mount /dev/cdrom /var/www/html/
配置 kvm 虚拟机 rhel6-71 的 yum 源
[root@xuegod63 ~]# ssh 192.168.1.71
[root@localhost ~ ]# cd /etc/yum.repos.d
[root@localhost ~ ]# vi rhel6.repo
# 写入以下内容 [rhel6]
name= rhel6 baseurl=http://192.168.1.63/
#baseurl=file:///mnt/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@localhost ~ ]#rm -rf rhel-source.repo
#删除多余的 yum 源配置文件
[root@localhost ~ ]# setenforce 0
#关闭 selinux
[root@localhost ~ ]#iptables -F
#关闭防火墙
在 kvm 虚拟机 rhel6-71 安装 acpid 服务
[root@localhost yum.repos.d]# yum install acpid -y
[root@localhost yum.repos.d]# service acpid start
//启动acpic 服务,
[root@localhost yum.repos.d]# chkconfig --list acpid
acpid 0:off 1:off 2:on 3:on4:on 5:on 6:off
//安装后默认会加入到开机 启劢的
在 xuegod63 KVM 真机上测试:
[root@xuegod63 ~]# virsh shutdown rhel6-71
#关闭 rhel6-71 虚拟机
本节所讱内容:
2.1 KVM 虚拟机克隆方法
2.2 虚拟机常用镜像格式对比
2.3 KVM 虚拟机快照功能使用方法
2.4 virsh 命令常见用法
2.5 KVM 常用镜像格式转换
2.1 KVM 虚拟机克隆方法
2.1.1 克隆 kvm 虚拟机 克隆前,centos7.0 需要提前关机。
语法:virt-clone -o 原虚拟机 -n 新虚拟机 -f 新虚拟机镜像存放路径
选项:-o old -n new
虚拟机镜像: 就是整个虚拟机文件。 不是操作系统光盘镜像 rhel6.5.iso 比如:KVM 虚拟机的镜像文件
[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
[root@xuegod63 ~]# cd /var/lib/libvirt/images/
[root@xuegod63 images]# ll -h
总用量 1.2G #实际镜像占用 1.2G
-rw------- 1 root root 9.1G 9 月 21 23:33 centos7.0.qcow2
#这就是虚拟机镜像文件,不是操作系统镜像格式是 rhel6.5.iso vmware 的镜像文件:
克隆后要修改mac地址和网卡
2.1.2 基于 centos7.0 克隆一台虚拟机:xuegod63-kvm2
[root@xuegod63 ~]# cd /var/lib/libvirt/images/
[root@xuegod63 images]# virt-clone -o centos7.0 -n xuegod63-kvm2 -f /var/lib/libvirt/images/xuegod63-kvm2.img
Allocating 'xuegod63-kvm2' | 8.0 GB 03:34
Clone 'xuegod63-kvm2' created successfully.
[root@xuegod63 images]# ll -h
总用量 3.2G
-rw------- 1 root root 9.1G 9 月 21 23:33 centos7.0.qcow2 (最大空间是 8G,没立即分配 磁)
-rw------- 1 root root 1.2G 9 月 23 18:03 xuegod63-kvm2.img 查看克隆完后,使用磁盘情况。
[root@xuegod63 images]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 10G 8.2G 1.9G 82% /
devtmpfs 2.9G 0 2.9G 0% /dev
tmpfs 2.9G 0 2.9G 0% /dev/shm
tmpfs 2.9G 9.1M 2.9G 1% /run
tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sda1 197M 174M 24M 88% /boot tmpfs 582M 40K 582M 1% /run/user/0
/dev/sdb1 20G 3.2G 17G 16% /var/lib/libvirt/images
2.1.3 KVM 虚拟机组成
一台 KVM 虚拟机由两部分组成:虚拟机配置文件和镜像 img 查看虚拟机的配置文件:
[root@xuegod63 images]# cd /etc/libvirt/qemu
[root@xuegod63 ~]# ls /etc/libvirt/qemu
networks centos7.0.xml xuegod63-kvm2.xml
root@xuegod63 qemu]# vimdiff centos7.0.xml xuegod63-kvm2.xml
学到一招:
注:这里可以看出两者的 MAC 地址是不一样的。所以对克隆或复制出来的虚拟机启动后,要修改网 络,因为克隆出来的虚拟机的真实 MAC 地址和操作系统中的 ifcfg-eth0 中的 MAC 地址不一样。
启动 xuegod63-kvm2 测试一下:
2.1.5 在 rhel6 下 kvm 克隆后的操作
登录新克隆的虚拟机删除原来的 mac 和 IP 地址,让新克隆的机器可以上网:
[root@xuegod63 ~]# rm -rf /etc/udev/rules.d/70-persistent-*
[root@xuegod63 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
#写入以下内容
目前主要虚拟机的镜像格式:raw,cow, qcow,qcow2,vmdk
。
2.2.1 raw 格式镜像
qcow2 格式支持 snapshot,可以在镜像上做 N 多个快照,具有以下优点:
更小的存储空间
支持创建 image 镜像
支持多个 snapshot,对历叱 snapshot 迚行管理 支持 zlib 的磁盘压缩
支持 AES 的加密
2.2.3 vmdk 格式:
VMware 的格式,整体性能最好,因为原本 VMware 就是做虚拟化起家。从性能和功能上来说,vmdk 应该算最出色的,由于 vmdk 结合了 VMware 的很多能力,目前来看,KVM 和 XEN 使用这种格式的情 况不是太多。但就 VMware 的企业级虚拟化 Esxi 来看,它的稳定性和各方面的能力都很好
2.3.2 创建 KVM 快照
在 centos6 下,kvm 虚拟机默认使用 raw 格式的镜像格式,性能最好,速度最快,它的缺点就是不 支持一些新的功能,如支持镜像,zlib 磁盘压缩,AES 加密等。
要使用快照功能,磁盘格式必须为 qcow2。 查看磁盘格式
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img
image: /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 1.1G # 创建虚拟机时,选择不要立即分配磁盘空间 cluster_size: 65536
Format specific information: compat: 1.1
注:qcow2 格式可以直接创建快照
2.3.3 对虚拟机迚行快照管理
对 xuegod63-kvm2 虚拟机创建快照
语法: virsh snapshot-create 虚拟机的名字 例:创建一个快照
[root@xuegod63 images]# virsh snapshot-create xuegod63-kvm2
Domain snapshot 1440726046 created
注:创建快照时不需要关闭虚拟机,关机创建快照比较快,开机创建快照需要把内存中的内容写到磁 盘上,记录虚拟机这一时刻的状态。
[root@xuegod63 images]# virsh shutdown xuegod63-kvm2
域 xuegod63-kvm2 被关闭
[root@xuegod63 images]# virsh snapshot-create xuegod63-kvm2
#这时创建快照很快
已生成域快照 1513776621
创建快照时启个名字:
语法:virsh snapshot-create-as KVM 虚拟机名 快照名 例:生一个快照,名字是: httpd
[root@xuegod63 ~]# virsh list --all
##查看虚拟机名字
Id Name State
- centos7.0 shut off
- xuegod63-kvm2 shut off
[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 httpd
Domain snapshot httpd created
查看虚拟机镜像快照列表
[root@xuegod63 images]# virsh snapshot-list xuegod63-kvm2
名称 生成时间 状态
------------------------------------------------------------
1513776483 2017-12-20 21:28:03 +0800 running
1513776621 2017-12-20 21:30:21 +0800 shutoff
httpd 2017-12-20 21:32:09 +0800 shutoff
快照也支持中文:
[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 安装好 httpd
Domain snapshot 安装好 httpd created
[root@xuegod63 ~]# virsh snapshot-list xuegod63-kvm2
Name Creation Time State
------------------------------------------------------------
1440741062 2015-08-28 13:51:02 +0800 shutoff
httpd 2015-08-28 13:58:26 +0800 shutoff
安装好 httpd 2015-08-28 14:00:15 +0800 shutoff
查看最近一次使用的快照版本。
可以看到为当前最新的快照版本。
[root@xuegod63 images]# virsh snapshot-current xuegod63-kvm2
<domainsnapshot>
<name>安装好 httpd</name>
<state>shutoff</state>
<creationTime>1440726046</creationTime>
快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称下
[root@xuegod63 ~]# ll -h /var/lib/libvirt/qemu/snapshot/xuegod63-kvm2/
总用量 24K
-rw------- 1 root root 4.8K 9 月 23 18:32 1506162674.xml
-rw------- 1 root root 4.8K 9 月 23 18:32 httpd.xml
-rw------- 1 root root 4.9K 9 月 23 18:32 安装好 httpd.xml
#快照的配置文件 互动:腾讯云,阿里云中快照功能收费吗? 快照要收费!
查看快照占用的大小:
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img
image: /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes) disk size: 3.1G
cluster_size: 65536 Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1506162674 0 2017-09-23 18:31:15 00:00:00.000
2 httpd 0 2017-09-23 18:32:04 00:00:00.000
3 安装好 httpd 0 2017-09-23 18:32:15 00:00:00.000
Format specific information:
compat: 1.1 lazy refcounts: true
2.3.4 恢复虚拟机快照 恢复虚拟机快照必须关闭虚拟机。注:阿里云也需要关闭后再恢复快照
[root@xuegod63 snapshot]# virsh domstate xuegod63-kvm2
#查看虚拟机状态 shut off
确认需要恢复的快照,这里恢复到 httpd
[root@xuegod63 snapshot]# virsh snapshot-list xuegod63-kvm2
Name Creation Time State
------------------------------------------------------------ 1448633311 2015-11-27 22:08:31 +0800 shutoff
httpd 2015-11-27 22:10:32 +0800 shutoff
执行恢复
[root@xuegod63 snapshot]# virsh snapshot-revert xuegod63-kvm2 httpd
确认恢复版本
[root@xuegod63 snapshot]# virsh snapshot-current xuegod63-kvm2 | more
<domainsnapshot>
<name>httpd</name>
<state>shutoff</state>
<parent>
<name>1448633311</name>
</parent>
<creationTime>1448633432</creationTime>
2.3.5 删除快照和开机创建快照
1、删除快照
[root@xuegod63 snapshot]# virsh snapshot-delete xuegod63-kvm2 1448633311
Domain snapshot 1448633311 deleted
查看:
[root@xuegod63 snapshot]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.qcow2
image: /var/lib/libvirt/images/xuegod63-kvm2.qcow2 file format: qcow2
virtual size: 8.0G (8589934592 bytes) disk size: 1.1G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
2 httpd 0 2015-11-27 22:10:32 00:00:00.000
上面操作已经还原到快照:httpd。 现在测试使用这个快照启动系统:
[root@xuegod63 snapshot]# virsh start xuegod63-kvm2 Domain xuegod63-kvm2 started
2、开机创建快照:
[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 http-start
Domain snapshot http-start created
查看开机创建的快照占用的磁盘空间:
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img
image: /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes) disk size: 3.1G
cluster_size: 65536 Snapshot list:
ID TAG VM SIZE DATE VM CLOCK 2 httpd 0 2017-09-23 18:32:04 00:00:00.000
3 安装好 httpd 0 2017-09-23 18:32:15 00:00:00.000
4 http-start 127M 2017-09-23 18:35:19 00:00:27.178
注: 127M ,存储虚拟机开机时的运行状态,比如存内存中的数据。
virsh list //查看已打开虚拟机列表
virsh list --all //查看所有虚拟机列表
virsh version //查看 virsh 版本号
virsh start xuegod63-kvm2 //启动 xuegod63-kvm2 虚拟机
virsh shutdown xuegod63-kvm2 //关机 xuegod63-kvm2 虚拟机
virsh dumpxml xuegod63-kvm2 > xuegod63-kvm2.xml //导出 xuegod63-kvm2 虚拟机 配置文件
[root@xuegod63 images]# virsh dumpxml centos7.0 > centos7.0.xml
[root@xuegod63 ~]# virsh undefine centos7.0
//取消 centos7.0 定义 域 centos7.0 已经被取消定义
[root@xuegod63 qemu]# ls /etc/libvirt/qemu
#这下面,也没有虚拟机配置文件
virsh define 虚拟机.xml 的绝对路径 //把虚拟机重新加入到 virt-manager 目录列表。 例:
[root@xuegod63 ~]# virsh define /opt/centos7.0
定义域 centos7.0(从 /opt/centos7.0)
[root@xuegod63 qemu]# ls
centos7.0.xml networks xuegod63-kvm2.xml
virsh destroy xuegod63-kvm2
#强制关闭 xuegod63-kvm2 虚拟机。正常关不了机 时, 用这个。
[root@xuegod63 ~]# virsh autostart centos7.0
//设置开机自启动 node1。
[root@kvm01 ~]# virsh autostart --disable vm1
#取消虚拟机随宿主机开机自启
[root@kvm01 ~]# virsh suspend vm1
#挂起虚拟机
[root@kvm01 ~]# virsh resume vm1
#恢复虚拟机
[root@kvm01 ~]# virsh console vm1
#控制台管理虚拟机
2.5.1 关闭 xuegod63-kvm1,转换格式
[root@xuegod63 ~]# virsh shutdown xuegod63-kvm2
转换磁盘格式
qemu-img 的参数
[root@xuegod63 images]# qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/ xuegod63-kvm2.img /var/lib/libvirt/images/xuegod63-kvm2.raw
查看转换后的格式,已经转换成了 raw
[root@xuegod63 images]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.raw image: /var/lib/libvirt/images/ xuegod63-kvm2.raw
file format: raw
2.5.2 其他镜像格式转换方法:
例 1:将 vmdk 转换为 qcow2
qemu-img convert -f vmdk -O qcow2 source-name.vmdk target-name.qcow2
例 2:将 qcow2 转换为 vmdk
qemu-img convert -f qcow2 -O vmdk source-name.qcow2 target-name.vmdk
2.5.3 修改虚拟机配置文件,使用 raw 格式镜像文件,来启动虚拟机:
方法 1:
[root@xuegod63 ~]# virsh edit xuegod63-kvm2
#修改配置文件 改:
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/libvirt/images/xuegod63-kvm2.img'/> 为:
23 <driver name='qemu' type='raw' cache='none'/>
24 <source file='/var/lib/libvirt/images/xuegod63-kvm2.raw'/>
方法 2:
#注意 vim 直接编辑配置文件/etc/libvirt/qemu/xuegod63-kvm2.xml 不生效 修改后,需要重启服务
[root@xuegod63 ~]# /etc/init.d/libvirtd restart
总结:
2.1 KVM 虚拟机克隆方法
2.2 虚拟机常用镜像格式对比
2.3 KVM 虚拟机快照功能使用方法
2.4 virsh 命令常见用法
2.5 KVM 常用镜像格式转换
本节所讲内容:
3.1 在命令行安装 KVM 虚拟机
3.2 在命令行无人执守安装 KVM 虚拟机
3.3 阿里云主机使用方法
3.1 在命令行安装 KVM 虚拟机
3.1.1 实战 1:在命令行安装 KVM 虚拟机 准备环境:
[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
上传 F:\workstation2\image 一个镜像 CentOS-7.4-x86_64-DVD.iso 到
/var/lib/libvirt/images/下
在命令行安装 KVM 虚拟机实验环境:
安装 vnc 客户端软件,方便后期进程连接正在安装中的虚拟机的安装界面: vnc 客户端: 进程桌面
[root@xuegod63 ~]# yum install tigervnc
#vnc 进程桌面客户端
[root@xuegod63 ~]# yum install virt-viewer -y
#后面安装虚拟机时,需要使用 virt-viewer 这个包作用是什么?
方法 1:
[root@xuegod63 Packages]# rpm -qpi virt-viewer-5.0-7.el7.x86_64.rpm
方法 2:
[root@xuegod63 images]# yum info virt-viewer
简介 : Virtual Machine Viewer #虚拟机查看器
确认 libvirtd 服务开启:
[root@xuegod63 ~]# systemctl status libvirtd
通过命令行安装 KVM 虚拟机:
命令:virt-install 选项:man virt-install
常用选项:
-n NAME, --name=NAME 挃定 Guest 名字
-r MEMORY, --ram=MEMORY 挃定内存大小
–vcpus=VCPUS 挃定虚拟机的 CPU 数量
–disk 挃定虚拟机磁盘存储文件的路径 , size=5 挃定虚拟磁盘的大小,单位是 G; 例:–disk path=/var/lib/libvirt/images/centos-72.img,size=5
–accelerate KVM 或 KQEMU 内核加速器,这个选项默认是添加的。另外,如果系统 KVM 和 KQEMU 加速器都支持,优先使用 KVM 加速器。
-c CDROM, --cdrom=CDROM 挃定用于全虚拟化 Guest 的虚拟光驱, --cdrom=后挃定 ISO 或 CDROM 镜像。
–network #挃定虚拟机的网卡模式。如:–network bridge=br0
-x EXTRA, --extra-args=EXTRA 用来给加载的 kernel 和 initrd 提供额外的内核命令行参数。比 如无人值守安装系统
3.1.2 实例:使用 virt-install 安装一个 kvm 虚拟机
为了方便更快速,我们上传一个镜像 CentOS-7.4-x86_64-DVD.iso 到/var/lib/libvirt/images/下
[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
扩展: vmware 迁移到 kvm ,需要使用 virt-v2v ,安装: yum install virt-v2v
查看已经有的虚拟机:
[root@xuegod63 ~]# virsh list --all
创建 centos-72 虚拟机:
[root@xuegod63 ~]# virt-install --name centos-72 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos-72.img,size=5 --accelerate --cdrom /var/lib/libvirt/images/CentOS-7.4-x86_64-DVD.iso --network bridge=br0 --graphics vnc
现在测试进程连接:
[root@xuegod63 ~]# virt-viewer
#要求 kvm 宿主物理机,安装了图形界面
或:
[root@xuegod63 ~]# vncviewer 127.0.0.1
ks.cfg 文件作用: 系统安装时应答文件,可以实现无交互安装系统 3.2.1
实验环境:
新添加的存盘/dev/sdb1 空间大于 13G,空间不够删除多于的镜像,后面安装虚拟机,可能会因为 空间不够,报错
root@xuegod63 images]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.7G 3.8G 5.4G 42% /
tmpfs 2.1G 264K 2.1G 1% /dev/shm
/dev/sda1 194M 28M 157M 15% /boot
/dev/sr0 3.4G 3.4G 0 100% /mnt
/dev/sdb1 20G 4.5G 15G 24% /var/lib/libvirt/images
3.2.2 搭建镜像 yum 源
[root@xuegod63 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /opt/
#使用本地 yum 源, 安装快
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# systemctl start httpd
[root@xuegod63 ~]# mkdir /var/www/html/centos7/
将 rhel6.5 镜像上挂载 xuegod63 虚拟机的光驱上 E:\workstation\image
[root@xuegod63 ~]# mount /dev/cdrom /var/www/html/centos7/
因为我创建的 ks.cfg 文件是以 rhel6.5 为系统,创建的。所以这里必须使用 rhel6.5 系统来安装 测试:
[root@xuegod63 ~]# iptables -F
#关闭防火墙
http://192.168.1.63/centos7/
上传 ks.cfg 文件到/var/www/html/ 下 修改 ks.cfg 文件:
[root@xuegod63 html]# vim ks.cfg
改:8 url --url="ftp://192.168.1.63/pub"
为:8 url --url="http://192.168.1.63/centos7"
3.2.3 开始安装虚拟机:
[root@xuegod63 images]#
virt-install --name centos7-74 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos7-74.qcow2,size=13 --accelerate
--location=http://192.168.1.63/centos7/ --network bridge=br0 -x "ks=http://192.168.1.63/ks.cfg"
已经开始自动安装
注: 你局域网中的 DHCP 服务器自动分配的 IP 地址是: 192.168.1.0/24 网段才行。 不然需要自 己搭建一个 DHCP,这样虚拟机安装过程中才可以一个 192.168.1.0 网段的 IP,才可以访问到 http://192.168.1.63/centos7/ 源
连接虚拟机:
[root@xuegod63 ~]# virt-viewer