admin 发表于 2019-11-23 16:14:45

kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)

qemu-kvm参数选项详解:https://bbs.cnblackhat.com/thread-2808-1-1.html

环境:
系统:centos6.7(下面操作,centos7同样也可以)
内核版本:2.6.32-573
IP地址:172.31.225.246
网关:172.31.225.1

要求:
1、创建一个名称为centos6的虚拟机

2、内存512M,2核cpu

3、指定一块磁盘设备

4、指定一块光驱设备

5、以第一块硬盘进行引导,第一次引导使用第一个光驱设备

6、指定vnc监听的ip和桌面号

7、磁盘和网络设备通过半虚拟化的方式模拟,性能更好

8、数据缓存通过回写的方式

9、网络模式


准备工作

0. 由于我的物理机本身就是vmware虚拟出来的虚拟机,所以需要设置它支持虚拟化,如下截图,勾选上即可


1. 加载kvm相关的模块,我这里是intel的,需要加载kvm和kvm-intel模块
modprobe kvm
modprobe kvm-intel

2. 查看是否已经加载这两个模块
lsmod | grep kvm



3. 安装kvm虚拟机相关的管理工具qemu-kvm
yum install qemu-kvm -y

4、安装好之后,默认的qemu-kvm是没有的,红帽把这个命令放到/usr/libexec/qemu-kvm,我们做下软链接


ln -sv /usr/libexec/qemu-kvm /usr/bin

5. 上传光驱设备,放到data目录下



以上是准备工作,这里我们先不去创建centos虚拟机系统,我们通过cirros镜像来给大家演示,cirros一般用来测试,方便简单


[*]下载cirros镜像,我这里使用的是0.3.6,下载地址:http://download.cirros-cloud.net/0.3.6/cirros-0.3.6-x86_64-disk.img
        wget http://download.cirros-cloud.net/0.3.6/cirros-0.3.6-x86_64-disk.img


[*]安装之前,介绍一下网络模型,分为四种网络模型,分别如下:

[*]隔离模型
[*]路由模型
[*]NAT模型
[*]桥接模型


首先先介绍隔离模型(创建的虚拟机可以互相通信,但是无法与物理机器以及外网通信)


[*]创建桥接设备,是通过brctl命令创建的,如果没有这个命令,安装bridge-utils包,yum install bridge-utils -y

       brctl addbr br0


[*]创建虚拟机的时候,我们把虚拟网卡关联到br0设备上,这里我们通过脚本/etc/qemu-ifup实现,脚本如下:
       #!/bin/bash
#
bridge=br0

if [ -n "$1" ];then
        ip link set $1 up
        sleep 1
        brctl addif $bridge $1
        [ $? -eq 0 ] && exit 0 || exit 1
else
        echo "Error: no interface specified."
        exit 1
fi



[*]使用qemu-kvm创建虚拟机,不打开图形窗口,使用参数-nographic(这里的内存以及名称,我自己就自定义了,下面创建centos虚拟机时候,在按照要求来做)
       qemu-kvm -m 128 -smp 2 -name test -drive file=cirros-0.3.6-x86_64-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic,model=virtio,macaddr=52:54:00:12:34:57 -net tap,ifname=vif0.0,script=/etc/qemu-ifup


[*]创建的过程当中,初次进去cirros系统的时候,会很慢,具体原因,之前我总结过,以及解决方法也提供了
       解决方法:https://bbs.cnblackhat.com/thread-2805-1-1.html


[*]这里我提供我自己修改过的cirros镜像,进去,速度很快,如有需要,自己下载
       下载地址:


[*]进入系统之后,默认是没有地址的,我们给它配置地址,可以通过ifconfig临时添加ip,也可以修改配置文件,使其永久生效,这里我修改配置文件/etc/network/interfaces,默认是通过dhcp方式获取ip的,我这里没有安装dhcp,所以通过static的方式获取ip
       vi /etc/network/interfaces
      


[*]保存并重启机器,获取ip,这次进去系统就特别的快
       reboot


[*]输入ifconfig查看ip
      


