rewewe 发表于 2017-2-23 09:21:25

KVM虚拟化配置管理

KVM虚拟化的特性
嵌入到linux正式kernel,提供兼容性
代理级资源调用,提供性能
虚拟机就是一个进程,内存易于管理
可以实现服务器虚拟化桌面虚拟化 应用虚拟化

下面开始安装和配置管理KVM
查看系统版本、内核版本
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
# uname -r
3.10.0-327.el7.x86_64

查看系统是否支持KVM虚拟化

开启cpu虚拟化才可以查看上面支持虚拟化的标志


kvm安装
# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y
qemu-kvm是用户态的一个程序


创建一台虚拟机--磁盘
# qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 10G
Formatting '/opt/CentOS-7.2-x86_64.raw', fmt=raw size=10737418240

# lsmod |grep kvm
kvm_intel             1621530
kvm                   5252591 kvm_intel

添加到开机启动
# systemctl enable libvirtd.service

启动
# systemctl start libvirtd.service
# systemctl status libvirtd.service
a— libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running)


安装一台虚拟机
创建虚拟机的镜像--iso
# dd if=/dev/cdrom of=/opt/CentOS-7.2.iso
8456192+0 records in
8456192+0 records out
4329570304 bytes (4.3 GB) copied, 222.565 s, 19.5 MB/s


开始安装
# virt-install --help
# virt-install --name CentOS-7.2-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.2.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole


# ps -aux |grep kvm
root       8020.00.0      0   0 ?      S<   07:16   0:00
qemu      3349 17.4 80.2 1490228 702752 ?      Sl   07:46   5:53 /usr/libexec/qemu-kvm


# netstat -lnptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address         Foreign Address         State       PID/Program name   
tcp      0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      3349/qemu-kvm



创建虚拟机后,使用vnc链接 开始安装KVM虚拟机
192.168.1.111:5900



然后启动kvm
# virsh start CentOS-7.2-x86_64
Domain CentOS-7.2-x86_64 started

# virsh list
Id    Name                           State
----------------------------------------------------
2   CentOS-7.2-x86_64            running



KVM使用
# cd /etc/libvirt/qemu/
# ls
CentOS-7.2-x86_64.xmlnetworks

CentOS-7.2-x86_64.xml #虚拟机的配置文件



# virsh list
Id    Name                           State
----------------------------------------------------

# virsh list --all   #查看所有的虚拟机
Id    Name                           State
----------------------------------------------------
-   CentOS-7.2-x86_64            shut off


# ifconfig virbr0   安装kvm后会产生一个virbr0的网卡
virbr0: flags=4099<UP,BROADCAST,MULTICAST>mtu 1500
      inet 192.168.122.1netmask 255.255.255.0broadcast 192.168.122.255
      ether 00:00:00:00:00:00txqueuelen 0(Ethernet)
      RX packets 0bytes 0 (0.0 B)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 1bytes 42 (42.0 B)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0


# iptables -t nat -nvL    这里可以看到这个虚拟机安装完后是可以通信的,通过nat上网
Chain POSTROUTING (policy ACCEPT 5 packets, 268 bytes)
pkts bytes target   prot opt in   out   source               destination         
    0   0 RETURN   all--*      *       192.168.122.0/24   224.0.0.0/24      
    0   0 RETURN   all--*      *       192.168.122.0/24   255.255.255.255   
    0   0 MASQUERADEtcp--*      *       192.168.122.0/24    !192.168.122.0/24   masq ports: 1024-65535
    0   0 MASQUERADEudp--*      *       192.168.122.0/24    !192.168.122.0/24   masq ports: 1024-65535
    0   0 MASQUERADEall--*      *       192.168.122.0/24    !192.168.122.0/24

生产是将kvm的网卡改成物理机的桥接网卡上网,跟物理机同一个网段


vnc连接进去后把他的网卡设置为开机启动,然后重启网卡,此时ping百度也是通的
ONBOOT=yes   #这样子kvm网卡就可以开机启动dhcp获取到一个ip地址

