Centos 7下部署kvm (qemu)

August 1st, 2016 Leave a comment Go to comments

上周抢到了一台Kimsufi的KS-3C特价独服,i3-2130 CPU, 8GB内存, 2TB硬盘,月付8.99欧元。性价比非常高,终于不用和其他人挤在一起啦!唯一的缺点就是无论法国还是加拿大机房,对中国的延迟都太高了,普遍300ms往上。不过实际页面打开速度还不错,加了锐速后速度更上一层楼,而且全国ping超时也不严重,所以准备长期持有做站。

不过这个配置的独服,就建几个博客太浪费,但是只有一个IP,想挂机都不给力。正好手上还有几个小内存vps,于是想到了在独服这里开几个NAT vps,然后通过那几台小内存vps上的代理挂机。这里把我创建虚拟机(vps)的过程记录下来,供大家参考。

首先安装相关软件:

启动服务:

接着就可以用virt-install工具,制作虚拟机实例:

几个参数的解释
–name: 顾名思义,虚拟机的名字。这个随便取的
–ram: 分配给这台虚拟机的内存,可以指定768M或者2G这种,不加单位就是M
–cdrom: 系统安装盘的iso文件,这里安装的是centos 6.8 minimal系统
–disk: 将要做成的虚拟机硬盘路径,以及大小(预分配),以G为单位
–graphics: 虚拟机的视频输出,这里让其输出到vnc
最后的–os-variant,这里因为要安装centos 6所以指定为rhel6。

上述命令回车后可能会出现下面的错误:

不要慌,解决方法是修改/etc/fstab,找到devpts那行,改成下面这个后重启服务器:

顺便提一下,如果装的是windows,则使用下列命令:

注意最后的–video参数,是安装win7时必须指定的,否则会卡在windows徽标处。

OK,现在centos安装程序应该被启动了。通过命令获得它监听的端口

在本地开一个VNC客户端,连接独服的5900端口。如果是:1的话,则是5901端口,以此类推。
连上去以后,就能看到熟悉的centos 6的文本安装界面了,简单地设定一下,虚拟机重启完成了安装。
然而此时虚拟机关机后并不会自动重启,所以我们还得手动敲入命令启动……

重新通过VNC连上虚拟机,root用户登录,执行一下ifup eth0,会自动分配NAT IP给虚拟机,可以访问外网啦!
为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行acpid服务:

OK,到这里kvm虚拟机的创建就大功告成,后面随便你怎么折腾吧!附上几个常用命令,按惯例,VM0、VM1为虚拟机名。
1、启动虚拟机
virsh start VM0

2、关闭虚拟机(虚拟机是Linux的话需要启动acpid才有效)
virsh shutdown VM0

3、强行终止虚拟机
virsh destroy VM0

4、删除虚拟机
virsh undefine VM0
然后rm掉对应的虚拟硬盘文件。

5、克隆虚拟机

附上一个探针截图看看效果(开了5个虚拟机):
Running_5_VMs

附送一个优化虚拟机IO的小Tips:
可能你会发现稍微开多几个虚拟机,Host的系统负载就会狂飙,就像上图那样。实际上我达到过70几的负载,整个虚拟机都卡得动不了。
这时就需要修改虚拟机的配置文件,给虚拟硬盘加几个io相关的参数。下面以VM0为例:

执行上述命令后,就进入了VM0的配置文件。找到下面这段,往硬盘的driver标签中加入下文的cache和io属性。

对所有虚拟机都做同样改动。然后启动虚拟机,会发现系统负载下来了好多。

References:
[1] http://docs.openstack.org/zh_CN/image-guide/content/virt-install.html
[2] https://linux.dell.com/files/whitepapers/KVM_Virtualization_in_RHEL_7_Made_Easy.pdf
[3] https://raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html
[4] http://serverfault.com/questions/407842/incredibly-slow-kvm-disk-performance-qcow2-disk-files-virtio

本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: Centos 7下部署kvm (qemu)
  1. No comments yet.