大纲: 一、部署安装kvm虚拟机 二、virsh常见命令解释 三、KVM虚拟机克隆 四、KVM快照 五、让GuestOS支持 console 六、添加网卡 七、磁盘扩容 八、动态迁移 前言: 虚拟化的理论知识我就不啰嗦了,可以参见http://bbs./thread-24347-1-1.html,kvm全称Kernel-based Virtual Machine, 其实kvm只是一个内核模块,提供虚拟cpu和内存管理的模块,至于其它的设备是由qemu模拟的,如网卡,显卡,磁盘等。后来redhat联合IBM以及Linux社区创造了libvirt,模拟的设备性能要比qemu的好很多,并提供了一系列的管理工具和api,整个集成了kvm虚拟化的解决方案。Linux(redhat系)装载kvm模块后,妖神一变成为了VM Monitor,也称为Hypervisor,部署使用简单,需要硬件支持虚拟化。
一. 部署虚拟机 1). 检测硬件是否支持虚拟化 # egrep '(vmx|svm)' --color=always /proc/cpuinfo 如果含有vmx或者svm字样,则表示支持CPU虚拟化,Intel是vmx,AMD是svm,也需要检测是否有kvm_xxx模块,如果装载不成功,可能是没有开启硬件虚拟化,需要bios中开启,具体开启方式请联系厂家 2). 安装rpm包,并启动服务 # yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools \ virt-viewer virt-v2v libguestfs-tools 3). 检查是否有kvm模块,如果有则继续 # lsmod | grep kvm 4). 配置桥接网络 br0 # cd /etc/sysconfig/network-scripts/ 5). 部署安装虚拟机(GuestOS) ① 建立磁盘文件,如果使用的是raw格式就不需要了,kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持快照镜像,zlib磁盘压缩,AES加密等。这里使用qcow2格式 # mkdir /opt/vms ② 建立虚拟机, 下面展示多种方式建立虚拟机 ########### 使用使用iso来安装 ########### ########### 使用使用nat模式网络###########
########## 安装windows ########
## 不能使用virtio,因为默认windows没有virtio的硬盘和网卡驱动 ③ 安装系统 有三种方式,通过VNC来安装, 通过virt-manager来安装 , 通过console配合ks来安装 Ⅰ. 通过VNC来安装
Ⅱ. 通过virt-manager, 如果你使用xshell那么可以不用安装x window就可以使用virt-manager, 需要安装 x11相关软件 # yum -y install libX11 xorg-x11-server-utils xorg-x11-proto-devel dbus-x11 \ xorg-x11-xauth xorg-x11-drv-ati-firmware xorg-x11-xinit # virt-manager Ⅲ. 通过virt console, 如果你安装时启用了 console可以使用 console来安装, Ctrl+] 可以退出console # virsh console centos63-webtest VI. 通过virt-viewer来安装 # yum -y install virt-viewer xorg-x11-font* # virt-viewer centos63-webtest 二. virsh常见命令解释 1. virsh进入交互模式,在该交互模式下有命令不全补全,详细帮助
三. 克隆 1). 使用virt-manager来克隆,这个太简单了,就不演示了,需要注意的是,如果启用了VNC, 记得更改VNC的端口,否则启动会失败的,见命令方式修改VNC修改 2). 使用命令克隆虚拟机 # virt-clone -o centos63_webtest -n centos63_webtest2 -f /opt/vms/centos_webtest2.img 参数说明: 3). 如果你启用了vnc, 修改配置文件中的vnc端口,否则启动失败,配置文件为 /etc/libvirt/qemu对应实例名字的xml文件,先来一张配置文件解释图,很重要 # cd /etc/libvirt/qemu 4). 启动克隆机器 (有的Linux版本可能生成的网卡有问题,请修改 /etc/udev/rules.d/70-persistent-cd.rules, 重启虚拟机) # virsh start centos63_webtest1 四. 快照 快照相信大家都知道是什么意思,如果不知道,亲去补补课吧,kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。 要使用镜像功能,磁盘格式必须为qcow2。下面开始kvm虚拟机快照的过程。 1). 查看磁盘格式 # qemu-img info /opt/vms/centos63-119.22.img 2). 如果不是qcow2需要关机转换磁盘格式,如果是请跳过 # cp centos63-119.22.img centos63-119.22.raw 3). 启动vm, 建立快照,以后可以恢复 # virsh start centos63-119.22 4). 快照位置 快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机实例名称/下 5). 恢复快照,可以建立一些测试文件,准备恢复 先将虚拟机关闭,查看快照名称,然后恢复快照 # ls /var/lib/libvirt/qemu/snapshot/centos63-119.22 6). 删除快照 # qemu-img info centos63-119.22 五. 让已安装的虚拟机GuestOS支持 virsh console virsh console vmname 可以进入到vm的console模式,但是有时只显示链接到vm,提示如下,回车没有反应,这是因为guestos不支持console,下面来启用guestos的console Connected to domain centos63-119.22 1). 修改grub.conf,给内核传递参数 console=ttyS0 # vim /etc/grub.conf 2). 在/etc/inittab中添加agetty # echo "S0:12345:respawn:/sbin/agetty ttyS0 115200" >> /etc/inittab 3). 添加到/etc/securetty # echo "ttyS0" >> /etc/securetty 4). 重启GuestOS 六. 添加网卡 线上服务器是双网卡,一个走内网,一个走外网,我们也需要虚拟机这么来工作,但是初始安装虚拟机的时候没有指定两个网卡,这样需要我们来添加一个网卡了,比如说我们已经将br1桥接到em2了,如果不会见刚开始br0桥接em1 1). 通过virt-manager来添加 简单说一下 选中虚拟机 -- Open -- Details – AddHardware 选择网卡模式,mac不要重复,确定即可 2). 通过命令来添加 Ⅰ. 使用virsh attach-interface命令为虚拟机添加网卡 # virsh attach-interface centos63-119.23 --type bridge --source br1 --model virtio Ⅱ. 导入配置文件并覆盖原来的, 因为attach-interface添加后,只是在虚拟机中生效了,配置文件并没有改变 # cd /etc/libvirt/qemu Ⅲ. 修改GuestOS中网卡配置文件,为另一个网卡配置IP # cd /etc/sysconfig/network-scripts Ⅳ. 重启网卡 七. 硬盘扩容 原来的/opt目录随着使用,空间渐渐满了,这时候我们就需要给/opt的挂载分区扩容了,有两种情况 1. 该分区是lvm格式 2. 不是lvm格式,且不是扩展分区 1). 分区是lvm格式 这种很简单,添加一块磁盘,lvm扩容 virt-manager添加方式和添加网卡一样,不再赘述,下面是使用命令来添加 Ⅰ. 建立磁盘,并附加到虚拟机中 # qemu-img create -f raw 10G.img 10G 说明: Ⅱ. 导出并覆盖原来的配置文件,和网卡一样,attach后只是在虚拟机中生效 # virsh dumpxml centos63-119.23 > centos63-119.23.xml Ⅲ. 使用lvm在线扩容,详见 http://www.cnblogs.com/cmsd/p/3964118.html 2). 分区不是lvm格式,该分区不是扩展分区, 需要关机离线扩展 Ⅰ. 新建一个磁盘,大于原来的容量,比如原来是40G,你想对某个分区扩容20G那么 # qemu-img create -f qcow2 60G.img 60G Ⅱ. 备份原来的磁盘,以防三长两短 # cp centos63-119.27.img centos63-119.27.img.bak Ⅲ. 查看原来的磁盘决定扩容哪一个分区 # virt-filesystems --partitions --long -a centos63-119.27.img Ⅳ. 扩容GuestOS的sda2 # virt-resize --expand /dev/sda2 centos63-119.27.img 60G.img 说明: Ⅴ. 使用新磁盘启动 # mv 60G.img centos63-119.27.img virt-resize其实就是将原来磁盘中的文件复制到新的文件中,讲想要扩大的分区扩大了
八. 动态迁移 用过vSphere 或者 xenserver的都知道动态迁移,最大程度上减少宕机时间 , 比如将正在运行在A上的虚拟机不关机迁移到B上,会将原来虚拟机的内存,CPU状态等迁移到新的主机上,动态迁移需要一些条件 1. 该虚拟机使用共享存储,在两台主机上的位置一样 比如 A,B都讲C的 /opt/vms 挂载到了自己的/opt/vms中,A,B对nfs可读可写,虚拟机在共享存储中 2. 目标主机最好与源主机型号一样,或者CPU支持的指令集更多 3. 目标主机CPU,内存充足 4. 能通过root用户ssh连接到目的主机上 5. hostname和ip解析一致, 迁移是通过hostname的,修改/etc/hosts,可以ping通对方的Hostname 下面来迁移试试,假设上述条件都满足, nfs已经挂载,如果nfs不会请google如何建立nfs 1). 使用virt-manager来迁移 简单来说 File – Add Connect -- 填写对方的ip,用户名,密码, 然后右击虚拟机,Migrate 注. 由于原来的22没有建在共享存储上,新建了一个29的虚拟机来完成迁移的,切记 hostname要和ip对应, 虚拟机存储是共享存储
2). 通过命令来动态迁移 # virsh migrate centos63-119.27 --live qemu+ssh://192.168.119.11:9741/system –unsafe 说明:
--live 动态迁移 qemu+ssh ssh的方式 --unsafe 强制迁移,即使可能出现问题 先写到这里吧,一些基本的用得到的都写了一下, 感谢您有耐心看到这里, 写个博客确实不容易,livewriter写的文章,传到博客上格式全变了,囧,凑合看吧, 亲随手给个赞, 希望能帮的到您, 有问题可以给我留言或者发邮件给我 ibuler@qq.com, 本文出自 “Free Linux, Share Linux” 博客,请务必保留此出处http://laoguang.blog.51cto.com/6013350/1551379 |
|