# ps -aux |grep dns   #kvm是通过dnsmasq分配的一个ip地址
nobody    28200.00.015544   344 ?      S    07:16   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root      28220.00.015516   4 ?      S    07:16   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root      79130.30.1 112648   952 pts/0    S+   09:57   0:00 grep --color=auto dns

打开dnsmasq的配置文件,可以看到他分配的ip地址
# cat /var/lib/libvirt/dnsmasq/default.conf
## dnsmasq conf file created by libvirt
strict-order
pid-file=/var/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254
dhcp-no-override
dhcp-lease-max=253
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts



管理KVM的网卡
#网卡,手动设置为桥接(生产用最多)
brctl命令需要bridge-utils安装这个包

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet 192.168.1.111netmask 255.255.255.0broadcast 192.168.1.255
      inet6 fe80::20c:29ff:fe8a:4320prefixlen 64scopeid 0x20<link>
      ether 00:0c:29:8a:43:20txqueuelen 1000(Ethernet)
      RX packets 72557bytes 13501818 (12.8 MiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 83261bytes 28375563 (27.0 MiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet 192.168.122.1netmask 255.255.255.0broadcast 192.168.122.255
      ether fe:54:00:5d:62:67txqueuelen 0(Ethernet)
      RX packets 2263bytes 124594 (121.6 KiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 3480bytes 9022739 (8.6 MiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0


# brctl addbr br0#添加一个网桥
# brctl show#查看添加的网卡
bridge name   bridge id               STP enabled   interfaces
br0             8000.000000000000       no
virbr0          8000.fe54005d6267       yes             vnet0

# brctl addif br0 eth0#把br0加入到eth0,这样子我连接的物理本机的网络就断了如果单独执行这个操作的话

# brctl addif br0 eth0 && ip addr del dev eth0 192.168.1.111/24 && ifconfig br0 192.168.1.111/24 up && route add default gw 192.168.1.1 && iptables -F

##注释
ip addr del dev eth0 192.168.1.111/24#删除eth0的ip
ifconfig br0 192.168.1.111/24 up   #这样子就可以连接br0这个网卡的ip了,下面需要添加路由才可以连接
route default gw 192.168.1.1 添加路由才可以连接

设置为桥接后变成
# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet 192.168.1.111netmask 255.255.255.0broadcast 192.168.1.255
      inet6 fe80::20c:29ff:fe8a:4320prefixlen 64scopeid 0x20<link>
      ether 00:0c:29:8a:43:20txqueuelen 0(Ethernet)
      RX packets 50bytes 3203 (3.1 KiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 75bytes 5699 (5.5 KiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet6 fe80::20c:29ff:fe8a:4320prefixlen 64scopeid 0x20<link>
      ether 00:0c:29:8a:43:20txqueuelen 1000(Ethernet)
      RX packets 73572bytes 13571497 (12.9 MiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 85141bytes 28514610 (27.1 MiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet 192.168.122.1netmask 255.255.255.0broadcast 192.168.122.255
      ether fe:54:00:5d:62:67txqueuelen 0(Ethernet)
      RX packets 2263bytes 124594 (121.6 KiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 3480bytes 9022739 (8.6 MiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0

kvm常用操作
virsh edit CentOS-7.2-x86_64   #编辑虚拟机配置文件
virsh start CentOS-7.2-x86_64    #启动
virsh shutdown CentOS-7.2-x86_64 #关机
virsh destroy CentOS-7.2-x86_64#直接关闭电源
virsh suspend CentOS-7.2-x86_64#挂起虚拟机
virsh resume CentOS-7.2-x86_64   #恢复
virsh list                       #查看
virsh undefine CentOS-7.2-x86_64 #永久删除虚拟机





mayiwen123456 发表于 2017-2-23 09:59:00

虚拟化,云存储都很强大的样子,学无止境

zzling 发表于 2017-3-1 09:17:55

我搭建好,已经reboot过了,但是是这个错:http://images2015.cnblogs.com/blog/1012270/201703/1012270-20170301013708345-725535934.png ,能帮忙解决一下嘛
页: [1]
查看完整版本: KVM虚拟化配置管理