53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt

[[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y

[[email protected] ~]# yum -y install qemu-kvm

[[email protected] ~]# systemctl start libvirtd.service

#创建桥

[[email protected] ~]# virsh iface-bridge eno16777736 br0 --no-stp

[[email protected] ~]# systemctl restart network.service 

[[email protected] ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

br0             8000.000c29ba0d2f       no              eno16777736

virbr0          8000.52540067a9f3       yes             virbr0-nic

#创建虚拟机

[[email protected] ~]# virt-manager

02 使用virsh管理kvm虚拟机

[[email protected] ~]# yum -y install virt-viewer

[[email protected] ~]# mkdir /images/centos -p

[[email protected] ~]# virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,size=120,format=qcow2,bus=virtio,sparse=yes --network bridge=br0,model=virtio --force

[[email protected] ~]# virsh list

 Id    名称                         状态

----------------------------------------------------

 3     centos6.7                      running

 [[email protected] ~]# virt-viewer 3

 

 #强制关机

 [[email protected] ~]# virsh destroy 1

[[email protected] ~]# ls /etc/libvirt/qemu

centos6.7.xml  networks

#根据xml文件创建虚拟机

[[email protected] ~]# virsh create /etc/libvirt/qemu/centos6.7.xml 

域 centos6.7 被创建从 /etc/libvirt/qemu/centos6.7.xml

#创建的虚拟机已经运行了

[[email protected] ~]# virsh list

 Id    名称                         状态

----------------------------------------------------

 2     centos6.7                      running

 

 #删除虚拟机

 [[email protected] ~]# virsh undefine centos6.7 --remove-all-storage

域 centos6.7 已经被取消定义

已删除卷 ‘vda‘(/images/centos/centos6.7.qcow2)。

[[email protected] ~]# virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,size=120,format=qcow2,bus=virtio,sparse=yes --network bridge=br0,model=virtio --force --nographics

[[email protected] ~]# virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,size=120,format=qcow2,bus=virtio,sparse=yes --network bridge=br0,model=virtio --force --graphics vnc

[[email protected] ~]# mkdir /images/cirros

[[email protected] ~]# mv cirros-no_cloud-0.3.0-i386-disk.img /images/cirros/

#试运行操作

[[email protected] ~]# virt-install -n cirros -r 128 --disk /images/cirros/cirros-no_cloud-0.3.0-i386-disk.img  --import --dry-run

WARNING  未检测到操作系统虚拟机性能可能会受到影响。使用 --os-variant 选项指定操作系统以获得最佳性能。

试运行成功完成

[[email protected] ~]# virt-install -n cirros -r 128 --disk /images/cirros/cirros-no_cloud-0.3.0-i386-disk.img  --import 

[[email protected] ~]# virt-install -n cirros -r 128 --vcpus=1,maxvcpus=4 --disk /images/cirros/cirros-no_cloud-0.3.0-i386-disk.img --network bridge=br0,model=virtio  --import --serial=pty --console=pty --nographics      

#创建磁盘映像文件

[[email protected] ~]# qemu-img create -f qcow2 -o size=20G,preallocation=metadata /images/cirros/second.qcow2

#查看磁盘映像文件信息

[[email protected] ~]# qemu-img info /images/cirros/second.qcow2 

image: /images/cirros/second.qcow2

file format: qcow2

virtual size: 20G (21474836480 bytes)

disk size: 4.1M

cluster_size: 65536

Format specific information:

    compat: 1.1

    lazy refcounts: false

#把新增磁盘添加到正在运行的虚拟机上

[[email protected] ~]# virsh attach-disk 8 /images/cirros/second.qcow2 vda --targetbus virtio

成功附加磁盘

#拆除正在运行的虚拟机上的硬盘

[[email protected] ~]# virsh detach-disk 8 vda

成功分离磁盘

#向虚拟机上添加网络接口

[[email protected] ~]# virsh attach-interface 8 bridge virbr0

成功附加接口

#拆除虚拟机上网络接口

[[email protected] ~]# virsh detach-interface 8 bridge --mac 52:54:00:E7:4D:25

成功分离接口

#查看虚拟机的定义信息

[[email protected] ~]# virsh dumpxml cirros

#查看域CPU个数

[[email protected] ~]# virsh vcpucount 8

最大值    配置         4

最大值    live           4

当前       配置         1

当前       live           1

#查看域CPU信息

[[email protected]e1 ~]# virsh vcpuinfo 8 

VCPU:           0

CPU:            1

状态       running

CPU 时间   111.0s

CPU关系:      yyyy

#配置域中vcpu

[[email protected] ~]# virsh setvcpus 8 2

[[email protected] ~]# virsh vcpuinfo 8  

VCPU:           0

CPU:            0

状态       running

CPU 时间   111.5s

CPU关系:      yyyy

VCPU:           1

CPU:            0

状态       running

CPU关系:      yyyy

#查看域磁盘位置

[[email protected] ~]# virsh domblklist 8

目标     源

------------------------------------------------

hda        /images/cirros/cirros-no_cloud-0.3.0-i386-disk.img

#查看域网络信息

[[email protected] ~]# virsh domiflist 8

接口     类型     源        型号      MAC

-------------------------------------------------------

vnet0      bridge     br0        virtio      52:54:00:c1:01:14

#查看域信息

[[email protected] ~]# virsh dominfo 8

Id:             8

名称       cirros

UUID:           fc2c006f-f336-47cd-a6d8-b5f474167b88

OS 类型    hvm

状态       running

CPU          2

CPU 时间   124.5s

最大内存 131072 KiB

使用的内存 131072 KiB

持久       是

自动启动 禁用

管理的保存 否

安全性模式 none

安全性 DOI 0

#显示节点信息物理机

[[email protected] ~]# virsh nodeinfo

CPU 型号        x86_64

CPU               4

CPU 频率        2128 MHz

CPU socket        1

每个 socket 的内核数 4

每个内核的线程数 1

NUMA 单元       1

内存大小      8388084 KiB

#显示URI

[[email protected] ~]# virsh uri

qemu:///system

#显示版本号

[[email protected] ~]# virsh version

根据库编译libvirt 2.0.0

使用库libvirt 2.0.0

使用的 API: QEMU 2.0.0

运行管理程序: QEMU 1.5.3

#列出接口

[[email protected] ~]# virsh iface-list

 名称               状态     MAC 地址

---------------------------------------------------

 br0                  活动     00:0c:29:ba:0d:2f

 lo                   活动     00:00:00:00:00:00

 

 #列出过滤器

 [[email protected] ~]# virsh nwfilter-list

 UUID                                  名称               

------------------------------------------------------------------

 13c88621-6473-4883-bb5b-ea25f0b0f8db  allow-arp           

 792262fd-29f0-4fd6-8ae3-f7f320774dc1  allow-dhcp          

 6175cb41-2c50-420a-b779-9bdbeaa62cb9  allow-dhcp-server   

 4ac77628-0369-48b0-8544-bd694fd12994  allow-incoming-ipv4 

 7ee5bef8-9170-4320-ba3b-bc4d6d5fe6d8  allow-ipv4          

 e712460b-3505-4ded-9b99-5ee2ea54c417  clean-traffic       

 2fea4106-6c3e-49c5-8297-871bf7656992  no-arp-ip-spoofing  

 2ce69339-59ba-4002-81fe-d650e9045927  no-arp-mac-spoofing 

 4fefe23c-b1fc-4daf-be95-4844d03ff006  no-arp-spoofing     

 7d6d1c55-d6ad-44c8-aab1-50de8988db81  no-ip-multicast     

 dfd46e5c-37a5-4465-aec9-38c3e8747d87  no-ip-spoofing      

 7f86b7e0-9873-4174-83ad-2853af8853cb  no-mac-broadcast    

 c396c95a-e1a4-44ad-95a2-c1c76bcca423  no-mac-spoofing     

 d6681b9e-cfc5-483e-9f71-170cb4cecf13  no-other-l2-traffic 

 c7031d28-5e60-4345-ac88-a9b72acc48fb  no-other-rarp-traffic

 37140bfc-595f-43f6-a831-fe223106794c  qemu-announce-self  

 26522e96-db13-43ad-9bdb-6c29fbcfb9b6  qemu-announce-self-rarp

 

03 网络虚拟化技术基础

#查看802.1q模块信息

[[email protected] ~]# modinfo 8021q

filename:       /lib/modules/3.10.0-327.el7.x86_64/kernel/net/8021q/8021q.ko

version:        1.8

license:        GPL

alias:          rtnl-link-vlan

rhelversion:    7.2

srcversion:     2E63BD725D9DC11C7DA6190

depends:        mrp,garp

intree:         Y

vermagic:       3.10.0-327.el7.x86_64 SMP mod_unload modversions 

signer:         CentOS Linux kernel signing key

sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3

sig_hashalgo:   sha256

#加载模块

[[email protected] ~]# modprobe 8021q

[[email protected] ~]# yum install vconfig

04 网络名称空间netns用法详解

配置环境

node1: 192.168.1.131 CentOS Linux release 7.2

node2: 192.168.1.132 CentOS Linux release 7.2

[[email protected] ~]# ip netns add r1

[[email protected] ~]# ip netns add r2

[[email protected] ~]# ip netns list  

r2

r1

[[email protected] ~]# ip netns exec r1 ifconfig -a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 0  (Local Loopback)

        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

[[email protected] ~]# ip netns exec r1 route -n

[[email protected] ~]# ip netns exec r1 ifconfig lo 127.0.0.1/8 up

[[email protected] ~]# ip netns exec r1 ifconfig

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 0  (Local Loopback)

        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

[[email protected] ~]# ip netns exec r2 ifconfig -a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 0  (Local Loopback)

        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

#查看R1 iptables规则

[[email protected] ~]# ip netns exec r1 iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination 

#创建物理桥

[[email protected] ~]# brctl addbr br-ex

[[email protected] ~]# ip link set br-ex up

[[email protected] ~]# ip addr del 192.168.1.131/24 dev eno16777736;ip addr add 192.168.1.131/24 dev br-ex;brctl addif br-ex eno16777736

#创建内部桥

[[email protected] ~]# brctl addbr br-in

[[email protected] ~]# ip link set br-in up

#开启路由转发功能

[[email protected] ~]# vim /etc/sysctl.conf 

添加

net.ipv4.ip_forward = 1

[[email protected] ~]# sysctl -p

net.ipv4.ip_forward = 1

#创建一对虚拟网卡

[[email protected] ~]# ip link add veth1.1 type veth peer name veth1.2

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ex state UP mode DEFAULT qlen 1000

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT qlen 500

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

6: br-in: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/ether ca:89:b9:dc:cd:7d brd ff:ff:ff:ff:ff:ff

7: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether c6:66:c7:32:06:e1 brd ff:ff:ff:ff:ff:ff

8: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether 5e:58:78:10:ed:a0 brd ff:ff:ff:ff:ff:ff

[[email protected] ~]# ip link set veth1.1 netns r1

[[email protected] ~]# ip link set veth1.2 netns r2 

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ex state UP mode DEFAULT qlen 1000

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT qlen 500

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

6: br-in: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/ether ca:89:b9:dc:cd:7d brd ff:ff:ff:ff:ff:ff

[[email protected] ~]# ip netns exec r1 ifconfig -a

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 0  (Local Loopback)

        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

veth1.1: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 5e:58:78:10:ed:a0  txqueuelen 1000  (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

[[email protected] ~]# ip netns exec r2 ifconfig -a 

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 0  (Local Loopback)

        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

veth1.2: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether c6:66:c7:32:06:e1  txqueuelen 1000  (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

#更改R1网卡显示名

[[email protected] ~]# ip netns exec r1 ip link set veth1.1 name eth0

[[email protected] ~]# ip netns exec r1 ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether 5e:58:78:10:ed:a0 brd ff:ff:ff:ff:ff:ff link-netnsid 1

#更改R2网卡显示名

[[email protected] ~]# ip netns exec r2 ip link set veth1.2 name eth0  

[[email protected] ~]# ip netns exec r1 ip link show                 

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether 5e:58:78:10:ed:a0 brd ff:ff:ff:ff:ff:ff link-netnsid 1

#配置R1、R2的IP

[[email protected] ~]# ip netns exec r1 ifconfig eth0 10.0.1.1/24 up

[[email protected] ~]# ip netns exec r2 ifconfig eth0 10.0.1.2/24 up  

#测试R1、R2联通性

[[email protected] ~]# ip netns exec r1 ping 10.0.1.1

PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.

64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=0.314 ms

64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.057 ms

^C

--- 10.0.1.1 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1000ms

rtt min/avg/max/mdev = 0.057/0.185/0.314/0.129 ms

[[email protected] ~]# ip netns exec r1 ping 10.0.1.2

PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.

64 bytes from 10.0.1.2: icmp_seq=1 ttl=64 time=0.191 ms

64 bytes from 10.0.1.2: icmp_seq=2 ttl=64 time=0.072 ms

[[email protected] ~]# route add default gw 192.168.1.254

[[email protected] ~]# yum -y install qemu-kvm

[[email protected] ~]# modprobe kvm

[[email protected] ~]# mkdir -p /images/cirros

[[email protected] ~]# cd /images/cirros/

[[email protected] cirros]# ls

cirros-no_cloud-0.3.0-i386-disk.img

[[email protected] cirros]# cp cirros-no_cloud-0.3.0-i386-disk.img test1.qcow2

[[email protected] cirros]# cp cirros-no_cloud-0.3.0-i386-disk.img test2.qcow2

[[email protected] cirros]# cd

[[email protected] ~]# vim /etc/qemu-ifup

#!/bin/bash

#

bridge=br-in

if [ -n "$1" ];then

ip link set $1 up

brctl addif $bridge $1

[ $? -eq 0 ] && exit 0 || exit 1

else

echo "Error: no interface specified."

exit 1

fi  

[[email protected] ~]# chmod +x /etc/qemu-ifup 

[[email protected] ~]# bash -n /etc/qemu-ifup

[[email protected] ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/

#安装第一个虚拟机

[[email protected] ~]# qemu-kvm -m 128 -smp 1 -name vm1 -drive file=/images/cirros/test1.qcow2,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:cc -net tap,ifname=vif1.0,script=/etc/qemu-ifup --nographic

#安装第二个虚拟机

[[email protected] ~]# qemu-kvm -m 128 -smp 1 -name vm2 -drive file=/images/cirros/test2.qcow2,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:dd -net tap,ifname=vif2.0,script=/etc/qemu-ifup --nographic

[[email protected] ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

br-ex           8000.000c295027c4       no              eno16777736

br-in           8000.1a39688cf1ea       no              vif1.0

                                                        vif2.0

[[email protected] ~]# ip netns delete r1

[[email protected] ~]# ip netns delete r2

[[email protected] ~]# ip netns list

[[email protected] ~]# ip netns add r1

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ex state UP mode DEFAULT qlen 1000

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT qlen 500

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

6: br-in: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

10: vif1.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 6a:02:16:30:9c:82 brd ff:ff:ff:ff:ff:ff

11: vif2.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

[[email protected] ~]# ip link add rinr type veth peer name rins   

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ex state UP mode DEFAULT qlen 1000

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT qlen 500

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

6: br-in: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

10: vif1.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 6a:02:16:30:9c:82 brd ff:ff:ff:ff:ff:ff

11: vif2.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

12: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether 7e:d4:16:e7:22:cc brd ff:ff:ff:ff:ff:ff

13: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether da:cf:c3:b5:7b:8a brd ff:ff:ff:ff:ff:ff

[[email protected] ~]# ip link set rinr up

[[email protected] ~]# ip link set rins up

[[email protected] ~]# brctl addif br-in rins

[[email protected] ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

br-ex           8000.000c295027c4       no              eno16777736

br-in           8000.1a39688cf1ea       no              rins

                                                        vif1.0

                                                        vif2.0

[[email protected] ~]# ip link set rinr netns r1

#R1网卡改名

[[email protected] ~]# ip netns exec r1 ifconfig -a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 0  (Local Loopback)

        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

rinr: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether da:cf:c3:b5:7b:8a  txqueuelen 1000  (Ethernet)

        RX packets 8  bytes 648 (648.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 8  bytes 648 (648.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]# ip netns exec r1 ip link set rinr name eth0

[[email protected] ~]# ip netns exec r1 ifconfig -a

eth0: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether da:cf:c3:b5:7b:8a  txqueuelen 1000  (Ethernet)

        RX packets 8  bytes 648 (648.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 8  bytes 648 (648.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 0  (Local Loopback)

        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

[[email protected] ~]# ip netns exec r1 ip link set eth0 up

[[email protected] ~]# ip netns exec r1 ip link show

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

13: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000

    link/ether da:cf:c3:b5:7b:8a brd ff:ff:ff:ff:ff:ff link-netnsid 0

[[email protected] ~]# ip netns exec r1 ifconfig eth0 10.0.1.254/24 up

[[email protected] ~]# ip netns exec r1 ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.0.1.254  netmask 255.255.255.0  broadcast 10.0.1.255

        inet6 fe80::d8cf:c3ff:feb5:7b8a  prefixlen 64  scopeid 0x20<link>

        ether da:cf:c3:b5:7b:8a  txqueuelen 1000  (Ethernet)

        RX packets 8  bytes 648 (648.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 16  bytes 1296 (1.2 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#配置第一台虚拟机IP

$ sudo su -

# ifconfig eth0 10.0.1.1/24 up

# ping 10.0.1.254

PING 10.0.1.254 (10.0.1.254): 56 data bytes

64 bytes from 10.0.1.254: seq=0 ttl=64 time=159.302 ms

64 bytes from 10.0.1.254: seq=1 ttl=64 time=5.182 ms

# route add default gw 10.0.1.254

#配置第二台虚拟机IP

$ sudo su -

# ifconfig eth0 10.0.1.2/24 up

# ping 10.0.1.254

PING 10.0.1.254 (10.0.1.254): 56 data bytes

64 bytes from 10.0.1.254: seq=0 ttl=64 time=11.109 ms

64 bytes from 10.0.1.254: seq=1 ttl=64 time=4.452 ms

--- 10.0.1.254 ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 4.452/7.780/11.109 ms

# route add default gw 10.0.1.254

[[email protected] ~]# ip link add rexr type veth peer name rexs

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ex state UP mode DEFAULT qlen 1000

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT qlen 500

    link/ether 52:54:00:43:0d:84 brd ff:ff:ff:ff:ff:ff

5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

6: br-in: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

10: vif1.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 6a:02:16:30:9c:82 brd ff:ff:ff:ff:ff:ff

11: vif2.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UNKNOWN mode DEFAULT qlen 500

    link/ether 1a:39:68:8c:f1:ea brd ff:ff:ff:ff:ff:ff

12: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-in state UP mode DEFAULT qlen 1000

    link/ether 7e:d4:16:e7:22:cc brd ff:ff:ff:ff:ff:ff link-netnsid 0

14: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether c2:6a:a0:96:0e:27 brd ff:ff:ff:ff:ff:ff

15: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000

    link/ether ce:6d:e3:9e:d1:1c brd ff:ff:ff:ff:ff:ff

[[email protected] ~]# brctl addif br-ex rexs

[[email protected] ~]# ip link set rexs up

[[email protected] ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

br-ex           8000.000c295027c4       no              eno16777736

                                                        rexs

br-in           8000.1a39688cf1ea       no              rins

                                                        vif1.0

                                                        vif2.0

[[email protected] ~]# ip link set rexr netns r1

[[email protected] ~]# ip netns exec r1 ip link set rexr name eth1

[[email protected] ~]# ip netns exec r1 ifconfig eth1 192.168.1.134/24 up

[[email protected] ~]# ip netns exec r1 ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.0.1.254  netmask 255.255.255.0  broadcast 10.0.1.255

        inet6 fe80::d8cf:c3ff:feb5:7b8a  prefixlen 64  scopeid 0x20<link>

        ether da:cf:c3:b5:7b:8a  txqueuelen 1000  (Ethernet)

        RX packets 27  bytes 2174 (2.1 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 32  bytes 2696 (2.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.134  netmask 255.255.255.0  broadcast 192.168.1.255

        inet6 fe80::cc6d:e3ff:fe9e:d11c  prefixlen 64  scopeid 0x20<link>

        ether ce:6d:e3:9e:d1:1c  txqueuelen 1000  (Ethernet)

        RX packets 33  bytes 4560 (4.4 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 8  bytes 648 (648.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]# ip netns exec r1 ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.72 ms

64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.453 ms

#测试虚拟机网络

[[email protected] ~]# tcpdump -i vif1.0 -nn  icmp

tcpdump: WARNING: vif1.0: no IPv4 address assigned

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on vif1.0, link-type EN10MB (Ethernet), capture size 65535 bytes

09:43:35.448999 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 186, length 64

09:43:36.456217 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 187, length 64

^C

2 packets captured

2 packets received by filter

0 packets dropped by kernel

[[email protected] ~]# tcpdump -i rins -nn  icmp

tcpdump: WARNING: rins: no IPv4 address assigned

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on rins, link-type EN10MB (Ethernet), capture size 65535 bytes

09:43:06.250500 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 157, length 64

09:43:07.257803 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 158, length 64

09:43:08.265838 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 159, length 64

^C

3 packets captured

3 packets received by filter

0 packets dropped by kernel

[[email protected] ~]# ip netns exec r1 tcpdump -i eth0 -nn icmp

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

09:45:20.239901 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 290, length 64

09:45:21.246984 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 291, length 64

09:45:22.254115 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 292, length 64

^C

3 packets captured

3 packets received by filter

0 packets dropped by kernel

[[email protected] ~]# ip netns exec r1 tcpdump -i eth1 -nn icmp 

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes

09:46:18.629898 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 348, length 64

09:46:19.637394 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 349, length 64

09:46:20.644763 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 43520, seq 350, length 64

^C

3 packets captured

3 packets received by filter

0 packets dropped by kernel

#从192.168.1.1上抓包

[[email protected] ~]# tcpdump -i eth0 -nn icmp

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

09:53:52.872389 IP 192.168.1.1 > 114.114.114.114: ICMP 192.168.1.1 udp port 16588 unreachable, length 66

09:53:52.893624 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 44288, seq 5, length 64

09:53:52.893646 IP 192.168.1.1 > 10.0.1.1: ICMP echo reply, id 44288, seq 5, length 64

09:53:53.901275 IP 10.0.1.1 > 192.168.1.1: ICMP echo request, id 44288, seq 6, length 64

09:53:53.901299 IP 192.168.1.1 > 10.0.1.1: ICMP echo reply, id 44288, seq 6, length 64

^C

5 packets captured

5 packets received by filter

0 packets dropped by kernel

#在R1上添加iptables NAT路由转发

[[email protected] ~]# ip netns exec r1 iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! -d 10.0.1.0/24 -j SNAT --to-source 192.168.1.134[[email protected] ~]# ip netns exec r1 iptables -t nat -L -n

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination         

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination         

SNAT       all  --  10.0.1.0/24         !10.0.1.0/24          to:192.168.1.134

测试网络成功

再次抓包

[[email protected] ~]# tcpdump -i rins -nn  icmp

tcpdump: WARNING: rins: no IPv4 address assigned

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on rins, link-type EN10MB (Ethernet), capture size 65535 bytes

10:00:11.768476 IP 10.0.1.1 > 192.168.1.132: ICMP echo request, id 45312, seq 5, length 64

10:00:11.769866 IP 192.168.1.132 > 10.0.1.1: ICMP echo reply, id 45312, seq 5, length 64

10:00:12.781633 IP 10.0.1.1 > 192.168.1.132: ICMP echo request, id 45312, seq 6, length 64

10:00:12.782421 IP 192.168.1.132 > 10.0.1.1: ICMP echo reply, id 45312, seq 6, length 64

^C

4 packets captured

4 packets received by filter

0 packets dropped by kernel

#在R1上配置dhcp

[[email protected] ~]# ip netns exec r1 dnsmasq --dhcp-range 10.0.1.100,10.0.1.120

#虚拟机自动获得IP地址

# udhcpc -R

udhcpc (v1.18.5) started

Sending discover...

Sending select for 10.0.1.120...

Lease of 10.0.1.120 obtained, lease time 3600

deleting routers

route: SIOCDELRT: No such process

adding dns 10.0.1.254

# ifconfig

eth0      Link encap:Ethernet  HWaddr 52:54:00:AA:BB:DD  

          inet addr:10.0.1.120  Bcast:10.0.1.255  Mask:255.255.255.0

          inet6 addr: fe80::5054:ff:feaa:bbdd/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:29 errors:0 dropped:0 overruns:0 frame:0

          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:2838 (2.7 KiB)  TX bytes:3476 (3.3 KiB)

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         10.0.1.254      0.0.0.0         UG    0      0        0 eth0

10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

[[email protected] ~]# ip netns exec r1 killall dnsmasq

[[email protected] ~]# ip netns exec r1 dnsmasq -F 10.0.1.151,10.0.1.160 --dhcp-option=option:router,10.0.1.254

# udhcpc -R

udhcpc (v1.18.5) started

Sending discover...

Sending select for 10.0.1.158...

Lease of 10.0.1.158 obtained, lease time 3600

deleting routers

route: SIOCDELRT: No such process

adding dns 10.0.1.254

# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         10.0.1.254      0.0.0.0         UG    0      0        0 eth0

10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

时间: 2024-08-02 02:46:33

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解的相关文章

初探KVM——使用libvirt的virsh管理kvm

一.KVM虚拟机的管理工具 准确来说,KVM 仅仅是 Linux 内核的一个模块.管理和创建完整的 KVM 虚拟机,需要更多的辅助工具. QEMU-KVM:在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块.加载了模块后,才能进一步通过其他工具创建虚拟机.但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具.关于用户空间的工具,KVM 的开发者选择了

使用libvirt工具栈管理kvm虚拟机

libvirt介绍 Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等.Libvirt概括起来包括一个API库.一个 daemon(libvirtd)和一个命令行工具(virsh).支持的虚拟化技术:KVM, XEN, VMWARE, Qemu, LXC, OpenVZ等libvirt中的术语: node:指物理节点 hypervisor: domain: vm instances 虚拟机实例Libvirt的主要目标是:提供一种单一的方式管理多种不同的

rpm包管理器用法详解

1,简介 rpm(Red Hat Pakage Manager),现在更名为RPM Package Manager,是一款业界公认的标准包管理器.所谓包管理器,就是把编译好的应用软件的各组成部分组成一个或几个程序包文件,从而实现程序包的安装,升级,卸载和查询等相关操作.广泛应用与redhat,centos,opensuse等发行版本上.当然,Dibian系列用的包管理器是dpkg. 2.rpm的组成 二进制程序,配置文件,帮助手册,以及如何组织,安装等其他元数据信息,不过,rpm都能理解. 3,

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); 1.查看表 exec sp_help table1; 2.创建表 create tab

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: Bridge的网络结构见图: 一.Bridge方式 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信.事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接. KVM客户机网络连接有两种方式: 用户网络(User Networking):让虚拟机访问主机

Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk

fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 console 上输入 fdisk /dev/sda,可进入分割硬盘模式. 1. 输入 m 显示所有命令列示. 2. 输入 p 显示硬盘分割情形. 3. 输入 a 设定硬盘启动区. 4. 输入 n 设定新的硬盘分割区. 4.1. 输入 e 硬盘为[延伸]分割区(extend). 4.2. 输入 p

KVM工具libvirt、virsh、virt-manager的简单介绍

KVM虚拟化中libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(virsh.virt-install.virt-manager等)和云计算框架平台都在底层使用libvirt的应用程序接口. virsh是用于管理虚拟化环境中的客户机和Hypervisor的命令行工具,与virt-manager等工具类似,它也是通过libvirt API来实现虚拟化的管理.virsh是完全在命令行文本模式下运行的用户态工具,它是系统管理员通过脚本程序实现虚拟

KVM&amp;amp;Libvirt基本概念及开发杂谈

导读 大家好,本次肖力分享的主题是KVM&Libvirt基本概念及开发杂谈,内容有些凌乱松散,主要基于自己早期整理的笔记内容和实践感悟,有些内容难免有失偏颇,望见谅.前面先介绍下需要了解的基本知识,大部分内容在肖力著作中都有更详细的解释,可阅读参考. KVM包含: 1.内核模块kvm.ko,用于核心虚拟框架. 2.包含与处理器相关的模块kvm-intel.ko,kvm-amd.ko 3.kvm需要使用经过修改定制的qemu软件提供用户空间工具 *内核组件已经包含在Linux内核2.6.20中了

KVM详解

KVM 介绍(1):简介及安装 http://www.cnblogs.com/sammyliu/p/4543110.html 学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 (snapshot) (8)迁移 (migra