環境python
CentOS release 7.2 x86_64 4核8G內存
查看是否支持虛擬技術es6
# cat /proc/cpuinfo | egrep 'vmx|svm' ......eagerfpu pni pclmulqdq dtes64 monitor ds_cpl ......
安裝kvmweb
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-install virt-viewer libguestfs-tools -y
建立網橋dr0shell
# cat /etc/sysconfig/network-scripts/ifcfg-dr0 DEVICE=dr0 TYPE=Bridge ONBOOT=yes NM_CONTROLLED=no BOOTPROYO=static IPADDR=192.168.2.249 GATEWAY=192.168.2.1 NETMASK=255.255.255.0 # cat /etc/sysconfig/network-scripts/ifcfg-enp2s0 TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" NAME="enp2s0" UUID="e94f67f1-5abd-4cd8-a856-15ab9a4b8834" DEVICE="enp2s0" ONBOOT="yes" #IPADDR="192.168.2.249" PREFIX="24" #GATEWAY="192.168.2.1" BRIDGE=dr0 NM_CONTROLLED="no"
重啓網絡:
centos
# service network restart # ifconfig #查看網絡 centos7 無ifconfig命令 yum install net-tools dr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.249 netmask 255.255.255.0 broadcast 192.168.2.255 inet6 fe80::feaa:14ff:feef:1d77 prefixlen 64 scopeid 0x20<link> ether fc:aa:14:ef:1d:77 txqueuelen 0 (Ethernet) RX packets 241231 bytes 487712833 (465.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 95332 bytes 31500606 (30.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::feaa:14ff:feef:1d77 prefixlen 64 scopeid 0x20<link> ether fc:aa:14:ef:1d:77 txqueuelen 1000 (Ethernet) RX packets 604728 bytes 604285997 (576.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 136489 bytes 35905234 (34.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 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 68 bytes 5508 (5.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 68 bytes 5508 (5.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在添加一個網橋(做爲虛擬機內網)bash
# brctl addbr dr1 # ifconfig dr1 10.0.2.1 up #啓動dr1網橋,並附加一個IP 查看網絡: dr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.249 netmask 255.255.255.0 broadcast 192.168.2.255 inet6 fe80::feaa:14ff:feef:1d77 prefixlen 64 scopeid 0x20<link> ether fc:aa:14:ef:1d:77 txqueuelen 0 (Ethernet) RX packets 3471895 bytes 3437758241 (3.2 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1612573 bytes 1630220826 (1.5 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 dr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.2.1 netmask 255.0.0.0 broadcast 10.255.255.255 inet6 fe80::5003:41ff:fe4e:93e2 prefixlen 64 scopeid 0x20<link> ether fe:54:00:28:5b:31 txqueuelen 0 (Ethernet) RX packets 7376 bytes 335487 (327.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 25 bytes 1754 (1.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::feaa:14ff:feef:1d77 prefixlen 64 scopeid 0x20<link> ether fc:aa:14:ef:1d:77 txqueuelen 1000 (Ethernet) RX packets 9195872 bytes 5168391001 (4.8 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5197454 bytes 2893988504 (2.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 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 1215 bytes 88597 (86.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1215 bytes 88597 (86.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
建立目錄網絡
# mkdir -p /data/kvm/images/ #鏡像存儲路徑 # mkdir -p /data/kvm/kvmimg/ #虛擬機存儲路徑 # mkdir -p /data/kvm/template/ #虛擬機配置模板路徑
至此kvm安裝完成dom
建立kvm虛擬機
ssh
# virt-install --name tem --ram 1024 --vcpus=1 --disk path=/data/kvm/kvmimg/tem.img,size=40 --bridge=dr0 --bridge=dr1 --accelerate --cdrom=/data/kvm/images/CentOS-6.7-x86_64-minimal.iso --vnc --vncport=9998 --vnclisten=0.0.0.0 參數說明:--name 虛擬機名 --ram 內存(單位MB) --vcpus cpu個數 --disk 存儲配置 path 路徑 size 大小(單位G)這裏[dr0好比爲外網IP ,dr1 爲內網IP] --bridge=[網橋名] 網絡配置 如須要多個網絡就配置多個[--bridge=[網橋名]] --accelerate KVM或KQEMU內核加速 --cdrom 鏡像路徑 --vnc vnc配置 vncport 端口號
用vnc鏈接工具安裝(系統安裝步驟略...)ide
附加硬盤
# qemu-img create /data/kvm/kvmimg/data-host01.img 100G 建立一個100G的磁盤 # virsh attach-disk [hostname] /data/kvm/kvmimg/data-host01.img vda
取消附加硬盤
# virsh detach-disk [hostname] vda
使用虛擬機做爲模板
1. # rm /etc/udev/rules.d/70-persistent-net.rules -rf (centos 6.X) 2. # init 0
kvm 快速克隆腳本
建立配置模板
cat /data/kvm/template/ifcfg-eth0 #網卡1配置模板 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static GATEWAY=192.168.2.1 NATMASK=255.255.255.0 IPADDR=0.0.0.0 cat /data/kvm/template/ifcfg-eth1 #網卡2配置模板 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=0.0.0.0 cat /data/kvm/template/network #主機名配置模板 NETWORKING=yes HOSTNAME=localhost.localdomain
提供shell腳本以下:
cat /data/bin/kvm.sh #!/bin/bash #定義虛擬機名 read -p "Enter the host name:" hostname #公網IP地址 read -p "Enter the public IP number:" public #私網IP地址 read -p "Enter the private IP number:" private #模板主機[必須是中止狀態] template=tem #img文件存放位置 kvmimg_path=/data/kvm/kvmimg/ #外網網卡配置 eht0_path=/data/kvm/template/ifcfg-eth0 #內網網卡配置 eht1_path=/data/kvm/template/ifcfg-eth1 #虛擬機網卡配置文件路徑 path=/etc/sysconfig/network-scripts/ #主機名模板 hostname_path=/data/kvm/template/network #虛擬機主機名路徑 kvm_hostname_path=/etc/sysconfig/ while true do read -p "Confirm the virtual machine name($hostname) and public IP($public) and private IP($private)[y or n]:" statuss if [ "$statuss" = "y" ]; then break; elif [ "$statuss" = "n" ]; then break; fi done if [ "$statuss" = "y" ] then /usr/bin/virt-clone -o $template -n $hostname -f $kvmimg_path$hostname.img if [[ $? -eq 0 ]]; then #修改本地配置文件 sed -i "s/IPADDR=0.0.0.0/IPADDR=$public/g" $eht0_path sed -i "s/IPADDR=0.0.0.0/IPADDR=$private/g" $eht1_path sed -i "s/HOSTNAME=localhost.localdomain/HOSTNAME=$hostname/g" $hostname_path #拷貝配置文件到虛擬機 virt-copy-in -d $hostname $eht0_path $path virt-copy-in -d $hostname $eht1_path $path virt-copy-in -d $hostname $hostname_path $kvm_hostname_path #還本來地配置文件 sed -i "s/IPADDR=$public/IPADDR=0.0.0.0/g" $eht0_path sed -i "s/IPADDR=$private/IPADDR=0.0.0.0/g" $eht1_path sed -i "s/HOSTNAME=$hostname/HOSTNAME=localhost.localdomain/g" $hostname_path #啓動虛擬機 virsh start $hostname else echo "克隆虛擬機($hostname)失敗!"; fi else echo "退出!" fi
# /data/bin/kvm.sh Enter the host name:web04 Enter the public IP number:192.168.2.219 Enter the private IP number:10.0.2.7 Confirm the virtual machine name(web04) and public IP(192.168.2.219) and private IP(10.0.2.7)[y or n]:y WARNING Setting the graphics device port to autoport, in order to avoid conflicting. Allocating 'web04.img' | 40 GB 00:00:32 Clone 'web04' created successfully. Domain web04 started
查看建立的虛擬機
# ssh 192.168.2.219 The authenticity of host '192.168.2.219 (192.168.2.219)' can't be established. RSA key fingerprint is d4:7a:0d:fa:c4:d3:b7:24:e4:4f:ac:9c:b5:c1:a2:e2. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.219' (RSA) to the list of known hosts. root@192.168.2.219's password: Last login: Sat Aug 6 09:39:19 2016 from 192.168.1.75 [root@web04 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:E0:A8:42 inet addr:192.168.2.219 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fee0:a842/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1189 errors:0 dropped:0 overruns:0 frame:0 TX packets:83 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:63407 (61.9 KiB) TX bytes:13360 (13.0 KiB) Interrupt:11 eth1 Link encap:Ethernet HWaddr 52:54:00:DB:D6:31 inet addr:10.0.2.7 Bcast:10.255.255.255 Mask:255.0.0.0 inet6 addr: fe80::5054:ff:fedb:d631/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:720 (720.0 b) Interrupt:11 Base address:0x2000 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:65536 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:944 (944.0 b) TX bytes:944 (944.0 b) [root@web04 ~]# ping www.baidu.com PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data. 64 bytes from 61.135.169.121: icmp_seq=1 ttl=53 time=37.3 ms 64 bytes from 61.135.169.121: icmp_seq=2 ttl=53 time=37.3 ms 64 bytes from 61.135.169.121: icmp_seq=3 ttl=53 time=37.6 ms 64 bytes from 61.135.169.121: icmp_seq=4 ttl=53 time=37.6 ms # ping 10.0.2.1 PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data. 64 bytes from 10.0.2.1: icmp_seq=1 ttl=64 time=0.149 ms 64 bytes from 10.0.2.1: icmp_seq=2 ttl=64 time=0.337 ms 64 bytes from 10.0.2.1: icmp_seq=3 ttl=64 time=0.336 ms 64 bytes from 10.0.2.1: icmp_seq=4 ttl=64 time=0.312 ms