2018/07 作者:ihunter 0 次 0
一、安装KVM
1. 验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
egrep '(vmx|svm)' /proc/cpuinfo
2. 关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
3. 最小安装的CentOS安装一些最基本的包(可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下)
yum install epel-release net-tools vim unzip zip wget ftp -y
4. 安装KVM及其依赖项
yum install qemu-kvm libvirt virt-install bridge-utils -y
5. 验证安装结果,下图说明已经成功安装了
lsmod | grep kvm
6. 开启kvm服务,并且设置其开机自动启动
systemctl start libvirtdsystemctl enable libvirtd
7. 查看状态操作结果,如下图所示,说明运行情况良好
systemctl status libvirtdsystemctl is-enabled libvirtd
8. 配置网桥模式,先将 /etc/sysconfig/network-scripts/ 目录下的网卡配置文件备份一份(不要备在当前目录以及子目录下,其他目录随意)
cd /etc/sysconfig/network-scripts/
cp ifcfg-enp0s25 ifcfg-enp0s25-bak
a. 创建 ifcfg-br0 文件,内容如下:
vi ifcfg-br0
BOOTPROTO=static DEVICE=br0 TYPE=Bridge NM_CONTROLLED=no IPADDR=192.168.1.95 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=61.177.7.1 DNS2=8.8.8.8
b. 移除掉原来的 ifcfg-enp0s25 ,重新创建该文件,内容如下:
vi ifcfg-enp0s25BOOTPROTO=noneDEVICE=enp0s25NM_CONTROLLED=noONBOOT=yesBRIDGE=br0
c. 重启网络服务
systemctl restart network
使用 ifconfig 验证操作结果,多了一块网卡br0,现在访问 think8848-srv02 使用 192.168.1.95 就可以了。
二、安装虚拟机
1. 准备操作系统安装镜像文件,在本文中将使用和宿主环境一样的CentOS7.2,把该文件放到 /home/iso 目录下
2. 创建虚拟机文件存放的目录
mkdir -p /data/kvm-bakmkdir -p /data/iso
3. 使用 virt-install 创建虚拟机
virt-install -n kvmbase -r 2048 --disk /data/kvm-bak/kvmbase.img,format=qcow2,size=10 --network bridge=br0 --os-type=linux --os-variant=rhel7.4 --cdrom /data/iso/CentOS-7-x86_64-Minimal-1708 --vnc --vncport=5910 --vnclisten=0.0.0.0
操作结果显示:
不要理会里面提示的错误,接着往下走
4. 打开防火墙上的5910端口
firewall-cmd --zone=public --add-port=5910/tcp --permanentfirewall-cmd --reload
5. 使用VNC连接该虚拟机,进行虚拟机操作系统的安装,直接到VNC官网上下载最新版的VNC Viewer即可
a. VNC Viewer
b. 新建连接,提供宿主IP、端口号(在virt-install创建过程中指定的),以及名称
c. 在Expert页签中,将ColorLevel的值由原来的 pal8 修改为 rgb222 ,点击OK按钮保存
d. 如果你像我一样,边操作边还在做笔记,等你双击连接的名称后,安装界面都准备好了
接下来就安装CentOS吧,过程略。
6. 安装完CentOS,系统要求重启,这时候虚拟机没有重启(也不知是因为什么问题),VNC也连不上,先在宿主机上查看虚拟机状态,显示think8848-kvmbase为关闭状态
virsh list --all
7. 手动启动虚拟机
virsh start think8848-kvmbase
再次使用VNC连接,发现已经可以连进去了
三、简单配置KVM虚拟机
1. 网桥配置,这里值得一提的是,如果你在虚拟机中安装CentOS过程中,配置了合适的网格参数,那么这时虚拟机里应该就可以使用网络了。如果当时就采用系统安装包的默认参数,未启用网卡,那么此时你需要启动虚拟机的网卡,先看下虚拟机网卡的配置文件列表,貌似和普通电脑安装没啥区别,网卡的配置文件是 ifcfg-eth0
再查看 ifcfg-eth0配置文件,和普通电脑安装的也没啥区别,按照要求呢,貌似在一些文章中介绍,说需要添加一行配置 NM_CONTROLLED=no ,我没添加也没发现有什么问题。
2. 配置在宿主端登录虚拟机shell。当然在宿主端也是可以通过SSH登录,但是直接登录貌似也是一个不错的方式。这个配置主要有两个步骤:
a. 编辑 /etc/default/grub 文件,对照如下:
编辑前:
编辑后:
文本内容:
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL="console serial"GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"GRUB_DISABLE_RECOVERY="true"
b. 运行下面一行的代码
grub2-mkconfig -o /boot/grub2/grub.cfg
c. 重启虚拟机 reboot
d. 在宿主机上进入虚拟机控制台,想退出时使用 Ctrl 键+ ] (左方括号)键退出。
virsh console think8848-kvmbase
四、迁移虚拟机
虚拟机建好后,最大的好处就是任由我们折腾,而不用担心重装系统的麻烦。所以一定要知道虚拟机怎么复制迁移,这里有两种情况,一种是本机上镜像复制,另一种是将本机镜像迁移到其他服务器上,本节参考自这里,感谢koumm。
1. 本机复制
a. 先关闭虚拟机
virsh shutdown think8848-kvmbase
b. 在 /home 下新建文件夹 /home/kvm-img
mkdir -p /home/kvm-img
c. 使用 virt-clone 克隆think8848-kvmbase为新的虚拟机
virt-clone -o think8848-kvmbase -n think8848-kvm01 -f /home/kvm-img/think8848-kvm01.img
克隆完成
使用 virsh list --all 查看
d. 开启think8848-kvm01,然后修改IP地址、主机名
virsh start think8848-kvm01virsh console think8848-kvm01#等虚拟机启动好后,用root登录hostname think8848-kvm01#编辑/etc/hostname文件,修改主机名为think8848-kvm01vi /etc/hostname#编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改IPADDR
e. reboot 重启虚拟机,重启后刚才修改的内容已经生效了。
2. 将虚拟机镜像迁移到其他服务器上
a. 先将虚拟机的配置文件和镜像文件放到合适的位置(我搭了一台FTP服务器,方便测试时所有的文件传输,如下图所示)
b. 现在到服务器转战到think8848-srv01(IP:192.168.1.96),刚才虚拟机是在think8848-srv02(IP:192.168.1.95)上创建的。以下所有操作均是在think8848-srv01上进行的
c. 将ftp上的think8848-kvm01.img放到/home/kvm-img目录,将think8848-kvm01.xml放到/etc/libvirt/qemu目录中d. 编辑think8848-kvm02.xml,将里面所有think8848-kvm01替换为think8848-kvm02,然后把UUID换为新的(直接使用这个在线工具生成吧)
e. 定义新虚拟机
virsh define /etc/libvirt/qemu/think8848-kvm02.xml
图中think8848-kvm01是我之前在宿主机中配置的虚拟机,恰好名称与之前的重复了。我在think8848-kvm01上没有安装ftp客户端,在新迁移的虚拟机里面安装了ftp,可以利用这个包验证虚拟机是否正确
OK,说明没有问题
f. 现在是时候再给新的虚拟机指定新主机名和IP了。刚才是我们重启生效的,这次我们不要重启了,先使用 systemctl restart network 使新IP生效,然后再 exit 注销用户使主机名生效,就可以了。
最后一个问题,如果在克隆或迁移后想使用VNC连接,那就需要重新指定VNC的端口号,将 /etc/libvirt/qemu/think8848-kvm02.xml 中的VNC端口号修改你需要的值即可。
五、KVM管理- 虚拟化之KVM virsh常用命令篇
1,查看运行的虚拟机
virsh list
2,查看所有的虚拟机(关闭和运行的虚拟机)
virsh list --all
3,连接虚拟机
virsh console +域名(虚拟机的名称)
4,退出虚拟机
ctrl+]
5,关闭虚拟机
5.1 virsh shutdown +域名
这个时候我在virsh list发现 test02这个虚拟机还是在运行的,并没有关闭。
我们需要安装一个acpid的服务并启动它,什么是ACPI?
ACPI是Advanced Configuration and PowerInterface缩写,高级配置和电源管理接口。
acpid中的d则代表daemon。Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
其实,说明了就是通过这个服务来执行电源关闭的动作,这也是为什么我们执行virsh shutdown +域名无法关机的原因。
(子机安装acpid服务)yum install -y acpid
/etc/init.d/acpid start
如果此时我没法进入子机安装acpi协议的话,那么就无法关掉该虚拟机,此时可以用下面这种方法。
5.2 virsh destroy +域名
这种方式的关闭,是一种删除的方式,只是在virsh list中删除了该虚拟机。
6,挂起虚拟机
virsh suspend +域名
7,恢复被挂起的虚拟机
virsh resume +域名
8,子机随宿主主机(母机)启动而启动
virsh autostart + 域名
9,取消自动启动
virsh auotstart --disable +域名
10,彻底删除虚拟机
1, 删除虚拟机 virsh destroy +域名
2,解除标记 virsh undefine +域名
3,删除虚拟机文件
11,启动虚拟机并进入该虚拟机
virsh start 域名 --console
参考网址: https://www.linuxidc.com/Linux/2017-01/140007.htm
案例:使用KVM命令集管理虚拟机
一、案例分析
案例环境使用一台物理机器,一台服务器安装Centos 6.6的64位系统(即Stranded), Centos-6.6是在宿主机Stranded中安装的虚拟机
主机 操作系统 IP地址 主要软件 Stranded Centos-6.6 x86_64 192.168.1.100 Xshell Centos-6.6 Centos-6.6 x86_64 192.168.1.103 Xmanager
二、案例实施
1、安装Linux虚拟机
安装过程同上一案例,使用Xshell远程控制Stranded主机
2、KVM基本功能管理
(1)查看命令帮助
[root@localhost ~]# virsh -h ...... //省略输出内容
(2)查看KVM的配置文件存放目录(Centos-6.6.xml是虚拟机系统实例的配置文件)
[root@localhost ~]# ls /etc/libvirt/qemu autostart Centos-6.6.xml networks
(3)查看虚拟机状态
[root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 2 Centos-6.6 running
(4)虚拟机关机与开机
首先要确认acpid服务安装并运行
[root@localhost ~]# virsh shutdown Centos-6.6 [root@localhost ~]# virsh start Centos-6.6
(5)强制实例系统关闭电源
[root@localhost ~]# virsh destroy Centos-6.6
(6)通过配置文件启动虚拟机系统实例
[root@localhost ~]# virsh create /etc/libvirt/qemu/Centos-6.6.xml [root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 3 Centos-6.6 running
(7)挂起虚拟机
[root@localhost ~]# virsh suspend Centos-6.6
查看虚拟机状态
[root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 3 Centos-6.6 暂停
(8)恢复虚拟机
[root@localhost ~]# virsh resume Centos-6.6 [root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 3 Centos-6.6 running
(9)配置虚拟机实例伴随宿主机自动启动
[root@localhost ~]# virsh autostart Centos-6.6
上述命令将创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统
(10)导出虚拟机配置
[root@localhost ~]# virsh dumpxml Centos-6.6 >/etc/libvirt/qemu/Centos-02-6.6.xml
(11)虚拟机的删除与添加
删除虚拟机
[root@localhost ~]# virsh shutdown Centos-6.6 [root@localhost ~]# virsh undefine Centos-6.6
查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除
[root@localhost ~]# ls /etc/libvirt/qemu autostart Centos-02-6.6.xml networks
通过virsh list -all查看不到Centos-6.6的信息,说明此虚拟机被删除
[root@localhost ~]# virsh list --all Id 名称 状态 ----------------------------------------------------
通过备份的配置文件重新定义虚拟机
[root@localhost ~]# cd /etc/libvirt/qemu [root@localhost qemu]# mv Centos-02-6.6.xml Centos-6.6.xml
重新定义虚拟机
[root@localhost qemu]# virsh define Centos-6.6.xml
查看虚拟机信息
[root@localhost qemu]# virsh list --all Id 名称 状态 ---------------------------------------------------- - Centos-6.6 关闭
(12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
直接通过vim命令修改
[root@localhost ~]# vim /etc/libvirt/qemu/Centos-6.6.xml
通过virsh命令修改
[root@localhost ~]# virsh edit Centos-6.6
3、KVM文件管理
通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw与qcow2格式,KVM虚拟机默认使用raw格式,raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像、Zlib磁盘压缩、AES加密等,针对两种格式的文件有不同的工具可供选择。这里介绍本地YUM安装libguestfs-tools后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件,因此需要将raw格式的磁盘文件转换成qcow2的格式)
(1)转换raw格式磁盘至qcow2格式
查看当前磁盘格式
[root@localhost ~]# qemu-img info /data_kvm/store/linux_kvm.img image: /data_kvm/store/linux_kvm.img file format: raw virtual size: 10G (10737418240 bytes) disk size: 10G
关闭虚拟机
[root@localhost ~]# virsh shutdown Centos-6.6
转换磁盘文件格式
[root@localhost ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/linux_kvm.img /data_kvm/store/linux_kvm.qcow2
(2)修改Centos-6.6的xml配置文件
[root@localhost ~]# virsh edit Centos-6.6 ...... //省略部分内容...... //省略部分内容
(3)virt-cat命令,类似于cat命令
[root@localhost ~]# virt-cat -a /data_kvm/store/linux_kvm.qcow2 /etc/sysconfig/network NETWORINT=yes HOSTNAME=localhost.localdomain
(4)virt-edit命令,用于编辑文件,用法与vim基本一致
[root@localhost ~]# virt-edit -a /data_kvm/store/linux_kvm.qcow2 /etc/resolv.conf nameserver 8.8.8.8
(5)virt-df命令用于查看虚拟机磁盘信息
[root@localhost ~]# virt-df -h Centos-6.6 Filesystem Size Used Available Use% Centos-6.6:/dev/sda1 476M 32M 419M 7% Centos-6.6:/dev/sdb1 4.3G 4.3G 0 100% Centos-6.6:/dev/VolGroup/lv_root 8.3G 620M 7.2G 8%
4、虚拟机克隆
(1)查看虚拟机状态
[root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- - Centos-6.6 关闭
(2)从Centos-6.6克隆Centos-02-6.6
[root@localhost ~]# virt-clone -o Centos-6.6 -n Centos-02-6.6 -f /data_kvm/store/Centos-02-6.6.qcow2
(3)查看虚拟机状态
[root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- - Centos-02-6.6 关闭 - Centos-6.6 关闭
(4)启动虚拟机
[root@localhost ~]# virsh start Centos-02-6.6
5、虚拟机快照
KVM虚拟机要使用快照功能,磁盘格式必须是qcow2,之前已经将Centos-6.6的磁盘格式转换成了qcow2
下面介绍KVM虚拟机快照备份的过程
(1)对Centos-6.6创建快照
[root@localhost ~]# virsh snapshot-create Centos-6.6 Domain snapshot 1440950172 created
(2)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current Centos-6.61440950172 //快照版本号shutoff ...... //省略部分内容
(3)查看快照信息
[root@localhost ~]# virsh snapshot-list Centos-6.6 名称 Creation Time 状态 ------------------------------------------------------------ 1440950172 2015-08-30 23:56:12 +0800 shutoff
(4)创建新快照
[root@localhost ~]# virsh snapshot-create Centos-6.6 Domain snapshot 1440950433 created
(5)查看快照信息
[root@localhost ~]# virsh snapshot-list Centos-6.6 名称 Creation Time 状态 ------------------------------------------------------------ 1440950172 2015-08-30 23:56:12 +0800 shutoff 1440950433 2015-08-31 00:00:33 +0800 shutoff
(6)回复虚拟机状态至1440950172
[root@localhost ~]# virsh snapshot-revert Centos-6.6 1440950172
(7)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current Centos-6.61440950172 //快照版本号shutoff ...... //省略部分输出
(8)删除快照
[root@localhost ~]# virsh snapshot-delete Centos-6.6 1440950172 Domain snapshot 1440950172 deleted
上篇:
kvm 基础镜像与增量镜像
下篇:
kvm虚拟机静态迁移