28.4 kvm介紹node
28.5 Centos7上安裝KVMlinux
28.6 配置網卡vim
28.7 建立虛擬機安裝CentOS7centos
28.4 kvm介紹api
KVM是以色列初創公司Qumranet開發,2008年9月RedHat公司收購了Qumranetbash
KVM是Linux內核的一個模塊,它把Linux內核變成了一個Hypervisor網絡
#linux內核就是一個一個的模塊組成,不少功能ide
KVM是徹底開源的,RedHat基於KVM的虛擬化解決方案叫作RHEV工具
KVM在Linux操做系統裏面以進程的形式出現,由標準的Linux調度程序進行調度,這使得KVM可以使用Linux內核的已有功能oop
只有一個KVM內核模塊還不能實現虛擬化的所有功能,就比如操做系統只有內核還不能成爲一個完整的操做系統同樣
QEMU是一個開源的虛擬化軟件,純軟件,能夠虛擬化因此的硬件,性能不強
KVM基於QEMU開發了一個可以運行在用戶空間的工具QEMU-KVM
磁盤、網絡設備等都是經過QEMU-KVM這個工具模擬出來的
KVM和QEMU-KVM通訊是經過/dev/kvm實現的
libvirt是用來管理KVM虛擬機的API,其命令爲virsh
kvm做爲linux內核的模塊在內核空間,利用/dev/kvm與用戶空間通訊。Qemu-kvm虛擬出虛擬硬件,在這基礎上,咱們安裝GuestOS(虛擬機上的操做系統)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.5 Centos7上安裝KVM
實驗是在vmware虛擬機裏的,至關於在虛擬機裏(vmware)安裝虛擬機(kvm)
前提是CPU支持虛擬化
1.虛擬機設置內存2G,增長一個50G的虛擬磁盤,處理器2核,虛擬化引擎兩個虛擬化相關的選項打上對勾
2.關閉iptables或者firewalld
3.關閉selinux
4.格式化新磁盤,掛載到/kvm_data
5.下載一個centos7的鏡像文件
6.檢查cpu參數是否支持虛擬化
grep -Ei 'vmx|svm' /proc/cpuinfo
7.安裝kvm
yum install -y virt-* libvirt bridge-utils qemu-img
實例:
先將虛擬機關機,調整硬件資源
[root@axinlinux-01 ~]# free -h
total used free shared buff/cache available Mem: 1.8G 1.4G 214M 9.8M 207M 236M Swap: 4.0G 264K 4.0G
[root@axinlinux-01 ~]# cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 78 model name : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz stepping : 3 microcode : 0x9e cpu MHz : 2400.250 cache size : 3072 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp bogomips : 4800.50 clflush size : 64 cache_alignment : 64 address sizes : 42 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 78 model name : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz stepping : 3 microcode : 0x9e cpu MHz : 2400.250 cache size : 3072 KB physical id : 2 siblings : 1 core id : 0 cpu cores : 1 apicid : 2 initial apicid : 2 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp bogomips : 4800.50 clflush size : 64 cache_alignment : 64 address sizes : 42 bits physical, 48 bits virtual power management:
[root@axinlinux-01 ~]# grep -Ei 'vmx|svm' /proc/cpuinfo #有無vmx的字樣,表明cpu是否支持虛擬化。vmx和svm分別表明因特爾芯片或arm芯片
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
[root@axinlinux-01 ~]# fdisk -l #查看一下咱們新配置的虛擬磁盤
磁盤 /dev/sda:85.9 GB, 85899345920 字節,167772160 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0x000e482f 設備 Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 8800255 4194304 82 Linux swap / Solaris /dev/sda3 8800256 167772159 79485952 83 Linux 磁盤 /dev/sdb:53.7 GB, 53687091200 字節,104857600 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節
[root@axinlinux-01 ~]# mkfs.ext4 /dev/sdb #直接格式化成ext4,能夠沒必要分區
mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! 不管如何也要繼續? (y,n) y 文件系統標籤= OS type: Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 3276800 inodes, 13107200 blocks 655360 blocks (5.00%) reserved for the super user 第一個數據塊=0 Maximum filesystem blocks=2162163712 400 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
[root@axinlinux-01 ~]# blkid /dev/sdb #查看這塊磁盤
/dev/sdb: UUID="ea87b8ad-8973-4a8b-b686-11901a9637cc" TYPE="ext4"
[root@axinlinux-01 ~]# mkdir /kvm_data #建立目錄
[root@axinlinux-01 ~]# mount /dev/sdb /kvm_data/ #掛載磁盤到這個目錄
[root@axinlinux-01 ~]# vim /etc/fstab #編輯/etc/fstab,開機直接掛載新增長的硬盤
/dev/sdb /kvm_data ext4 defaults 0 0
[root@axinlinux-01 ~]# systemctl stop firewalld
[root@axinlinux-01 ~]# systemctl stop iptables
[root@axinlinux-01 ~]# systemctl disable firewalld
[root@axinlinux-01 ~]# systemctl disable iptables
[root@axinlinux-01 ~]# iptables -F #若是還有的話,就清空掉
[root@axinlinux-01 ~]# iptables -nvL #隨着kvm的使用或啓動,會產生kvm的規則
Chain INPUT (policy ACCEPT 28 packets, 2148 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 8 packets, 660 bytes) pkts bytes target prot opt in out source destination
[root@axinlinux-01 ~]# yum install -y virt-* libvirt bridge-utils qemu-img #安裝kvm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.6 配置網卡
可選擇橋接或NAT,亦或者其餘
1.配置網卡,增長橋接網卡
先要虛擬一個橋接網卡出來,這個橋接網卡就是提供你的虛擬機和宿主機(物理機),相互鏈接起來的中間橋樑
2.設置一個br0網卡,TYPE爲Bridge,IP地址設置爲ens33的ip
ens33配置文件裏把IP地址去掉,增長BRIDGE=br0
3.檢查KVM模塊是否加載
lsmod|grep kvm
4.啓動libvirtd服務
systemctl start libvirtd
brctl show能夠看到兩個網卡br0和virbr0
實例:
[root@axinlinux-01 ~]# cd /etc/sysconfig/network-scripts/
[root@axinlinux-01 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@axinlinux-01 network-scripts]# vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.193.128
GATEWAY=192.168.193.2
DNS1=114.114.114.114
DNS2=8.8.8.8
PREFIX=24
[root@axinlinux-01 network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
[root@axinlinux-01 network-scripts]# systemctl restart network.service
[root@axinlinux-01 network-scripts]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.193.128 netmask 255.255.255.0 broadcast 192.168.193.255 inet6 fe80::20c:29ff:fe32:cee6 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:32:ce:e6 txqueuelen 1000 (Ethernet) RX packets 204 bytes 17222 (16.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 63 bytes 11182 (10.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:32:ce:e6 txqueuelen 1000 (Ethernet) RX packets 51103 bytes 60556873 (57.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 19889 bytes 1819897 (1.7 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 1000 (Local Loopback) RX packets 34 bytes 2768 (2.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 34 bytes 2768 (2.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:8d:04:55 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
[root@axinlinux-02 network-scripts]# systemctl start libvirtd #axin到這一步報錯,libvirtd服務起不來,換了臺虛擬機就行了。報錯信息是這樣的「Job for libvirtd.service failed because the control process exited with error code. See "systemctl status libvirtd.service" and "journalctl -xe" for details.」
[root@axinlinux-02 ~]# ps aux |grep libvirt
nobody 1708 0.0 0.0 53852 1108 ? S 13:49 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 1709 0.0 0.0 53824 376 ? S 13:49 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 2699 0.0 0.8 943392 16304 ? Ssl 14:29 0:00 /usr/sbin/libvirtd root 4918 0.0 0.0 112720 984 pts/0 S+ 15:44 0:00 grep --color=auto libvirt
[root@axinlinux-02 ~]# brctl show #查看橋接網卡的
bridge name bridge id STP enabled interfaces br0 8000.000c2932cee6 no ens33 virbr0 8000.5254008d0455 yes virbr0-nic
virbro是libvirtd服務所啓動的橋接網卡,相似於VM ware的vmnet8的nat的橋接網卡
在kvm無法用鼠標點選擇橋接仍是nat,由於是命令行的。他的網絡類型是哪個,取決於目標橋接網卡是哪個。若是是br0就是橋接模式,virbr0就是NAT模式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.7 建立虛擬機安裝CentOS7
首先要有centos7的鏡像文件
命令行安裝centos7
virt-install --name=aminglinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-17081.iso --disk path=/kvm_data/aminglinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
--name 定義你虛擬機的名字
--memory 定義它的內存大小,就是安裝完就是512
maxmemory 定義它的最大內存多大,就是可調整到1024(支持熱調整)
--vcpus 定義cpu核數
maxvcpus 最大cpu爲2核
--os-type 操做類型是linux
--os-variant 版本是rhel7(centos7)
--location 指定ISO文件的路徑(能夠是http:xxxxx,也就是能夠在線安裝)
--disk path 虛擬硬盤所在路徑,包括名字、大小
--bridge 橋接網卡名字
--graphics 是否開啓圖形
--console 定義開啓的終端、屬性
--extra-args 也是終端的屬性
實例:
Installation
1) [x] Language settings 2) [!] Time settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:
#按1 語言選擇 回車 68 回車 1回車
#按2 時區 回車 1 回車 64(shanghai) 回車
#按5 分區 回車 1 回車 c(繼續) 回車 c 回車 2(後面x表明默認) 回車 c 回車 1(標準分區) 回車 c 回車
#按8 root密碼 wangxin789 回車 兩遍
完成設置後,按b+回車
Installation
1) [x] Language settings 2) [x] Time settings
(Simplified Chinese (China)) (Asia/Shanghai timezone)
3) [x] Installation source 4) [x] Software selection
(Local media) (Minimal Install)
5) [x] Installation Destination 6) [x] Kdump
(Automatic partitioning (Kdump is enabled)
selected) 8) [x] Root password
7) [ ] Network configuration (Password is set.)
(Not connected)
9) [ ] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:
以上爲設置完成後的,x表明爲已設置的
最後按ctrl+],退出終端就能夠了。到這一步,阿銘的宿主機(vmware虛擬機)也跟着重啓了,阿鑫作的時候沒有出現重啓的現象。因此,在上面的設置完成之後,不要按回車退出,而是按ctrl+]退出終端,而後再針對axinlinux-02這一臺虛擬機重啓