KVM-虚拟机管理
关于虚拟化技术
虚拟化是一种通过模拟计算机硬件,使一台计算机可以同时运行多个不同操作系统的技术。虚拟化极大地提高了硬件资源的利用率,同时降低了物理设备的成本和管理复杂性。
虚拟化软件的差别
qume 全虚拟化软件,特别慢但是兼容性特别好。 xen 半虚拟化软件,需要使用专门修改之后的内核,性能很高,兼容性很差。redhat在5.5的版本将xen替换成kvm kvm 全虚拟化软件,它具有硬件支持cpu,内置在linux内核模块中,不需要使用专门的内核。性能好,兼容性好。 kvm的兼容性没有qume好,但是他比qume的性能好太多了 kvm的性能没有xen好,但是他比xen的兼容性好太多了
安装KVM
KVM全称:Kernel-based Virtual Machine libvirt:因为KVM是基于内核的,linux用户是没办法直接操作内核的,这个软件包就是一个操作的工具。 virt-install:安装虚拟机用的。 qume-kvm:kvm是没有自己的虚拟磁盘技术的,所以直接兼容了qume的虚拟磁盘,这个包即兼容并优化了qume的磁盘。
虚机管理
创建一个虚拟机
|
要注意的是--cdrom参数,镜像不要放在root目录下会报权限相关的问题,建议丢到一个公共的位置,例如/opt下,然后操控的用户和用户组都是qemu
创建好之后可以通过vnc来连接,这里设置离连接方式是vnc,并且监听的位置是0.0.0.0

管理命令
主要使用virsh来管理KVM虚拟机
列出虚机
这条命令默认是列出所有运行的虚机,如果虚机在关闭状态则不会列出,想要列出所有状态的虚机需要添加--all参数
关机
关机的话系统必须装好,否则没用
开机
virsh start 虚机名
强制关机
这相当于拔掉虚机的电源
重启
重启的话系统必须装好,否则没用
导出配置
导出对应虚机的配置文件
取消定义
这里是把对应的虚拟机移除kvm的管理里,相当于从kvm中删除,配置文件也会被删除,但是实际的镜像文件还是会保留。
导入配置
修改配置
挂起
锁定当前状态
恢复
开机自启
可以添加参数--disable来取消开机自启
列出所有开机自启主机
不加参数--all参数的话,只会列出开机的主机。
控制台
想要通过console直接连接控制虚机,需要提前在虚拟机中执行下面命令让其支持(执行完请重启虚机)
磁盘管理
关于磁盘格式
- RAW:原始格式,也叫野格式,不支持快照功能,不方便传输,读写性能较好。
- qcow2:qcow2(copy on write)写时复制(动态占用空间),占用空间小,支持快照,性能比raw差一点,方便传输。
管理命令
主要使用qemu-img来管理KVM虚拟机
磁盘信息
创建磁盘
例如
在/opt/test.qcow2位置创建一个1G大小的磁盘
调整容量
给test.qcow2添加1G 后面是容量指令,具体格式参考如下
- 5G 大小调整到5G
- +1G 大小增加1G
- -1G 大小减小1G
RAW转换QCOW2
这个操作请在虚拟机关闭的状态下执行,执行之后会保留之前的文件然后生成新的qcow2文件。 然后转换之后如果想开机时使用QCOW2的镜像需要edit一下虚机的配置文件
大概在35行左右,原文如下
修改成下面这种效果
其他功能
快照
创建快照
这里我们为虚拟机 centos7 创建了一个快照,使用了 --atomic表示如果失败则完全回滚,--disk-only 表示仅对磁盘创建快照。
查看快照
恢复快照
删除快照
其他
在创建和管理快照时,可以添加选项控制快照类型(disk-only、system-checkpoint等)、是否包含内存状态等,灵活控制快照行为。
克隆
完整克隆
被克隆的主机一定要处于被挂起或者关闭的状态下 使用virt-clone工具
|
手动克隆
编辑导出的xml,主要修改下面几个字段
修改 domain.name # 名字
删除 domain.uuid # uuid
删除 domain.devices.interface.mac # mac地址
修改 domain.devices.disk.source-file # 虚拟磁盘文件指定为新手动复制的。
编辑好之后导入虚机
链接克隆
连接克隆要注意的是不能使用RAW格式的磁盘,他是不支持的。 创建引用磁盘
此时去查看centos3.qcow2的信息如下
)
会发现这个字段backing file: centos.qcow2
导出xml
编辑导出的xml,主要修改下面几个字段
修改 domain.name # 名字
删除 domain.uuid # uuid
删除 domain.devices.interface.mac # mac地址
修改 domain.devices.disk.source-file # 虚拟磁盘文件指定为新手动复制的。
编辑好之后导入虚机
网络
桥接网卡
如果想要将主机桥接到某个网络中则需要搞一个桥接网卡,可以通过下面命令进行桥接
ens33是被桥接的网卡,br0是桥接之后的网卡,桥接的过程中可能会出现很多问题,我出现的问题是断网,然后开启网卡开启失败具体可以参考文章
取消桥接
创建虚机指定网卡
参数--network network=default是NAT模式,全部参数可以参考下面
参数--network bridge=br0是桥接模式,全部参数可以参考下面
已有虚机更换网卡
通过下面命令编辑配置
修改domain.devices.interface字段,默认值如下
修改成下面这样
主要是interface的type字段和interface.source的字段。
注意
每次桥接和取消桥接都会永久性的修改网卡的配置文件,这个需要注意。
关于KVM创建的虚拟机
KVM虚拟机主要有两部分组成,一部分是磁盘文件,在创建的时候通过下面命令已经指定
--disk /opt/centos.raw,format=raw,size=10
另外一部分是配置文件,配置文件默认位置在/etc/libvirt/qemu中,一般采用dumpxml来导出,只要拥有xml和镜像文件就可以恢复虚机。