首先配置阿里云的epel源基本源 yum安装KVM相关依赖软件 yum install qemu-kvm libvirt virt-manager libguestfs-tools virt-install -y 启动KVM软件 systemctl start libvirtd.service 设置为开机自启动KVM软件 systemctl enable libvirtd.service 查看启动状态 systemctl status libvirtd.service raw: raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用50G 创建一台为raw磁盘格式的虚拟机利用命令创建一台名字为centos7的虚拟机,创建虚拟机的名字不能重命名 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 这个时候可以用vuc连接了,默认第一台端口为5900,;例如你的IP地址是192.168.123.8 那么这个地址就应该是192.168.123.8:5900 这样就可以连接上你的虚拟机了. 如果这台虚拟机重启了需要把这台虚拟机开启以后才能连接上. 命令解释: --virt-type kvm 虚拟化的类型(qemu) --os-type=linux 系统类型 --os-variant rhel7 系统版本 --name centos7 虚拟机的名字 --memory 1024 虚拟机的内存 --vcpus 1 虚拟cpu的核数 --disk /opt/centos2.raw,format=raw,size=10 使用磁盘的格式 --network network=default 使用默认NAT的网络 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso iso虚拟镜像存放位置 --graphicsvnc,listen=0.0.0.0 --noautoconsole 查看虚拟机只能查看已经开机或者挂起的: virsh list 查看所有的虚拟机包括关机状态下的 virsh list --all 开启其中一台虚拟机 virsh start centos7 正常关机其中一台 virsh shutdown centos7 非正常关机,相当于直接拔掉电源 virsh destroy centos7 重启其中一台,需要进入系统以后才能用 cirsh reboot centos7 导出centos7这台虚拟机的配置的文件 virsh dumpxml centos7 > centos7.xml 导入centos7这台虚拟机的配置文件,这样做的目的是为了迁移这台电脑的系统 virsh define centos7.xml 删除一台虚拟机 virsh undefina centos7 虚拟机配置文件存放位置,每创建一台或者导入一台,就会在这个目录下生成配置文件 /etc/libvirt/qemu/ 编译配置文件,建议用virsh edit这条命令有语法检查 virsh edit centos7 当/根下的/opt分区快要满了的情况下,把虚拟机迁移到新的硬盘上面去,新的硬盘挂在的分区目录为/data下 首先关闭虚拟机,先来配置虚拟机的文件,把opt的目录改成/data下 先来关闭虚拟机 virsh shutdown centos7 编辑配置文件 virsh edit centos7 把这条/opt/centos2.raw <source file='/opt/centos2.raw'/> 修改成/data/centos2.raw <source file='/data/centos2.raw'/> 再来迁移虚拟机磁盘文件 mv /opt/centos2.raw /data/ 再来开启虚拟机就可以了 修改虚拟机主机名称,修改centos7,为web-blog名,修改的时候需要在虚拟机关机的情况下做修改 virsh domrename centos7 web-blog 挂起虚拟机,而不关机虚拟机 virsh suspend web-blog 查看一下虚拟机的状态,可以看到web-blog已经是暂停的状态也就是挂起的状态 [root@localhost ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 5 centos7.6 running 8 web-blog 暂停 恢复挂起的虚拟机 virsh rssume web-blog 返回结果: 域 web-blog 被重新恢复 查看虚拟机的VNC的端口号 virsh vncdisplay centos7.6 返回结果 :1 这里的1也就是5901,也可以在连接的时候输入192.168.123.8:1这样和192.168.123.8:5901的效果也是一样的 开机自启动虚拟机,把web-blog设置为开机自启动 virsh autostart web-blog 取消开机自启动虚拟机 virsh autostart --disable web-blog 查看哪些虚拟机是开机自启动的 ls /etc/libvirt/qemu/autostart/ 返回结果: web-blog.xml 可以看到web-blog.xml存在,说明这台机器是开机自启动的,这个文件是一个软连接,如果把别的虚拟机的配置文件 软连接过来,也是可以启到开机自启动的目的,删除了,也就开机不自启动了 实现console登录虚拟机 首先修改优化内核参数,先来连接到这台虚拟机,修改一下内核的一些参数,把下面这一短话复制进去 grubby --update-kernel=ALL --args="console=ttyS0,115200n8" 修改好以后reboot重启生效 连接虚拟机主机,直接原物理机上的XHELL连接 virsh console web-blog 未修改内核的时候退出: ctrl+]就可以退出 也可以直接用shell连接到物理主机,再连接到虚拟机里面去 ssh root@IP raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用50G 磁盘管理工具 查看文件是不是镜像文件,需要先进入你存放的虚拟机的目录下,我的目录是/opt/和/data目录下 qemu-img info centos2.raw 返回结果: image: centos2.raw 格式 file format: raw 类型 virtual size: 10G (10737418240 bytes) 大小 disk size: 1.8G 手动创建一个磁盘文件大小为10G,文件类型为qcow2,文件存到/data/下,需要制定文件格式,如果不指定默认是raw格式的,所以-f qcow2加上文件格式 qemu-img create -f qcow2 /data/text.qcow2 10G 返回结果: Formatting '/data/centos.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 查看刚创建文件的信息: # qemu-img info centos.qcow2 返回结果 image: centos.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false 修改原有的文件磁盘大小,原来为10G,增加到1T qemu-img resize text.qcow2 1T 返回结果 Image resized. 查看修改过的text.qcow2 qemu-img info text.qcpw2 返回结果 image: text.qcow2 file format: qcow2 virtual size: 1.0T (1099511627776 bytes) disk size: 212K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false RAW磁盘格式支持减少空间 qemu-img resize 123.raw -2G 实际生产环境中这跳命令千万不要用,直接放弃这条命令.减完以后你的数据会丢,你的工作会没,而且还会赔钱 磁盘文件类型转换从raw转换到qcow2,将web-blog.raw这台虚拟机的文件转换为web-blog.qcow2格式的类型文件 qemu-img convert -f raw -O qcow2 web-blog.raw web-blog.qcow2 转换磁盘类型以后需要修改web-blog的配置文件 virsh edit web-blog 需要修改的内容搜索disk找到一下内容 修改的内容为raw修改为qcow2,也就是文件转换以后文件类型 未修改的 <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/opt/web-blog.raw'/> 修改过的 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/opt/web-blog.qcow2'/> 测试一下,启动一下虚拟机 virsh start web-blog 返回结果: 域 web-blog 已开始 检查一下配置文件: virsh dumpxml web-blog |grep qcow2 返回结果: <driver name='qemu' type='qcow2'/> <source file='/opt/web-blog.qcow2'/> qcow2: cow(copyon write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G qcow2 创建一台qcow2磁盘格式的虚拟机 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7-1 --memory 1024 --vcpus 1 --disk /data/centos7-1.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 快照: 快照管理:raw文件类型不支持快照需要做转换,qcow2支持做快照,并且快照就保存在qcow2的磁盘文件中 给一个虚拟机创建一个快照,给web-blog这台虚拟机创建env_ok的快照 virsh snapshot-create-as --name env_ok web-blog 查看一台虚拟机的创建过的快照列表 virsh snapshot-list 删除一台虚拟机的快照 virsh snapshot-delete web-blog --snapshotname 1578081184 恢复web-blog这台虚拟机的env_ok的快照 virsh snapshot-revert web-blog --snapshotname env_ok 克隆: 完整克隆 完整克隆一台虚拟机 virt-clone --auto-clone -o centos7-1 -n centos7-2 手动完整克隆 首先先复制一份原你要克隆的虚拟机的镜像文件,并给他重新命名,名字叫web-bbs.qcow2 cp /opt/web-blog.qcow2 /opt/web-bbs.qcow2 导出web-blog这台虚拟机的配置文件 virsh dumpxml web-blog >web-bbs.xml 编辑配置文件 vim web-bbs.xml 修改名称为web-bbs <name>web-bbs</name> 修改web-bbs.xml配置,把UUID和和mac地址做修改,还有虚拟机的名字做修改 删除这一行uuid这一行,用dd可以删除 。这个uuid每台机器的id都不是不一样的,删除掉让系统重新生成 <uuid>116724bd-f7d5-4e4b-bc12-55d994686966</uuid> 删除mac地址这一行,每台机器的mac地址都不能一样,删除掉以后让系统重新生成 <mac address='52:54:00:bf:ab:70'/> 修改虚拟机的名字,修改成如下内容:修改文件路径根据自己的真实路径修改 原内容 <source file='/opt/web-blog.qcow2'/> 修改过后 <source file='/opt/web-bbs.qcow2'/> 导入配置文件 virsh define web-bbs.xml 链接克隆 链接克隆一台虚拟机 qemu-img create -f qcow2 -b centos7-1.qcow2 centos7-3.qcow2 链接克隆支持raw格式磁盘,利用raw磁盘格式创建链接克隆,文件类型修改为qcow2 qemu-img create -f qcow2 -b text.raw web1.qcow2 导出web-blog这台虚拟机的配置文件 virsh dumpxml web-blog >centos7-3.xml 编辑配置文件 vim centos7-3.xml 修改名称为centos7-3 <name>centos7-3</name> 修改web-bbs.xml配置,把UUID和和mac地址做修改,还有虚拟机的名字做修改 删除这一行uuid这一行,用dd可以删除 。这个uuid每台机器的id都不是不一样的,删除掉让系统重新生成 <uuid>116724bd-f7d5-4e4b-bc12-55d994686966</uuid> 删除mac地址这一行,每台机器的mac地址都不能一样,删除掉以后让系统重新生成 <mac address='52:54:00:bf:ab:70'/> 修改虚拟机的名字,修改成如下内容:修改文件路径根据自己的真实路径修改 原内容 <source file='/opt/web-blog.qcow2'/> 修改过后 <source file='/opt/centos7-3.qcow2'/> 导入配置文件 virsh definecentos7-3.xml 创建桥接网卡 需要先把NetworkManager systemctl disable NetworkManager systemctl stop NetworkManager 再来创建桥接网卡 virsh iface-bridge eth0 br0 桥接创建虚拟机 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7-1 --memory 1024 --vcpus 1 --disk /data/centos7-1.qcow2,format=qcow2,size=320 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole 图形化安装虚拟机,需要安装桌面或者用Xmanager Enterprise调用图形化来安装系 输入以下命令即可 virt-manager