黑帽联盟

 找回密码
 会员注册
查看: 2005|回复: 0
打印 上一主题 下一主题

[资源教程] kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)

[复制链接]

295

主题

18

听众

965

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    昨天 21:54
  • 签到天数: 371 天

    [LV.9]以坛为家II

    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.png

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

    modprobe kvm
    modprobe kvm-intel

    2. 查看是否已经加载这两个模块

    lsmod | grep kvm

    112.png

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

    yum install qemu-kvm -y

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

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

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

    111.png


    以上是准备工作,这里我们先不去创建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镜像,进去,速度很快,如有需要,自己下载
           下载地址: cirros-0.3.6-x86_64-disk.img (14.56 MB, 下载次数: 0)

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

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

    • 输入ifconfig查看ip
           115.png

    • 接下来我们复制一份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
           116.png

    • 修改ip地址,把192.168.2.2修改成192.168.2.1,最后重启机器
           117.png

           118.png

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

           120.png


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

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

           121.png


           122.png

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


           124.png


    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通物理机一个网段的其它物理机器)

           125.png


    桥接模型(直接通过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(这里我只修改其中一台虚拟机,另外一台就不修改测试了)


           126.png

    • 修改完机器,重启机器,验证一下

           127.png


    下面正式安装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

    • 最后按照以下的步骤去操作,很简单
           128.png

           129.png

           130.png

           131.png

           132.png

           133.png

           134.png

           135.png

           136.png

           137.png

           138.png

           139.png

           140.png

           141.png

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

           142.png

    • 重启网路,并测试

           143.png

           144.png


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



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

    kvm详解介绍:https://blog.csdn.net/hejin_some/article/details/72673192
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部