kvm虛擬機

環境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
相關文章
相關標籤/搜索