01 kvm技术基础


配置环境:

node1 192.168.1.121 CentOS release 6.7

1、KVM安装

#确保CPU支持HVM

[root@node1 ~]# grep -E --color=auto "(vmx|svm)" /proc/cpuinfo


#装载模块

[root@node1 ~]# modprobe kvm

[root@node1 ~]# modprobe kvm-intel


[root@node1 ~]# yum grouplist | grep -i 'virtualization'





[root@node1 ~]# yum install qemu-kvm -y 
 [root@node1 ~]# ln -sv /usr/libexec/qemu-kvm /usr/bin/qemu-kvm


02 使用qemu-kvm管理kvm虚拟机


配置环境:

node1 192.168.1.131 CentOS Linux release 7.2


1、KVM安装


[root@node1 ~]# modinfo kvm
[root@node1 ~]# modinfo kvm-intel
[root@node1 ~]# modinfo kvm-amd
[root@node1 ~]# modprobe kvm
[root@node1 ~]# lsmod | grep kvm
kvm_intel             162153  0 
kvm                   525259  1 kvm_intel

#确保CPU支持HVM
[root@node1 ~]# grep -E "(vmx|svm)" /proc/cpuinfo
[root@node1 ~]# yum install qemu-kvm -y
[root@node1 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/

[root@node1 ~]# qemu-img info cirros-no_cloud-0.3.0-i386-disk.img 
p_w_picpath: cirros-no_cloud-0.3.0-i386-disk.img
file format: qcow2
virtual size: 39M (41126400 bytes)
disk size: 11M
cluster_size: 65536
Format specific information:
    compat: 0.10


#启动虚拟机 
[root@node1 ~]# qemu-kvm -m 128 -smp 2 -name "test" -hda cirros-no_cloud-0.3.0-i386-disk.img

#安装vnc
[root@node1 ~]# yum install tigervnc

#连接至打开的虚拟机
[root@node1 ~]# vncviewer :5900

[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name "test" -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback

[root@node1 ~]# mkdir -p /p_w_picpaths/windows
[root@node1 ~]# qemu-img -o ? -f qcow2 /p_w_picpaths/windows/winxp.qcow2
[root@node1 ~]# qemu-img create -o size=20G,preallocation=metadata -f qcow2 /p_w_picpaths/windows/winxp.qcow2
[root@node1 ~]# qemu-kvm -m 512 -smp 2 -cpu host -driver file=/p_w_picpaths/windows/winxp.qcow2,media=disk -driver file=/root/winxp_ghost.iso media=cdrom order=dc,once=d

03 使用qemu-kvm管理kvm虚拟机

[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name "test" -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -vnc 192.168.1.131:1,password -monitor stdio
[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name "test" -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic  -monitor stdio


1、管理桥设备

#添加桥

[root@node1 ~]# brctl addbr br0
[root@node1 ~]# ifconfig -a
br0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 32:5c:c1:7e:42:c7  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.131  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe50:27c4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:50:27:c4  txqueuelen 1000  (Ethernet)
        RX packets 17736  bytes 9576805 (9.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13771  bytes 9831475 (9.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node1 ~]# brctl stp br0 off
#显示桥
[root@node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
#删除桥
[root@node1 ~]# brctl delbr br0 

#激活桥
[root@node1 ~]# ifconfig br0 up

[root@node1 ~]# ip link  set dev br0 down
[root@node1 ~]# ip link  set dev br0 up

[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name "test" -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic  -net nic -net tap,name=vif0.0,script=no

[root@node1 ~]# vim /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
[root@node1 ~]# chmod +x /etc/qemu-ifup
[root@node1 ~]# vim /etc/qemu-ifdown
 #!/bin/bash
 #
 bridge=br0
 if [ -n "$1" ];then
 brctl delif $bridge $1
 ip link set $1 down
 exit 0
 else
 echo "Error: no interface specified."
 exit 1
 fi 
[root@node1 ~]# chmod +x /etc/qemu-ifdown

[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name test -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic -net tap,ifname=vif0.0,script=/etc/qemu-ifup
[root@node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.12188d08e408       no              vif0.0

[root@node1 ~]# qemu-kvm -m 128 -cpu host -smp 2 -name test -drive file=cirros-no_cloud-0.3.0-i386-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic -net tap,ifname=vif1.0,script=/etc/qemu-ifup 
[root@node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.12188d08e408       no              vif0.0
                                                        vif1.0
[root@node1 ~]# ip link add veth1.0 type veth peer veth1.1
[root@node1 ~]# ip link set veth0 up
[root@node1 ~]# ip link set veth1.0 up
[root@node1 ~]# brctl addif br0 veth1.0
[root@node1 ~]# ifconfig veth0 172.16.100.67/24


04 使用qemu-kvm管理kvm虚拟机

[root@node1 ~]# mkdir /p_w_picpaths/centos
[root@node1 ~]# qemu-img create /p_w_picpaths/centos/centos6.img -o size=120G,preallocation=metadata -f qcow2

[root@node1 ~]# qemu-kvm -m 512 -smp 2 -name centos -drive file=/p_w_picpaths/centos/centos6.img,media=disk -net nic,macaddr=52:54:00:55:32:19 -net tap,ifname=centos6.0,script=/etc/qemu-ifup -boot order=nc,once=n

[root@node1 ~]# qemu-kvm -m 512 -smp 2 -name centos -drive file=/p_w_picpaths/centos/centos6.img,media=disk,if=virtio -net nic,model=virtio,macaddr=52:54:00:55:32:19 -net tap,ifname=centos6.0,script=/etc/qemu-ifup -boot order=nc,once=n



转载于:https://blog.51cto.com/sihua/1887065