雲端計算與虛擬機器kvm
什麼是雲端計算?
資源使用和交付模式,並不是技術,分為公有云,私有云,混合雲,依賴虛擬化技術,從而實現彈性擴充套件
雲端計算 iaas pass saas圖層
- Iaas(基礎設施即服務Infrastructure as a Servic)
- Paas(平臺即服務Platform-as-a-Service)
- Saas(軟體即服務Software-as-a-Service)
KVM
KVM是開源軟體,全稱是kernel-based virtual machine(基於核心的虛擬機器)。
是x86架構且硬體支援虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。
它包含一個為處理器提供底層虛擬化 可載入的核心模組kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
KVM還需要一個經過修改的QEMU軟體(qemu-kvm),作為虛擬機器上層控制和介面。
KVM能在不改變linux或windows映象的情況下同時執行多個虛擬機器,(它的意思是多個虛擬機器使用同一映象)併為每一個虛擬機器配置個性化硬體環境(網絡卡、磁碟、圖形介面卡……)。
在主流的Linux核心,如2.6.20以上的核心均已包含了KVM核心
kvm安裝
1.是否支援虛擬化
因特爾 vmx amd svm [[email protected]~]# grep -E '(vmx|svm)' /proc/cpuinfo
如果是vmware虛擬機器,請在配置cpu選擇intel VT-X/EPT或 AMD-V/RVI
如果輸出的資訊中有vmx,說明intel處理器支援完全虛擬化。如果顯示svm,說明是AMD的處理器支援虛擬化。
2.安裝kvm和其他虛擬化所需管理軟體包
[[email protected] ~]# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y
軟體包名稱介紹:
Kvm:軟體包中含有KVM核心模組,它在預設linux核心中提供kvm管理程式
Libvirts:安裝虛擬機器管理工具,使用virsh等命令來管理和控制虛擬機器。
Bridge-utils:設定網路網絡卡橋接。
Virt-*:建立、克隆虛擬機器命令,以及圖形化管理工具virt-manager
Qemu-img:安裝qemu元件,使用qemu命令來建立磁碟等
3.載入kvm模組,檢視kvm模組是否被載入
[[email protected] ~]# lsmod | grep kvm kvm_intel 170181 0 kvm 554609 1 kvm_intel 這裡最好reboot,在檢視一下,是否隨著系統重啟也是支援的
4.啟動libvirtd,管理虛擬機器和其他虛擬化功能
包括一個API庫,一個守護程式(libvirtd)和一個命令列工具(virsh),libvirt的主要目標是為各種虛擬化工具提供一套方便、可靠的程式設計介面,用一種單一的方式管理多種不同的虛擬化提供方式
[[email protected] ~]# systemctl enable libvirtd.service [[email protected] ~]# systemctl start libvirtd.service
5.準備想要虛擬出的作業系統,iso映象檔案
[[email protected] ~]# dd if=/dev/cdrom of=/opt/CentOS-7.3.iso
6.建立映象檔案,虛擬機器使用的磁碟映象檔案,實際是個空間
[[email protected] ~]# qemu-img create -f raw /opt/CentOS-7.3-x86_64.raw 8G Formatting '/opt/CentOS-7.3-x86_64.raw', fmt=raw size=8589934592 [[email protected] ~]# ls -lh /opt/CentOS-7.3-x86_64.raw -rw-r--r--. 1 root root 8.0G Dec 16 08:02 /opt/CentOS-7.3-x86_64.raw 建立磁碟 -f 檔案格式 路徑 磁碟大小
7.建立虛擬機器,cpu預設是一個
[[email protected] ~]# virt-install --name CentOS-7.3-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.3.iso --disk path=/opt/CentOS-7.3-x86_64.raw
--network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install... Domain installation still in progress. You can reconnect to the console to complete the installation process.
8.檢視是否監聽5900埠
[[email protected] opt]# netstat -ntlp 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 20009/qemu-kvm
9.vnc 下載客戶端,利用vnc連結,你就會看到安裝centos7.3的介面
https://www.realvnc.com/en/connect/download/viewer/macos/
10.如果按tab鍵,輸入net.ifnames=0 biosdevname=0 ,網絡卡就會是eth0
宿主機與虛擬機器網路問題
1.宿主機網路狀態
[[email protected] ~]# ps aux|grep kvm 就是一個程序 [[email protected] ~]# cat /etc/libvirt/qemu/CentOS-7.3-x86_64-2.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit CentOS-7.3-x86_64-2 or other application using the libvirt API. --> 這個檔案時自動生成的,如果你非要修改它,請virsh edit CentOS-7.3-x86_64-2 [[email protected] ~]# virsh edit CentOS-7.3-x86_64-2 與程序引數是一樣的,這是配置裡面的網路,預設會多出一個叫virbr0:虛擬網絡卡 <interface type='network'> <mac address='52:54:00:89:e2:81'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> [[email protected] ~]# ifconfig virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:25:22:31 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 預設是nat網路,我們在下邊會說到如何改成橋接 [[email protected] ~]# iptables -t nat -vnL
2.虛擬機器網路狀態
1.啟動虛擬機器 [[email protected] ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7.3-x86_64 shut off - CentOS-7.3-x86_64-2 shut off [[email protected] ~]# virsh start CentOS-7.3-x86_64-2 Domain CentOS-7.3-x86_64-2 started 2.vnc繼續連結,我們看下虛擬機器的網絡卡 [[email protected] ~]# ifconfig virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
3.上面的網絡卡virbr0都是192.168.122.1,為什麼會這樣,是預設dnsmasq起了個dhcp
[[email protected] ~]# ps aux|grep dns nobody 10384 0.0 0.0 53884 1112 ? S 07:37 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 10385 0.0 0.0 53856 564 ? S 07:37 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 31126 0.0 0.0 112708 976 pts/2 R+ 08:40 0:00 grep --color=auto dns [[email protected] ~]# cat /var/lib/libvirt/dnsmasq/default.conf ##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE ##OVERWRITTEN AND LOST. Changes to this configuration should be made using: ## virsh net-edit default ## or other application using the libvirt API. ## ## 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-authoritative dhcp-lease-max=253 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
kvm管理
cpu熱修改只能加不能減,不能超過設定的最大數
配置cpu的2種方法 1. 通過啟動時候命令列指定 2. 通過xml指定,可以熱修改 通過xml檔案更改 1.將cpu調成最大四個,當前一個 [[email protected] ~]# virsh edit CentOS-7.3-x86_64-2 <vcpu placement='auto' current='1'>4</vcpu> 2.重啟生效 [[email protected] ~]# virsh shutdown CentOS-7.3-x86_64-2 Domain CentOS-7.3-x86_64-2 is being shutdown [[email protected] ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7.3-x86_64-2 shut off [[email protected] ~]# virsh start CentOS-7.3-x86_64-2 Domain CentOS-7.3-x86_64-2 started 3.登入到虛擬機器,檢視cpu個數 4.熱修改將cpu設定成2個 [[email protected] ~]# virsh setvcpus CentOS-7.3-x86_64-2 2 --live 5.再次登陸到虛擬機器,檢視cpu個數 centos7是自動激活了cpu,如果不是的話需要echo 1 > [[email protected] ~]# cat /sys/devices/system/cpu/cpu0/online 1 注意熱修改,只能加不能減,也不能超過設定的最大數 [[email protected] ~]# virsh setvcpus CentOS-7.3-x86_64-2 1 --live error: unsupported configuration: failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count
記憶體,熱球技術能加能減,不能超過設定的最大數
1.修改xml [[email protected] ~]# virsh edit CentOS-7.3-x86_64-2 <memory unit='KiB'>1048576</memory> 最大記憶體 <currentMemory unit='KiB'>1048576</currentMemory> 現記憶體 2.重啟生效 [[email protected] ~]# virsh shutdown CentOS-7.3-x86_64-2 Domain CentOS-7.3-x86_64-2 is being shutdown [[email protected] ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7.3-x86_64-2 shut off [[email protected] ~]# virsh start CentOS-7.3-x86_64-2 Domain CentOS-7.3-x86_64-2 started 3.顯示虛擬機器當前記憶體 [[email protected] ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon balloon: actual=1024 4.修改虛擬機器記憶體,減少 [[email protected] ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd balloon 600 顯示虛擬機器當前記憶體 [[email protected] ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon balloon: actual=600 5.修改虛擬機器記憶體,新增 [[email protected] ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd balloon 1024 顯示虛擬機器當前記憶體 [[email protected] ~]# virsh qemu-monitor-command CentOS-7.3-x86_64-2 --hmp --cmd info balloon balloon: actual=1024 6.登入到虛擬機器檢視 注意,記憶體也不能超過最大記憶體
磁碟
[[email protected] ~]# qemu-img --help 支援如下硬碟格式 Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug 1.全映象模式 raw,設定多大,就是多大。寫入塊,方便轉換成其他格式,效能最優 2.稀疏模式 qcow2,功能全,壓縮,快照,映象,更小儲存空間,設定多大,它也只是用多大 所有磁碟管理,可以使用qemu -img管理