程序猿的知识社区
KVM是英文Kernel-based Virtual Machine的简称,是基于硬件辅助的开源虚拟化解决方法,其优点如下:
KVM架构
基本上又两大方便组成云系统架构KVM,KVM模块以及QENMU-KVM
模块:k
什么是KVM KVM是英文Kernel-based Virtual Machine的简称,是基于硬件辅助的开源虚拟化解决方法,其优点如下: KVM架构 基本上又两大方便组成云系统架构KVM,KVM模块以及QENMU-KVM 模块:kvm.ko,kvm_intel.ko, kvm_amd.ko qemu-kvm:通过修改qemu代码而得出的专门为管理和创建虚拟机的工具 /dev/kvm:linux系统下kvm提供驱动接口 硬件支持 我这里用的是虚拟机,为了使cpu支持虚拟化勾选了"虚拟化Intel VT-x/EPT或AMD-V/RVI(V)" 生产环境中我们使用的是真实物理服务器,一般是默认开启的,如果没有开启,则需要在BIOS中开启 系统环境 CentOS 7.2.1511 生产环境当中,一般配置虚拟机和宿主机的网络为桥接模式 我宿主机的物理网卡名称为eno33554984(VMnet1),可以看到我们上面还有一个NAT,那是我们专门用来上网的,真实服务器一张网卡就够了 我们需要创建一个共享的桥接网络设备 # vim /etc/sysconfig/network-scripts/ifcfg-eno33554984 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes PEERDNS=yes PEERROUTES=yes NAME=eno33554984 DEVICE=eno33554984 ONBOOT=yes BRIDGE=br0 # vim /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 ONBOOT=yes TYPE=Bridge BOOTPROTO=static IPADDR=192.168.88.1 PREFIX=24 GATEWAY=192.168.88.254 DNS1=114.114.114.114 SSH连接192.168.88.1进入系统 检查cpu是否支持虚拟机化,Intel支持的会带有vmx标志,AMD支持会带有svm标志 # grep -E '(vmx|svm)' /proc/cpuinfo 安装组件 # yum install -y qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install 创建一个10G的硬盘(给虚拟机用) 准备一个系统镜像 创建虚拟机 # mkdir /data/images # virt-install \ #命令(详细用法 virt-install --help) --name CentOS7.1_88.100 \ #虚拟机名字 --ram 1024 \ #分配内存大小 --cdrom=/data/CentOS-7-x86_64-Minimal-1511.iso \ #安装镜像 --disk path=/data/images/CentOS7.1_88.100.img,size=8 \ #8G的存储文件,虚拟机的硬盘 --network bridge=br0 \ #桥接到br0 --graphics vnc,listen=0.0.0.0 --noautoconsole #开启vnc 查看正在运行的虚拟机 我们可以发现开启了一个5900端口,我们可以使用VNC来连接这个端口,远程连接到虚拟机 我们可以看到已经进入到安装界面 按正常步骤安装,虚拟机只要分一个分区就可以了(阿里云也没有分交换分区,哈哈) 安装完成后重启 然而虚拟机并没有重启,只是关闭了 我们回到宿主机使用virsh list并没有看到在运行的虚拟机 这里我们可以使用virsh --list all查看所有的虚拟机,可以发现,它处于一个关闭状态 开启虚拟机 # virsh start CentOS7.1_88.100 # virsh shutdown CentOS7.1_88.100 这是关闭的命令 这样我们使用VNC就可以连接上去了,查看虚拟机网络 配置eth0的ip为192.168.88.100 重启虚拟机的网络服务 然后我们就可以使用ssh远程192.168.88.100了 当我创建第二台虚拟机,它的VNC连接端口是5901 虚拟主机管理 virsh undefine [主机名字] 我们创建虚拟机的时候可以配置好cpu、 内存、硬盘的配置(安装前规划是最好的) 然后,当我们创建好,配置已经无法满足需求了,我们可以编辑xml修改 virsh edit [主机名字], 修改完配置需要重启虚拟机才能生效 ---修改cpu--- 需求:最大支持4个cpu,当前为1个 使用存储池 存储池是一个本地目录、本地存储设备、网络文件系统或块级联网存储,可以使用libvirt管理它们,并且可在其中创建和存储一个或多个虚拟机镜像。本地存储很简单,但可能不灵活且不支持企业虚拟化的最关键需求:实时迁移 默认情况下,基于libvirt的命令使用虚拟化主机上的目录/va/lib/libvirt/images作为初始文件系统目录存储池 使用virsh pool-create-as命令轻松创建一个新的存储池(我预先在88.2配置了nfs服务) 第一个参数 (NFS-POOL) 指定新存储池的名称 第二个参数指定所创建的存储池类型 --source-host 选项的参数指定了通过 NFS 导出存储池目录的主机 --source-path 选项的参数指定该主机上导出的目录的名称 --target 选项的参数指定了访问存储池时所使用的本地挂载点 创建新存储池后,它将virsh pool-list命令的输出中列出 输出中,注意新存储池标记不会自动启动,表明系统重新启动后它不会自动启动,而且它没有持久化,表明在系统重新启动后绝对不会定义它。存储池仅在它们受其XML描述支持时才能持久化,该XML描述位于目录/etc/libvirt/storage中。XML存储池描述文件名与它们相关联的存储池名称相同,但是扩展名是.xml. 要为手动定义的存储池创建xml描述文件,可以使用virsh pool-dumpxml命令指定一个池名称,将其XML描述转储为一个最终参数。此命令写入到标准输出,所以需要将它的输出重定向到合适的文件中。例如,以下命令将之前创建的NFS-POOL存储池创建正确的XML描述文件 即使将存储池持久化后,该池也不会标记为在重新启动虚拟化主机时自动启动。可使用virsh pool-autostart命令后跟一个存储池名称来将存储池设置为自动启动 将存储池标记为自动启动,意味着存储池将在虚拟化主机重新启动时可用。在技术上,它意味着/etc/libvirt/storage/autostart目录包含该存储池xml描述的一个符号链接 创建存储池后,可在该池内创建一个或多个虚拟机 每次都报这种错误 后来改了下nfs的配置 然后成功创建了虚拟机 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |