KVM虚拟化技术

virtualization 资源管理:

– x个物理资源 --> y个逻辑资源;
– 实现程度:完全、部分、硬件辅助(CPU)虚拟化.

虚拟化的主要厂商及产品:

VMware--------->VMware Workstation, vSphere

RedHat------------>KVM , RHEV

虚拟机的组成:
– 内核虚拟化模块(KVM)
– 系统设备仿真(QEMU)
– 虚拟机管理程序(LIBVIRT)

– KVM是 linux 内核的模块; 它需要 CPU 的支持,采用硬件辅助虚拟化技术 Intel-VT,AMD-V,内存的相关
如Intel的 EPT 和 AMD 的 RVI 技术;
– QEMU 是一个虚拟化的仿真工具; 通过 ioctl 与内核kvm 交互完成对硬件的虚拟化支持;
– Libvirt 是一个对虚拟化管理的接口和工具; 提供用户端程序 virsh ,virt-install, virt-manager, virt-view 与
用户交互.

虚拟机搭建成功有两个文件:

– 一个 XML 文件(虚拟机配置声明文件)            – 位置 /etc/libvirt/qemu/
– 一个磁盘镜像文件(虚拟机的硬盘)                  – 位置 /var/lib/libvirt/images/

必备软件
• qemu-kvm
– 为 kvm 提供底层仿真支持
• libvirt-daemon
– libvirtd 守护进程,管理虚拟机
• libvirt-client
– 用户端软件,提供客户端管理命令
• libvirt-daemon-driver-qemu
– libvirtd 连接 qemu 的驱动

虚拟化平台的安装:

[root@room9pc01 ~]#yum install -y qemu-kvm   libvirt-daemon   libvirt-client   libvirt-daemon-driver-qemu

[root@room9pc01 ~]#systemctl start libvirtd

virsh 虚拟机管理:

[root@room9pc01 ~]#virsh list              //列出所有在运行的虚拟机

[root@room9pc01 ~]#virsh list  --all         //列出所有的不管是运行状态的还是关闭状态的虚拟机

[root@room9pc01 ~]#virsh start xuniji       //打开关闭状态的虚拟机

[root@room9pc01 ~]#virsh shutdown  xuniji      //关闭打开状态的虚拟机

[root@room9pc01 ~]#virsh  destroy   xuniji    //有些虚拟机通过shutdown无法关闭,可以用destroy

[root@room9pc01 ~]#virsh define  /etc/libvirt/qemu/xuniji.xml      //根据xml文件创建虚拟机

[root@room9pc01 ~]#virsh undefine  xuniji           //可以直接通过虚拟机的名字删除虚拟机

[root@room9pc01 ~]#virsh console  xuniji          //进入虚拟机,这种方法进入,由于本身的设置,太长的文字会出现折行,通常只是在刚创建时使用,设置IP地址,以后SSH远程连接

[root@room9pc01 ~]#virsh edit  xuniji                //关闭虚拟机,编辑xml文件,可以更改虚拟机的内存,名字,cpu内核数等,且只有这种方式有效,vim只是在第一次使用后端盘创建虚拟机时有效

[root@room9pc01 ~]#virsh autostart  xuniji         //设置虚拟机的自启动

root@room9pc01 ~]#virsh domiflist xuniji            //查看虚拟机的网卡配置信息,例如:接口,类型,源,型号,MAC地址等

root@room9pc01 ~]#virsh domblklist  xuniji          //查询虚拟机的硬盘信息,一般都是/var/lib/libvirt/images/kvm.img镜像盘

虚拟机扩容:

root@room9pc01 ~]#virsh domblklist xuniji         //查出虚拟盘的位置

root@room9pc01 ~]#virsh blockresize --path /var/lib/libvirt/images/kvm.img --size 50G xuniji        //blockresize为硬盘扩容, --path 指明给那个盘扩容,指明路径 ,--size 指明要将虚拟机的内存扩大到多少,最后跟上要扩容的虚拟机的名字

root@room9pc01 ~]#virsh console kvm

root@room9pc01 ~]#lsblk                  //发现真是磁盘大小和根分区的磁盘大小不一致

root@room9pc01 ~]#LANG=C          //定义语言为中文,缩写

root@room9pc01 ~]#blkid               //查看磁盘文件系统类型

root@room9pc01 ~]#growpart  /dev/vda  1    //扩展根磁盘空间,最后的1是固定格式

root@room9pc01 ~]#xfs_growfs    /         //给新增加的磁盘添加文件系统

root@room9pc01 ~]#lsblk                   //磁盘大小一致了

root@room9pc01 ~]#df -h                   //文件系统的大小也改变了,扩容成功

virsh 虚拟网络管理:(与虚拟机类型,只是前加了一个net)
– net-list [--all]       列出虚拟网络
– net-start     启动虚拟交换机
– net-destroy     强制停止虚拟交换机
– net-define      根据 xml 文件 创建虚拟网络
– net-undefine         删除一个虚拟网络设备
– net-edit          修改虚拟交换机的配置
– net-autostart        设置虚拟交换机机自启动

qemu-img命令:

• qemu-img 是虚拟机的磁盘管理命令,支持非常多的磁盘格式,例如raw、qcow2、vdi、vmdk等等
• qemu-img 命令格式
– qemu-img  命令  参数  块文件名称  大小
– 常用的命令有:
– create 创建一个磁盘
– convert 转换磁盘格式
– info 查看磁盘信息
– resize 扩容磁盘空间

root@room9pc01 ~]#qemu-image info /var/lib/libvirt/image/xuniji.img

通过后端存储盘qcow2创建虚拟机:(xml模板存在,qcow2后端盘存在)

root@room9pc01 ~]#qemu-img create  -f  qcow2  -b  /var/lib/libvirt/image/node_base.qcow2  /var/lib/libvirt/images/xuniji.img 30G       //-f 代表类型,-b 指的是以那个文件为源创建镜像磁盘,然后就是要创建的虚拟机名字和大小了

root@room9pc01 ~]#cp  /var/lib/libvirt/image/.node_base.xml   /etc/libvirt/qemu/xuniji.xml

root@room9pc01 ~]#vim  /etc/libvirt/qemu/xuniji.xml                 //更改虚拟机的名字,内存,磁盘名

root@room9pc01 ~]#virsh  define /etc/libvirt/qemu/xuniji.xml      //定义虚拟机,启来就行了

COW技术原理(qcow2):
 Copy On Write,写时复制
– 直接映射原始盘的数据内容
– 当数据有修改要求时,在修改之前自动将旧数据拷贝存入前端盘后,对前端盘进行修改
– 原始盘始终是只读的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值