[*]接下来我们复制一份cirros镜像出来,命名为cirros-0.3.6-x86_64-disk2.img,创建另外一个虚拟机,测试网络下的隔离模式
       cp cirros-0.3.6-x86_64-disk.img cirros-0.3.6-x86_64-disk2.img
       qemu-kvm -m 128 -smp 2 -name test2 -drive file=cirros-0.3.6-x86_64-disk2.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic,model=virtio,macaddr=52:54:00:12:34:58 -net tap,ifname=vif1.0,script=/etc/qemu-ifup
      


[*]修改ip地址,把192.168.2.2修改成192.168.2.1,最后重启机器
      

      


[*]测试网络下的隔离模型,两台虚拟机互ping,都是通的,但是ping物理机器不通,说明已经成功了
      

      


路由模型(虚拟机之间可以互相通信,同时也可以和物理机通信,但是不能和外网进行通信)


[*]在隔离模型基础之上,我们给桥接设备添加上ip地址,ifconfig临时设置ip地址;并把br0的ip地址作为虚拟机的网关即可,修改/etc/network/interfaces

      


      


[*]重启机器,并测试,下图可知,可以和物理机器通信了,但是不能和外网进行通信,这里


      


NAT模型(虚拟机可以互相通信,同时也可以和物理机器,以及外网都可以通信)


[*]在路由模型基础上,在物理机器上设置一条iptables规则即可,NAT表上设置源地址转换,做此操作之前,需要把本机的ip转发功能给打开,不然不成功,这里我就临时打开ip转发功能,仅作演示测试
       echo 1 > /proc/sys/net/ipv4/ip_forward
       iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.31.225.246


[*]在虚拟机上进行测试,截图如下:(可以成功ping通外网了,也可以ping通物理机一个网段的其它物理机器)

      


桥接模型(直接通过br0网卡设备接收虚拟网卡传送来的数据,最后通过物理网卡出去)


[*]把物理网卡上的地址删除,并把物理网卡地址绑定在br0设备上,关联物理网卡设备到br0上,同样这里也是临时设置,就不修改配置文件了
[*]如果你是直接配置桥接模型的,下面这个步骤就跳过;如果你是按照以上步骤操作,先把br0地址给删除了
       ip addr del 192.168.2.254/255.255.255.0 dev br0


[*]然后再继续执行以下步骤
       ip addr del 172.31.225.246/255.255.255.0 dev eth0; brctl addif br0 eth0; ip addr add 172.31.225.246/255.255.255.0 dev br0; route add default gw 172.31.225.1


[*]修改虚拟机的相关信息:IP地址、网关,vim /etc/network/interfaces(这里我只修改其中一台虚拟机,另外一台就不修改测试了)


      


[*]修改完机器,重启机器,验证一下

      


下面正式安装centos操作系统,用光盘安装


[*]使用qemu-img创建一块磁盘设备,保存在data目录下面
       mkdir /data
       qemu-img create -f qcow2 /data/centos6.img -o size=120G,preallocation=metadata


[*]使用qemu-kvm创建虚拟机

       qemu-kvm -m 512 -smp 2 -name centos6 -drive file=/data/centos6.img,if=virtio,media=disk,format=qcow2,cache=writeback -drive file=/data/CentOS-6.7-x86_64-bin-DVD1.iso,media=cdrom -net nic,model=virtio,macaddr=52:54:00:12:34:59 -net tap,ifname=centos6,script=/etc/qemu-ifup -boot order=c,once=d -usbdevice tablet


[*]然后紧接着用vncviewer来连接本地的5900端口,如果没有vncviewer命令的话,安装tigervnc包,yum install tigervnc -y
       vncviewer :5900


[*]最后按照以下的步骤去操作,很简单
      

      

      

      

      

      

      

      

      

      

      

      

      

      


[*]登录进去之后,地址是没有的,因为我的物理机器没有安装配置dhcp,所以需要手动配置网卡,设置成static,修改后的内容如下:

      


[*]重启网路,并测试

      

      


至此centos6系统已经安装成功了,就结束了,原创不易,请保留版权信息


附:对于虚拟机冷迁移和热迁移,以及快照创建恢复等操作,大家可以自行谷歌

kvm详解介绍:https://blog.csdn.net/hejin_some/article/details/72673192
页: [1]
查看完整版本: kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)