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机上做的。

 

转载于:https://www.cnblogs.com/createyuan/p/3741479.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值