• qemu-kvm命令


    三种方式创建虚拟机

    1.qemu-kvm来创建虚拟机

    通过阅读man qemu-kvm手册而清楚的。  于20160430阅读

    [root@kvm1 ~]# /usr/libexec/qemu-kvm -machine help [root@kvm1 ~]# /usr/libexec/qemu-kvm -M ? [root@kvm1 ~]# /usr/libexec/qemu-kvm -cpu help [root@kvm1 ~]# /usr/libexec/qemu-kvm -cpu ? [root@kvm1 ~]# /usr/libexec/qemu-kvm -net nic,model=help qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio centos7 图形界面下创建kvm虚拟机步骤 1.创建一个硬盘文件,三条命令效果一样,dd命令只能创建raw格式盘,不能创建qcow2格式盘 dd if=/dev/zero of=centos.img bs=1M count=10240 qemu-img create -f raw centos7.img 10G qemu-img create -f qcow2 centos65-64.qcow2 10G 2.安装系统,不需要指定显示选项,默认是SDL /usr/libexec/qemu-kvm -boot order=dc -hda centos65-64.qcow2 -cdrom CentOS-6.5-x86_64-minimal.iso -m 512 -smp 2 order=dc The x86 PC uses: a, b (floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p (Etherboot from network adapter 1-4), hard disk boot is the default. To apply a particular boot order only on the first startup, specify it via once. -display sdl|vnc -nographic -curses -vnc :0 -daemonize后台运行 -full-screen 3.启动系统,不加-boot c(这个选项是过时的,不推荐使用)也可以(应该是默认的) /usr/libexec/qemu-kvm -boot c -hda test.img -m 512 & /usr/libexec/qemu-kvm -hda test.img -m 512 & 下面这个也能启动,不过没有启动盘 /usr/libexec/qemu-kvm -m 512

    4.在本机用vinagre去连接localhost:5900,便能安装与查看系统,但此时没有弄网络,所以宿主机与虚拟机互不相通



    centos7 命令行界面下创建kvm虚拟机步骤

    在cs72-minimal下不使用libvirt的方式,还是比较不懂,会创建,但没办法去连接管理来安装os

    yum install qemu-kvm
    yum install mlocate
    ll /var/lib/mlocate/
    updatedb
    locate kvm
    rpm -ql qemu-kvm-common|more
    rpm -ql qemu-kvm|more
    [root@2nd-kvm ~]# /usr/libexec/qemu-kvm -version
    QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-105.el7_2.4), Copyright (c) 2003-2008 Fabrice Bellard
    mkdir /root/iso
    mkdir /root/disk
    cd /root/disk;qemu-img create -f qcow2 cs65.qcow2 10G
    [root@2nd-kvm disk]# /usr/libexec/qemu-kvm
    -boot order=dc
    -hda cs65.qcow2 -cdrom ../iso/CentOS-6.5-x86_64-minimal.iso
    -m 512 -smp 2 -name cs65
    上面这个命令默认在本地启动一个ipv6 vnc连接,并且网络参数默认是-net nic -net user
    [root@localhost ~]# /usr/libexec/qemu-kvm  -boot order=dc -hda cs66.qcow2 -m 1024
    VNC server running on `::1:5900'
    如果在安装系统时不指定相关参数,那么kvm就采用默认的显示-SDL(SDL这个必须有图形界面,就直接弹出一个窗口,等待用户交互安装),默认的网络(-net nic -net user)
    所以就要对显示,网络进行指定参数,满足自己的需要。


    加入这个,监听在ipv4的5900上,不加这个,直接在桌面环境下弹出一个窗口,这就是默认的sdl输出,此时不是vnc
    -display vnc=:0
    -vnc :0 -daemonize后台运行
    上面两个参数的区别是-display是为了兼容xxx,可以看man手册,一般直接用-vnc :0或-spice port=9987,password=1234

    -vga cirrus -vnc :0
    -net bridge -net nic,model=virtio
    -vga qxl -spice port=9987,password=1234  这两个通常连用


    在qemu-kvm命令行中,添加“-nographic”参数可以完全关闭QEMU的图形界面输出,从而让QEMU在该模式下完全成为简单的命令行工具。而QEMU中模拟产生的串口被重定向到了当前的控制台(console)中,所以如果在客户机中对其内核进行配置从而让内核的控制台输出重定向到串口后,就依然可以在非图形模式下管理客户机系统或调试客户机的内核。
    [root@my-host ~]# qemu-system-x86_64 --enable-kvm -m 1024 -smp 2 vm2.img -cdrom /data/nfs/images/CentOS-6.4-x86_64-minimal.iso --nographic -bios /usr/local/share/qemu/bios.bin -append console=ttyS0 -kernel /mnt/isolinux/vmlinuz -initrd /mnt/isolinux/initrd.img


    在命令行直接安装虚拟机
    mount -o loop CentOS-6.5-x86_64-bin-DVD1.iso /mnt
    qemu-img create -f qcow2 cs66.qcow2 8G
    /usr/libexec/qemu-kvm  -boot order=dc -hda cs66.qcow2 -cdrom CentOS-6.5-x86_64-bin-DVD1.iso -m 1024 -nographic -append console=ttyS0 -kernel /mnt/isolinux/vmlinuz -initrd /mnt/isolinux/initrd.img
    kill 掉上面的进程,重启去掉一些参数再如下启动
    /usr/libexec/qemu-kvm  -boot order=dc -hda cs66.qcow2 -m 1024 -nographic

    宿主机是cs72,虚拟机是cs65
    安装好系统之后,先用spice启动
    1.先启动/usr/libexec/qemu-kvm -boot order=dc -hda cs65.qcow2 -m 1024 -spice port=9987,password=1234
    2.windows的spice客户端去连接,进去之后,vi /boot/grub/grub.cfg,在内核行后加入console=ttyS0然后保存关机
    3.再加-nographic参数后启动,/usr/libexec/qemu-kvm -boot order=dc -hda cs65.qcow2 -m 1024 -nographic
    这样就在宿主机本地启动了

    2.用virsh来创建

    [root@2nd-kvm ~]# virsh start cs65
    error: Failed to start domain cs65
    error: Cannot access storage file '/root/disk/cs65.qcow2' (as uid:107, gid:107): Permission denied


    Changing /etc/libvirt/qemu.conf make working things.
    Uncomment user/group to work as root.


    第一步:
    [root@kvm1 kvm]# qemu-img create -f qcow2 win7.qcow2 10G Formatting 'win7.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
    第二步:
    更多参数设置可参考liibvirt官网http://libvirt.org/drvqemu.html#xmlconfig [root@kvm1 kvm]# vi text.xml <domain type='qemu'> <name>win7</name> <uuid></uuid> <memory>2048000</memory> <currentMemory>2048000</currentMemory> <vcpu>1</vcpu> <os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> <boot dev='cdrom'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='localtime'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='cdrom'> <source file='/root/iso/win7.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/kvm/win7.qcow2'/> <target dev='hda' bus='ide'/> </disk> <interface type='bridge'> <source bridge='br0'/> <mac address="00:16:3e:5d:aa:a8"/> </interface> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'/> </devices> </domain>
    第三步: [root@kvm1 kvm]# virsh define test.xml Domain win7 defined from test.xml 如果修改了xml文件,需要以下操作,先撤销再重定义 [root@kvm1 kvm]# virsh undefine win7 Domain win7 has been undefined [root@kvm1 kvm]# virsh define test.xml Domain win7 defined from test.xml [root@kvm1 kvm]# virsh list --all Id Name State ---------------------------------------------------- 2 opensuse running - win7 shut off [root@kvm1 kvm]# virsh start win7 Domain win7 started [root@kvm1 kvm]# virsh vncdisplay win7 :1
    第四步: 用vinagre去连接localhost:5901 登录后能看到操作系统安装的初始界面,开始安装系统,安装完成即表示镜像制作完成 但是出现蓝屏,怀疑machine有问题,不支持win7 <type arch='x86_64' machine='pc'>hvm</type>





    注解:
    virsh shutdown test_ubuntu //关闭虚拟机,如果关闭不了,可以查看http://blog.csdn.net/gg296231363/article/details/6891380
    virsh destory test_ubuntu  //强制关闭虚拟机
    virsh undefine test_ubuntu //删除虚拟机

    kvm环境下可以使用shutdown命令让虚拟机关机,但不生效。
    virsh shutdown vm-name
    由于关机通过acpi电源管理接口来实现的
      3.1 首先配置文件里需要有这个选项
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      3.2 虚拟机内部需要有acpi服务并运行
        Windowns的虚拟机一般情况是默认已安装且运行的
        linux虚拟机例如Ubuntu虚拟机如果没有安装acpi服务,
        先执行apt-get install acpid进行安装并启动该服务,即可让虚拟机响应shutdown命令
     

    3.virt-manager来创建

    [root@kvm1 kvm]# qemu-img snapshot -c cen centos.raw
    qemu-img: Could not create snapshot 'cen': -95 (Operation not supported)
    快照这个功能只支持qcow2格式,raw不支持。其中-c是创建快照,-l是查看快照,-a是恢复快照,-d是删除快照。注意,创建磁盘快照时虚拟机需要处理关闭的状态。
    [root@kvm1 kvm]# qemu-img convert -c -O qcow2 centos.raw centos.qcow2
    [root@kvm1 kvm]# qemu-img snapshot -c centos-ori centos.qcow2
    [root@kvm1 kvm]# qemu-img snapshot -l centos.qcow2
    Snapshot list:
    ID        TAG                 VM SIZE                DATE       VM CLOCK
    1         centos-ori                0 2016-05-02 19:23:24   00:00:00.000
    [root@kvm1 kvm]# qemu-img snapshot -a 1 centos.qcow2
    qemu-img: Could not open 'centos.qcow2': Could not read snapshots: File too large
    有两种解决办法
    升级qemu-img为1.7以上,
    或者因为centos.qcow2是从raw转换过来的,如果直接创建的是qcow2格式的,可能不会有这个问题(可以试一试)


    各部分所对应的包

    1.http://linux-kvm.org/
    kvm阵营。
    命令名qemu-kvm---同名包名或qemu-img---同名包名
    安装qemu-kvm或者kvm,它们是kvm内核的用户空间工具

    2.http://libvirt.org/index.html
    libvirt阵营。
    命令名virsh---包名libvirt-client
    命令名libvirtd---包名libvirt-daemon

    3.https://virt-manager.org/
    virt-manager阵营。
    命令名virt-manager---同名包名
    命令名virt-install---包名在6和7下不一样

    virt-install是rpm包python-virtinst里的一个工具,其实就是一个python写的脚本。它是qemu-kvm工具的人性化实现。可以利用该工具在终端下创建KVM guest主机。
    centos6.5下面是这个包
    python-virtinst
    [root@localhost ~]# rpm -ql  python-virtinst|more
    /usr/bin/virt-clone
    /usr/bin/virt-convert
    /usr/bin/virt-image
    /usr/bin/virt-install
    centos7下面是这个包
    virt-install
    [root@kvm1 ~]# rpm -ql virt-install
    /usr/bin/virt-clone
    /usr/bin/virt-install
    /usr/bin/virt-xml


    4.加载网桥模块和kvm模块
    http://wiki.libvirt.org/page/Networking    桥网络相关设置

    [root@localhost ~]# lsmod |grep brid
    [root@localhost ~]# modprobe bridge
    [root@localhost ~]# lsmod |grep brid
    bridge                 83177  0
    stp                     2218  1 bridge
    llc                     5546  2 bridge,stp
    [root@localhost ~]# lsmod |grep kvm
    [root@localhost ~]# modprobe kvm
    [root@localhost ~]# lsmod |grep kvm
    kvm                   333172  0

    brctl addbr br0
    #> ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:CC:D0:99:EB:26
              inet6 addr: fe80::2b0:d0ff:fe99:eb26/64 Scope:Link
              UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
              RX packets:86208855 errors:0 dropped:0 overruns:63 frame:0
              TX packets:77098217 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:3871506445 (3692.1 Mb)  TX bytes:266311184 (253.9 Mb)
              Interrupt:5 Base address:0xec00
    eth1      Link encap:Ethernet  HWaddr 00:CC:03:D8:3A:1A
              inet6 addr: fe80::201:3ff:fed8:3a1a/64 Scope:Link
              UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
              RX packets:77087614 errors:0 dropped:0 overruns:0 frame:0
              TX packets:85110321 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:264995582 (252.7 Mb)  TX bytes:3672580334 (3502.4 Mb)
              Interrupt:9 Base address:0xec80
    /etc/sysconfig/networking-scripts/ifcfg-eth0:
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=static

    /etc/sysconfig/networking-scripts/ifcfg-eth1:
    DEVICE=eth1
    ONBOOT=yes
    BOOTPROTO=static

    #> brctl addif br0 eth0
    #> brctl addif br0 eth1
    #> ip link set br0 up
    #> ip addr add 10.1.1.18/16  dev br0
    #> route add default gw 10.1.1.1 dev br0
    #> brctl show
    bridge name  bridge id          STP enabled  interfaces
    br0          8000.0030843e5aa2  no            eth0
                                                       eth1

    ip addr help

    ip link set dev br0 down

    centos7桌面安装好后
    网络桥接三步走,接着创建disk与iso目录,接着传iso,接着用virt-manager来建虚拟机就完事了。 [root@kvm1 img]# vi /etc/sysconfig/network-scripts/ifcfg-eno1 TYPE=Ethernet DEVICE=eno1 ONBOOT=yes BRIDGE=br0 [root@kvm1 img]# vi /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge
    DEVICE=br0
    ONBOOT=yes
    IPADDR=192.168.10.199
    PREFIX=24
    GATEWAY=192.168.10.6
    DNS1=8.8.8.8 service network restart与 systemctl restart NetworkManager没用 用下面的就可以了 systemctl restart network

    另外,在RHEL系列系统中最好将NetworkManager这个程序结束掉,因为它并不能管理bridge的网络配置,反而它在后台运行则可能对网络设置有些干扰。
    http://smilejay.com/2012/08/kvm-bridge-networking/
    设置linux让网桥运行    配置网桥
    
    1.我们需要让linux知道网桥,首先告诉它,我们想要一个虚拟的以太网桥接口:(这将在主机bridge上执行,不清楚的看看测试场景)
    root@bridge:~> brctl addbr br0
    2.其次,我们不需要STP(生成树协议)等。因为我们只有一个路由器,是绝对不可能形成一个环的。我们可以关闭这个功能。(这样也可以减少网络环境的数据包污染):
    root@bridge:~> brctl stp br0 off
    3.经过这些准备工作后,我们终于可以做一些立竿见影的事了。我们添加两个(或更多)以太网物理接口,意思是:我们将他们附加到刚生成的逻辑(虚拟)网桥接口br0上。
    root@bridge:~> brctl addif br0 eth0
    root@bridge:~> brctl addif br0 eth1
    4.现在,原来我们的两个以太网物理接口变成了网桥上的两个逻辑端口。那两个物理接口过去存在,未来也不会消失。要不信的话,去看看好了。.现在他们成了逻辑网桥设备的一部分了,所以不再需要IP地址。下面我们将这些IP地址释放掉
    root@bridge:~> ifconfig eth0 down
    root@bridge:~> ifconfig eth1 down
    root@bridge:~> ifconfig eth0 0.0.0.0 up
    root@bridge:~> ifconfig eth1 0.0.0.0 up
    
    好了!我们现在有了一个任何IP地址都没有的box w/o了。好了,这下如果你想通过TP配置你的防火墙或路由器的话,你就只能通过本地的控制端口了。你不会告诉我你的机器上连串行端口都没有吧?
    注:上面红色部分其实是可选的,在试验中,我发现,就算不把原有的网卡地址释放掉,网桥也能工作!但是,为了更规范,或者说
    为了避免有什幺莫名其妙的问题,最好还是按要求做,执行这四步吧!
    
    5.最后,启用网桥root@bridge:~> ifconfig br0 up
    可选:    我们给这个新的桥接口分配一个IP地址
    root@bridge:~> ifconfig br0 10.0.3.129
    或者把最后这两步合成一步:
    root@bridge:~> ifconfig br0 10.0.3.129 up
     
    关闭网桥命令
         brctl delif ena eth1;
         brctl delif ena eth0;
         ifconfig ena down;
         brctl delbr ena;

    kvm管理工具之webvirtmgr

    webvirtmgr管理kvm工具,只有web界面。

    http://www.linux-kvm.org/page/Management_Tools
    WebVirtMgr     Web service for managing VMs based on the KVM     WEB     Active     Only KVM; use libvirt     Apache License v2

    https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr

    下面是在管理机上做的
      271  yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
      272  yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
      274  yum -y install gcc python-devel
      388  pip install numpy



      279  git clone git://github.com/retspen/webvirtmgr.git
      279  cd webvirtmgr
      285  less requirements.txt
      286  pip install -r requirements.txt
      287  ./manage.py syncdb
      288  ./manage.py collectstatic
      352  mv webvirtmgr/ /var/www/


      296  vi /etc/nginx/conf.d/webvirtmgr.conf
      306  vi /etc/nginx/nginx.conf
      311  getenforce
      312  setenforce 0
      315  chkconfig supervisord on
      316  systemctl status supervisord
      317  systemctl start nginx
      318  systemctl status nginx

      358  ssh root@192.168.10.115:8000 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
      360  chown -R nginx:nginx /var/www/webvirtmgr
      365  vi /etc/supervisord.d/webvirtmgr.ini

    下面是在kvm机上做的。

  • 相关阅读:
    addChildViewController ipad 中Controller的嵌套和叠加
    Oracle中sign函数和decode函数的使用
    MapReduce调度与执行原理之任务调度
    [置顶] SOLR 4.4 部署
    [笔试] 怪物安全问题
    优先队列的使用——Expedition
    棋盘分割——维数较大的动态规划
    由DAG到背包问题——记忆化搜索和递推两种解法
    硬币问题——记忆化搜索与递推的转换
    DAG上的动态规划---嵌套矩形(模板题)
  • 原文地址:https://www.cnblogs.com/createyuan/p/3741479.html
Copyright © 2020-2023  润新知