1:什么是虛擬化惑灵?
虛擬化,通過模擬計(jì)算機(jī)的硬件曙寡,來實(shí)現(xiàn)在同一臺計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)不同的操作系統(tǒng)的技術(shù)整份。
什么是云計(jì)算?
云計(jì)算是一種按量付費(fèi)的模式,它的底層主要通過虛擬化技術(shù)來實(shí)現(xiàn)的!
云計(jì)算的服務(wù)類型:
a:IAAS 基礎(chǔ)設(shè)施即服務(wù)
b:PAAS 平臺即服務(wù)
c:SAAS 軟件即服務(wù)
2:為什么要用虛擬化乡恕?
kvm: 兼容較好,性能較好! 支持內(nèi)存壓縮技術(shù)
qemu:最早,最慢,兼容性最強(qiáng),模擬所有硬件, x86,arm,power AIX
xen: 性能最好,兼容性最查,使用專門定制的內(nèi)核,
vmware ESXI商業(yè)軟件: 最貴,好用
virtual box: 開源
沒有虛擬化之前:
計(jì)算機(jī)的硬件配置越來越高
512G 內(nèi)存,4路 8核16線程 亲善,12* PCI-E 1T的SSD;
ntp服務(wù)逗柴,安裝多個(gè)mysql蛹头,安裝多個(gè)tomcat,安裝....
linux開源的嚎于,很多軟件都有依賴包openssl nginx
充分利用資源掘而,軟件運(yùn)行環(huán)境的隔離,只有虛擬化才行實(shí)現(xiàn)于购。
場景1:同一臺物理機(jī)運(yùn)行多個(gè)php版本 php5.3(openssl,gd) php5.5 php7.2
場景2:機(jī)房的遷移袍睡,解決了硬件和系統(tǒng)的依賴
場景3:openstack環(huán)境,軟件發(fā)布方式
場景4:開發(fā)環(huán)境和測試環(huán)境肋僧,使用虛擬化
只靠一臺物理服務(wù)器斑胜,30臺虛擬機(jī)
場景5:業(yè)務(wù)的快速部署
從頭安裝系統(tǒng)控淡,安裝服務(wù),配置
克隆虛擬機(jī)止潘,改ip掺炭,
虛擬化:提高了資源的利用率,各個(gè)服務(wù)的安全性隔離凭戴,解決了系統(tǒng)和硬件之間的依賴
KVM安裝
1.內(nèi)存不能小于4G
處理器選擇虛擬化Intel VT-x/EPT 或者AMD-V/RVI(V)
2.kvm虛擬化管理軟件的安裝
yum install libvirt virt-install qemu-kvm -y
3.在windows上安裝VNC 安裝操作用的
VNC Viewer 4.exe或者TightVNC
4.啟動服務(wù)并加入開機(jī)自啟
systemctl start libvirtd.service
systemctl enable libvirtd.service
5.安裝虛擬機(jī)涧狮,需要一個(gè)ISO鏡像(如果重新安裝虛擬機(jī),需要把修改磁盤分區(qū)的名字和主機(jī)名)
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos1.qcow2,format=qcow2,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
檢查端口
netstat -lntup|grep 5900
使用VNC進(jìn)行連接
--virt-type kvm 虛擬化的類型(qemu)
--os-type=linux 系統(tǒng)類型
--os-variant rhel7 系統(tǒng)版本
--name centos7 虛擬機(jī)的名字
--memory 1024 虛擬機(jī)的內(nèi)存
--vcpus 1 虛擬cpu的核數(shù)
--disk /opt/centos2.raw,format=raw,size=10 磁盤的格式
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 使用的鏡像
--network network=default 使用默認(rèn)NAT的網(wǎng)絡(luò)
--graphics vnc,listen=0.0.0.0 圖形圖像使用VNC客戶端進(jìn)行安裝
--noautoconsole
raw:10G 不支持做快照,性能好
qcow2: 支持快照
6.進(jìn)行安裝KVM
①磁盤分區(qū)只用分一個(gè)根分區(qū)
②KDUMP關(guān)閉 Enable kdump
③開啟網(wǎng)卡自啟動
④調(diào)整時(shí)區(qū)
7.KVM的管理命令(主配置文件在 /etc/libvirt/qemu/)
virsh list 查看運(yùn)行狀態(tài)的虛擬機(jī)
virsh list --all 查看所有虛擬機(jī)
virsh shutdown 主機(jī)名 關(guān)機(jī)虛擬機(jī)
virsh destroy 主機(jī)名 拔電源關(guān)機(jī)
virsh reboot 主機(jī)名 重啟
virsh dumpxml web > web.xml 備份
virsh undefine 主機(jī)名 刪除虛擬機(jī)
virsh define web.xml 恢復(fù)虛擬機(jī)
做遷移
mv /opt/web.qcow2 /data/web.qcow2
virsh edit web 然后修改配置文件(找到磁盤分區(qū)disk 修改磁盤分區(qū)的新位置么夫,啟動測試)
virsh domrename web web01 修改主機(jī)名(需要先關(guān)機(jī))
virsh suspend web01 掛起虛擬機(jī)
virsh resume web01 恢復(fù)掛起(需要注意一下時(shí)間)
virsh vncdisplay web01 查看主機(jī)的端口號
virsh autostart web01 開機(jī)自啟 前提systemctl enable libvirtd.service (在/etc/libvirt/qemu/autostart/ 查看有哪些主機(jī)是開機(jī)自啟)
virsh autostart --disable web01 關(guān)閉開機(jī)自啟
console登錄
需要配置KVM虛擬主機(jī)的內(nèi)核(修改完重啟reboot) 先把原先的配置文件進(jìn)行備份
在虛擬主機(jī)上用ip addr 查看IP 在shell上連接
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" 網(wǎng)卡為eth的
grubby --update-kernel=ALL --args="net.ifnames=0 biosdevname=0" 網(wǎng)卡為ens的
virsh console web01 按兩下回車登錄
退出Ctrl +]
磁盤管理:
raw: 裸格式者冤,占用空間比較大,不支持快照功能档痪,性能較好涉枫,不方便傳輸 總50G 占用2G
qcow2:cow (copy on write)占用空間小,支持快照腐螟,性能比raw差一點(diǎn)愿汰,方便傳輸 總50G 占用2G
qcow2支持?jǐn)U容,不支持縮容乐纸,raw支持?jǐn)U容也支持縮容 (不要縮容衬廷,容易丟失數(shù)據(jù))
qemu-img create -f qcow2 /data/centos.qcow2 10G 創(chuàng)建qcow2的磁盤 不加-f 默認(rèn)為raw
qemu-img info /data/web.qcow2 (加磁盤的路徑) 查看磁盤的信息
qemu-img resize /data/web.qcow2 20G(原來10G先在擴(kuò)成20G 或者寫+10G) 擴(kuò)展磁盤大小
磁盤轉(zhuǎn)換:raw轉(zhuǎn)換為qcow2(虛擬機(jī)要關(guān)閉)
qemu-img convert -f raw -O qcow2 /data/web.raw /data/web.qcow2
原格式 目標(biāo)格式 源文件 目標(biāo)文件
改完之后需要修給配置文件
virsh edit web
修改前
<driver name='qemu' type='raw'/>
<source file='/data/web.raw'/>
修改后
<driver name='qemu' type='qcow2'/>
<source file='/data/web.qcow2'/>
快照管理
virsh snapshot-create-as web01(主機(jī)名) --name int_OK(快照名) 創(chuàng)建快照
virsh snapshot-list web01 查看快照
virsh snapshot-revert web01 --snapshotname(指定恢復(fù)快照的名稱) int_OK 還原快照(注意時(shí)間)
virsh snapshot-delete web01 --snapshotname int_OK 刪除快照
raw不支持做快照,qcow2支持快照锯仪,并且快照就保存在qcow2的磁盤文件中
克隆管理(盡量克隆不帶快照的模板機(jī))
1.完整克隆(必須關(guān)機(jī)或者掛起)
自動克隆
virt-clone --auto-clone -o web01 -n web02
手動
cp web01.qcow2 web02.qcow2 拷貝1的磁盤
virsh dumpxml web01 > web02.xml 拷貝web01的配置文件
修改vim web02.xml
<name>web02</name> 修給web01名字為web02
<uuid>d2b27539-ca27-4978-a1d0-264e04cd42f8</uuid> 刪除uuid這行(開機(jī)自動生成)
<source file='/data/web02.qcow2'/> 修改web01磁盤目錄為web02的磁盤目錄
<mac address='52:54:00:70:4e:58'/> 刪除mac addr的mac的地址(開機(jī)自動生成)
導(dǎo)入web02的配置文件(然后開機(jī))
virsh define web02.xml
2.鏈接克隆
qemu-img create -f qcow2 -b web01.qcow2 web03.qcow2 拷貝1的磁盤 類型為 qcow2 以web01為引用盤
virsh dumpxml web01 > web03.xml 拷貝web01的配置文件
修改vim web02.xml
<name>web03</name> 修給web01名字為web03
<uuid>d2b27539-ca27-4978-a1d0-264e04cd42f8</uuid> 刪除uuid這行(開機(jī)自動生成)
<source file='/data/web02.qcow2'/> 修改web01磁盤目錄為web03的磁盤目錄
<mac address='52:54:00:70:4e:58'/> 刪除mac addr的mac的地址(開機(jī)自動生成)
導(dǎo)入web03的配置文件(然后開機(jī))
virsh define web03.xml
最簡單的鏈接克隆
qemu-img create -f qcow2 -b web01.qcow2 web04.qcow2 拷貝1的磁盤 類型為 qcow2
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
KVM的橋接網(wǎng)絡(luò)
1.創(chuàng)建橋接網(wǎng)卡(只能零時(shí)添加泵督,開機(jī)就沒)
virsh iface-bridge eth0(綁定的網(wǎng)卡) br0(橋接網(wǎng)卡的名稱)
取消橋接網(wǎng)卡
virsh iface-unbridge br0
如果命令行執(zhí)行不成功可以
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.11"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
STP="on"
DELAY="0"
重新創(chuàng)建一個(gè)虛擬主機(jī)(前提有磁盤)
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd(必須先有磁盤,直接讀取磁盤) --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
登錄虛擬主機(jī)
virsh console web04
dhclient 獲取ip地址(服務(wù)器必須是開啟DHCP模式)
查看IP地址 用ssh連接
修改舊的的虛擬主機(jī)網(wǎng)絡(luò)(先關(guān)機(jī)庶喜,修改完配置重啟||開機(jī)修改 需要先關(guān)機(jī)小腊,在開機(jī),不能reboot)
修改前
<interface type='network'>
<mac address='52:54:00:70:4e:58'/>
<source network='default'/>
修改后
<interface type='bridge'>
<mac address='52:54:00:70:4e:58'/>
<source bridge='br0'/>
啟動 virsh start web04
KVM虛擬主機(jī)在線熱添加磁盤
先添加一塊盤
qemu-img create -f qcow2 /data/web04_add.qcow2 10G
添加到虛擬主機(jī)上
virsh attach-disk web04(主機(jī)名) /data/web04_add.qcow2(新盤位置,必須是絕對路徑) vdb(在虛擬主機(jī)上叫什么名字) (默認(rèn)添加raw盤)
virsh detach-disk web04 vdb 取消掛載的盤
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2 正確的添加盤的格式
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2 --config 寫到配置文件中久窟,永久掛載(不加 --config 都是臨時(shí)添加)
登錄到虛擬主機(jī)
virsh console web04
fdisk -l 查看磁盤情況
mkfs.xfs /dev/vdb 格式化盤
mount /dev/vdb /mnt 掛載磁盤
如果vdb盤不夠用 秩冈,需要先擴(kuò)容
umount /mnt
在服務(wù)器上再把vdb給取消掛載
virsh detach-disk web04 vdb 取消掛載的盤
qemu-img resize /data/web04_add.qcow2 10G 給磁盤添加內(nèi)存
virsh attach-disk web04 /data/web04_add.qcow2 vdb --subdriver qcow2 再把vdb添加到虛擬主機(jī)上
在虛擬主機(jī)上先掛(不能直接格式化,不然數(shù)據(jù)會丟)
fdisk -l 看磁盤容量添加了沒有
mount /dev/vdb /mnt 掛載
xfs_growfs /dev/vdb 更新分區(qū)表
查看數(shù)據(jù)是否丟失
根分區(qū)擴(kuò)容:
1)在宿主機(jī)上關(guān)閉虛擬機(jī)并調(diào)整虛擬機(jī)磁盤大小
qemu-img resize web02.qcow2 +10G
2)虛擬機(jī)中fdisk重新分區(qū)
fdisk /dev/vda
3)重啟之后斥扛,執(zhí)行xfs_growfs /dev/vda1入问,
如果虛擬機(jī)磁盤文件系統(tǒng)是ext4:resize2fs /dev/vda1
KVM虛擬主機(jī)在線熱添加網(wǎng)卡
先查看在存在的網(wǎng)卡類型
virsh edit web04
<model type='virtio'/>
virsh attach-interface web04 bridge br0 --model virtio --config 添加橋接網(wǎng)卡 添加網(wǎng)卡model 指定網(wǎng)卡類型 不加config就是臨時(shí)添加
virsh attach-interface web04 network default --model virtio --config 添加net網(wǎng)卡
virsh detach-interface web04 bridge|network取消網(wǎng)卡類型 --mac 跟上mac地址 拆除網(wǎng)卡
KVM虛擬主機(jī)在線熱添加內(nèi)存
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole(內(nèi)存只能添加到2048)
在虛擬主機(jī)上
free -m 查看內(nèi)存
virsh setmem web04 1024M 添加內(nèi)存(根據(jù)創(chuàng)建虛擬主機(jī)的時(shí)候設(shè)置最大添加到多少 ,不能超過最大限制)
virsh setmem web04 1024M --config 永久生效
virsh setmem web04 512M 減內(nèi)存(不建議使用)
KVM虛擬主機(jī)在線熱添加cpu
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole(cpu的核數(shù)最大添加到10個(gè))
lscpu 查看CPU的核數(shù)(CPU(s))
virsh setvcpus web04 2 添加cpu的核數(shù)
virsh setvcpus web04 2 --config 添加到配置文件
如果想在原有的KVM虛擬主機(jī)上添加內(nèi)存和CPU
virsh edit web04
修改前
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
修改后
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' current='4'>10</vcpu>
KVM虛擬主機(jī)的遷移
冷遷移
把配置文件和磁盤發(fā)送到另一臺服務(wù)器上稀颁,另一臺服務(wù)器需要有KVM的管理環(huán)境
熱遷移
主機(jī) ip地址 軟件 配置要求
kvm01 10.0.0.11 kvm管理軟件+nfs客戶端 2G,開啟虛擬化
kvm02 10.0.0.12 kvm管理軟件+nfs客戶端 2G,開啟虛擬化
nfs01 10.0.0.31 nfs服務(wù)端 1G
1)準(zhǔn)備兩臺kvm宿主機(jī),配置橋接網(wǎng)絡(luò),nfs客戶端
2)安裝nfs服務(wù)端
3)kvm宿主機(jī)掛載nfs服務(wù)端,掛載點(diǎn)一定要是同一個(gè)目錄
4)啟動一臺新虛擬機(jī),該虛擬機(jī)磁盤文件存儲在共享存儲上
NFS主機(jī)上
yum install nfs-utils -y 下載nfs
vim /etc/exports 配置nfs
/data 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)
mkdir /data 創(chuàng)建共享目錄
systemctl restart nfs 啟動
cat /var/lib/nfs/etab 查看是否啟動成功
KVM01和KVM02上配置(兩臺主機(jī)名不能一樣芬失,需要做hosts解析)
vim /etc/hosts 做hosts解析
10.0.0.11 kvm01
10.0.0.12 kvm02
mount 10.0.0.31:/data /opt 掛載
在KVM01上創(chuàng)建虛擬主機(jī)并實(shí)現(xiàn)熱遷移
cp /data/web04_add.qcow2 /opt/ 拷貝web04的磁盤文件
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web05(不能和現(xiàn)有的虛擬主機(jī)主機(jī)名一樣) --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/web04.qcow2(指定讀取的磁盤) --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
virsh migrate --live --verbose web05(虛擬主機(jī)名) qemu+ssh://10.0.0.12/system --unsafe 熱遷移的命令
在KVM02上查看
virsh list 查看遷移的主機(jī)有沒有遷移過來
圖形化熱遷移(需要安裝VNC客服端)
在kvm01上安裝圖形界面、vnc服務(wù)端和virt-manager
yum groups install "GNOME Desktop" -y
yum install tigervnc-server.x86_64 -y
yum install virt-manager -y
啟動vnc服務(wù)端
vncserver :1 啟動5901端口的vnc服務(wù)端
vncserver -kill :1 關(guān)閉5901端口的vnc服務(wù)端
netstat -lntup 找到Xvnc(590X)的端口
window進(jìn)行連接即可
https://www.qstack.com.cn/archives/368.html 詳細(xì)請查看