① 網路虛擬化技術
數據包從虛擬機到物理機過程:
半虛擬化技術使數據包跳過QEMU虛擬網卡,從虛擬機直接到虛擬化層,
虛擬網卡性能排序:
簡化虛擬化環境中的交換網路,代替傳統的linux TAP設備加Bridge設備組合
MacVTap設備有3中不同的工作模式:
創建MacVTap埠過程
KVM虛擬機使用MacVTap網路
在xml文件配置如下
虛擬機開啟後,宿主系統會自動創建一台MacVTap設備給虛擬機使用,這台MacVTap設備附屬於母設備eth0,工作模式為Bridge
xml文件配置
1.物理網卡的中斷與多隊列
查看網卡是否支持RSS:
ls /sys/class/net/eth0/queues/
2.綁定中斷
3.多隊列Virtio網卡
查看是否支持:
grep IFF_MULTL_QUEUE /usr/include/Linux/if_tun.h
多隊列Virtio網卡配置:
N 1-8最多支持8個隊列,在虛擬機上執行以下命令開啟多隊列網卡:
ethtool -L eth0 combined M
M 1-N,M小於等於N
PCI Passthrough配置
1.查看網卡設備信息:
lspci 或者 virsh nodedev-list --tree
2.得到pci_0000_02_00_0的配置信息
virsh nodedev-mpxml pci_0000_02_00_0
3.編輯虛擬機xml文件,加入PCI設備信息
SR-IOV 上有兩個功能類型。
SR- IOV 標准允許高效共享PCI-E 設備, 有以下優點:
2.網卡S R-IO V 的配置
SR-IOV 的配置需要先配置宿主機 PF , 然後將子網卡通過網卡獨占的方式供虛擬機使用。
(1) 載入SR-IOV 內核模塊
通過modprobe 命令載入igb 模塊。
modprobe igb
實際載入的時候,需要激活虛擬功能(VF)。
modprobe igb max_vfs=7
如果需要重新設置VF, 可以刪除模塊再重新載入。
modprobe -r igb
將配置永久寫入配置文件。
echo "options igb max_vfs=7" >> /etc/modprobe.d/igb.c onf
通過 lspci 命令可以看多主網卡和子網卡。
(2) 子網卡的使用
虛擬機可以通過網卡獨占的方式使用子網卡。
virsh nodedev-list |grep 0b
虛擬機網卡xml 配置文件如下:
虛擬機需要安裝網卡驅動才能 使用子網卡,高版本的Linux系統可以自動識別子網卡,
Windows系統只能是2008 Sevrer 以上版本,並且要安裝最新的 Intel網卡驅動。
② pci重定向什麼意思
一:修改KVM的配置文件
1.查看KVM的xml配置文件
KVM的配置文件存放在/etc/libvirt/qemu目錄下
使用vi進行編輯 下面的這個KVM是重定向了一個PIC控制器
添加的代碼如下
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
</hostdev>
登錄後復制
2.使用virsh命令
list --all
登錄後復制
使用list --all可以查看伺服器下的虛擬機
使用 edit + 虛擬機名稱 進行編輯
edit vm6u437944
登錄後復制
然後再在對應的位置 添加對應的代碼
二 查看PCI信息
查看USB控制器
lspci -vnn | grep USB
登錄後復制
找到需要重定向的USB控制器,可以在前面看對應的控制器名稱 如:01:00:0
然後將改設備寫入到KVM中
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
</hostdev>
bus對應的就是01 slot對應的就是第二項 00 function對應的就是0 這三項分別對應了控制器名稱 其他可以不做改變,直接復制進去
PCI
屬羊人要「睡不著」了,2023年跟住這個人,別分開,是你的福氣
麥玲玲僅供娛樂
廣告
kvm-gpu:通過KVM進行GPU直通的實用程序
1下載·0評論
2021年5月9日
使用SR-IOV創建KVM虛擬機報錯「host doesn』t support passthrough of host PCI devices」解決
3089閱讀·0評論·0點贊
2022年3月9日
openstack 開發step-by-step
144閱讀·0評論·0點贊
2015年5月5日
KVM詳解,太詳細太深入了,經典
4.9W閱讀·4評論·45點贊
2016年9月29日
kvm控制伺服器上傳文件,KVM簡單使用 | leon的博客
625閱讀·0評論·0點贊
2021年8月13日
Ubuntu Server 20.04 LTS使用KVM創建虛擬機和指定顯卡直通
1434閱讀·0評論·2點贊
2022年6月7日
限時2年0利率,0壓力提新車,電馬新能源車全新價24.99萬元起!
00:17
電馬新能源車
廣告
linuxPci驅動獲取指定設備bus、device以及devfn數據方式
4002閱讀·0評論·1點贊
2017年11月17日
主機pci設備直通
5718閱讀·0評論·0點贊
2014年3月6日
pci設備的初始化
2666閱讀·0評論·0點贊
2016年12月2日
如何用命令的方式在KVM上創建虛擬機
6804閱讀·0評論·0點贊
2018年10月24日
虛擬媒介技術伺服器,Raritan Dominion KXⅡKVM 配置虛擬媒體
173閱讀·0評論·0點贊
2021年8月11日
KVM設備透傳與重定向
2613閱讀·0評論·3點贊
2019年12月18日
簡單KVM安裝+橋接模式
1416閱讀·0評論·3點贊
2020年1月12日
06、KVM 中給虛擬機添加磁碟
954閱讀·0評論·2點贊
2020年9月17日
kvm libvirt: hostdev passthrough support 解決加密狗沖突問題
3899閱讀·0評論·1點贊
2013年9月15日
基於KVM的SRIOV直通配置及性能測試
1728閱讀·0評論·3點贊
2022年1月7日
kvm如何實現pci設備的物理穿透?
352閱讀·0評論·0點贊
2020年12月10日
KVM+顯卡直通(passthrough)配置方法及問題說明
4.3W閱讀·19評論·6點贊
2018年12月24日
Ubuntu20.04.3 KVM+顯卡直通(passthrough)配置方法
5238閱讀·0評論·0點贊
2022年3月31日
kvm安裝虛擬機命令詳解
③ 如何使用vnc-view查看kvm的虛擬機
虛擬機反看宿主機這個我也沒找到方法
但是無非幾個主要的點,比如主機名
一般主要是通過宿主機查看虛擬機,因為宿主機來批量管理虛擬機的,圖形化界面也可以使用VNC,詳細的命令就不說了,如果需要根據虛擬機來找宿主機的,那麼肯定是配置之前規劃有問題,亂了
④ qemu-kvm怎麼進入虛擬機配置文件
如果有yum的話,直接運行
# yum install qemu -y
如果不知道一個文件被包含在哪個包里,但確定有這個文件,
# yum provides /*/qemu-kvm
⑤ 創建基於SRIOV的KVM虛擬機
本文來自微信公眾號「ICT大融合」。
一、利用 iso 創建虛機
1. 安裝環境:
適用於centos/redhat.
2. 安裝准備:
yum -y install kvm
yum -y install qemu-kvmpython-virtinst libvirt libvirt-python virt-manager libguestfs-toolsbridge-utils virt-install
systemctl startlibvirtd.service
systemctl enablelibvirtd.service
3. 構建虛擬網路:
brctl addbr br0
brctl addif br0 ens6np0
註:ens6np0是netreonome CX-25G智能網卡,
[root@test4 vms]# ethtool -i ens6np0
driver: nfp
version: rev-2020.01.13.0820.a3cf8e9 (o-
firmware-version: 0.0.3.5 0.30 sriov-2.1.16.1nic
expansion-rom-version:
bus-info: 0000:02:00.0
4. 安裝虛擬機
mkdir -p /home/vms/
virt-install --virt-type=kvm --name=centos88 --vcpus=2--memory=4096 --location=/home/CentOS-7-x86_64-DVD-1908.iso --diskpath=/home/vms/centos88.qcow2,size=40,format=qcow2 --network bridge=br0--graphics none --extra-args='console=ttyS0' –force
註:
安裝鏡像iso一定放在/home/或其他可訪問目錄,否則提示沒有操作許可權。
然後一路按照提示,設置相應參數,直到虛擬機構建完成。
安裝完成之後,用virshlish查看虛擬機狀態。
[root@test4 vms]# virsh list
Id Name State
----------------------------------------------------
2 centos88 running
以上是虛擬機的網卡是基於virtio並接入主機的bridge,用ps可以看到相應進程。
[root@test4 ~]# ps -e |grep kvm
15484 ? 00:00:38 qemu-kvm
15491 ? 00:00:00 kvm-pit/15484
18406 ? 00:00:14 qemu-kvm
18413 ? 00:00:00 kvm-pit/18406
[root@test4 ~]# ps -e |grep vhost
15486 ? 00:00:00 vhost-15484
18408 ? 00:00:00 vhost-18406
二、用通過鏡像創建基於 SRIOV 虛擬機。
1. 創建vf :
echo 2 > /sys/class/net/ens6np0/device/sriov_numvfs
可以用如下命令查看,
lspci -kd 19ee:
lspci | grep -i ethernet
注意:19ee是netreonome的PCI vendor ID號。
2. 創建虛擬機鏡像文件:
cp centos88.qcow2 centos7.200.qcow2
chown qemu:qemu centos7.200.qcow2
cp centos88.xml centos7.200.xml
3. 修改配置文件
vi centos7.200.xml
其中,uuid採用uuidgen 命令生成。
選項Interface進行修改,Mac地址隨便改一個,不重復就行。關鍵是修改vf的PCI地址,用lspci獲取。
virsh define centos7.200.xml
4. 創建磁碟:
qemu-img create /home/vms/centos200.img 40G
5. 啟動虛機:
virsh start centos200
三、常見命令
virsh基本命令:
virsh list # 查看在運行的虛擬機
virsh mpxml vm-name # 查看kvm虛擬機配置文件
virsh start vm-name # 啟動kvm虛擬機
virsh shutdown vm-name # 正常關機
virsh destroy vm-name # 非正常關機,強制關閉虛擬機(相當於物理機直接拔掉電源)
virsh undefine vm-name # 刪除vm的配置文件
ls /etc/libvirt/qemu
# 查看刪除結果,Centos-6.6的配置文件被刪除,但磁碟文件不會被刪除
virsh define file-name.xml # 根據配置文件定義虛擬機
virsh suspend vm-name # 掛起,終止
virsh resumed vm-name # 恢復被掛起的虛擬機
virsh autostart vm-name # 開機自啟動vm
virsh console <虛擬機名稱> # 連接虛擬機
virt-install參數:
–name指定虛擬機名稱
–memory分配內存大小。
–vcpus分配CPU核心數,最大與實體機CPU核心數相同
–disk指定虛擬機鏡像,size指定分配大小單位為G。
–network網路類型,此處用的是默認,一般用的應該是bridge橋接。
–accelerate加速
–cdrom指定安裝鏡像iso
–vnc啟用VNC遠程管理,一般安裝系統都要啟用。
–vncport指定VNC監控埠,默認埠為5900,埠不能重復。
–vnclisten指定VNC綁定IP,默認綁定127.0.0.1,這里改為0.0.0.0。
–os-type=linux,windows
–os-variant=rhel6
--name 指定虛擬機名稱
--ram 虛擬機內存大小,以 MB 為單位
--vcpus 分配CPU核心數,最大與實體機CPU核心數相同
–-vnc 啟用VNC遠程管理,一般安裝系統都要啟用。
–-vncport 指定VNC監控埠,默認埠為5900,埠不能重復。
–-vnclisten 指定VNC綁定IP,默認綁定127.0.0.1,這里改為0.0.0.0。
--network 虛擬機網路配置
#其中子選項,bridge=br0 指定橋接網卡的名稱。
–os-type=linux,windows
–os-variant=rhel7.2
--disk 指定虛擬機的磁碟存儲位置
#size,初始磁碟大小,以 GB 為單位。
--location 指定安裝介質路徑,如光碟鏡像的文件路徑。
--graphics 圖形化顯示配置
#全新安裝虛擬機過程中可能會有很多交互操作,比如設置語言,初始化 root 密碼等等。
--extra-args 根據不同的安裝方式設置不同的額外選項
⑥ kvm虛擬機配置文件怎麼注釋配置
Java代碼
<domain type="kvm">
// domain 是一個所有虛擬機都需要的根元素,type定義使用哪個虛擬機管理程序,
<name>$vmUuid</name>
// name定義了一個名字
<uuid>$vmUuid</uuid>
// id唯一的標示一個運行的虛擬機
<memory unit="KiB">$vmMemory</memory>
// memory 定義客戶端啟動時可以分配到的最大內存
<vcpu placement="static">$vmVcpu</vcpu>
// vcpu的內容是為虛擬機最多分配幾個cpu,值處於1~maxcpu之間 //placement參數指定一個domain的cpu的分配模式,static、auto
<os>
<type arch="x86_64" machine="pc-i440fx-trusty">hvm</type>
// type參數指定了虛擬機操作系統的類型 // arch指定虛擬機的CPU架構,machine指定機器的類型 // hvm表明需要全虛擬化
<boot dev="hd" />
// boot:指定啟動設備,hd表示從硬碟啟動
</os>
<features>
// Hypervisors所有的特性都在fearures元素中
<acpi />
// 用於電源管理
<apic />
// 是裝置的擴充組合用來驅動 Interrupt 控制器
<pae />
// 擴展物理地址模式,使32位的客戶端支持大於4GB的內存
</features>
<clock offset="utc" />
// 客戶端的時間初始化來自宿主機的時間 // 大多數操作系統期望硬體時鍾保持UTC格式,UTC也是默認格式 // 當一個客戶端的OS觸發lifecycle時,它將採取新動作覆蓋默認操作 // 具體狀態參數如下:
<on_poweroff>destroy</on_poweroff>
// 當客戶端請求poweroff時執行特定的動作 // destroy:domain將會被完全終止,domain的所有資源會被釋放
<on_reboot>restart</on_reboot>
// 當客戶端請求reboot時執行特定的動作 // restart: domain會被終止,然後以相同的配置重新啟動
<on_crash>restart</on_crash>
// 當客戶端崩潰時執行的動作 // restart: domain會被終止,然後以相同的配置重新啟動
<devices>
// 所有的設備都是一個名為devices元素的子設備
<emulator>/usr/bin/kvm-spice</emulator>
// emulator元素指定模擬設備二進制文件的全路徑
<disk type="file" device="disk">
// 所有的設備看起來就像一個disk、floppy、cdrom等 // 他們通過一個disk元素指定。 // disk是一個描述disks的容器,這個disk的type是file
<driver name="qemu" type="qcow2" />
// driver允許更進一步的指定hypervisor driver的 // 相關細節。如果hypervisor支持多個後端驅動程序, // name屬性選擇一個主要的後端驅動的名稱, // type參數可以指定一個子類型,qcow2 寫時拷貝2
<source file="$imagePath" />
// source元素:在disk的type是file時,file屬性 // 指定一個合格的全路徑文件映像作為客戶端的磁碟
<target dev="sda" bus="virtio" />
// 將磁碟暴露給客戶機時的匯流排類型和設備名稱。 // target元素:控制匯流排設備在某個磁碟被選為客戶 // 端的OS時,dev屬性表明本地磁碟在客戶端上的實際 // 名稱,因為實際設備的名稱指定並不能保證映射到 // 客戶端OS上的設備。 // bus屬性指定了哪種類型的磁碟被模擬 // virtio 半虛擬化
</disk>
#foreach($!disk in $!diskList) // 循環創建虛擬硬碟
<disk type="file" device="disk">
<driver name="qemu" type="$!disk.diskDTO.diskFormat.value" />
<source file="$!disk.diskDTO.diskPath" />
<target dev="$!disk.devName" bus="usb" />
</disk>
#end // 控制器=====
<controller type="usb" index="0" model="ich9-ehci1">
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x7" />
</controller>
<controller type="usb" index="0" model="ich9-uhci1">
<master startport="0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x0" multifunction="on" />
</controller>
<controller type="pci" index="0" model="pci-root" />
<controller type="ide" index="0">
⑦ 華為虛擬化(kvm)平台,如何在宿主機上底層查看到虛擬機在共享存儲上存放位置和模板文件格式謝謝!
在linux上玩過kvm的朋友基本都曉得,在宿主機上運行了虛擬主機以後,我們無法直接看到某一個虛擬主機IP地址。比如:
[root@21yunwei /]$virsh list --all
Id 名稱 狀態
----------------------------------------------------
3 geoip running
4 tomcat running
5 jenkins running
18 gitlab running
19 win7 running
如果我們想知道gitlab這個虛擬機的IP地址,那麼是無法直接看到的。這里就需要一個小方法做排查,很簡單的,就兩步驟:
1,編輯虛擬主機配置文件。
[root@21yunwei /]$virsh edit gitlab
進去以後直接查找mac 可以定位到如下地址信息,記錄下mac後退出:
<mac address='52:54:00:FA:61:75'/>
2,通過arp -a判定虛擬機器IP地址。
[root@21yunwei /]$arp -a | grep -i 52:54:00:FA:61:75
? (192.168.1.101) at 52:54:00:fa:61:75 [ether] on br1
注意這里一定要加上-i 忽略大小寫。不然因為大小寫問題有可能查不到。
說明:這里只根據通信緩存記錄的mac 、IP地址手段做排查。也有可能找不到。最好的辦法是自己寫一個腳本跟網段內的所有伺服器都ping一次,記錄下mac、ip地址以後再查找就沒問題。
⑧ 如何把kvm創建的虛擬機鏡像拷出來
一、kvm虛擬機靜態遷移
1.靜態遷移就是虛擬機在關機狀態下,拷貝虛擬機虛擬磁碟文件與配置文件到目標虛擬主機中,實現的遷移。
(1)虛擬主機各自使用本地存儲存放虛擬機磁碟文件
本文實現基於本地磁碟存儲虛擬機磁碟文件的遷移方式,
(2)虛擬主機之間使用共享存儲存放虛擬機磁碟文件
該方式只是在目標虛擬主機上重新定義虛擬機就可以了。
2.靜態遷移過程如下
(1)確定虛擬機關閉狀態
⑨ 如何給運行的kvm虛擬機做快照
KVM-快照管理
1.kvm克隆
kvm 虛擬機有兩部分組成:img鏡像文件和xml配置文件(/etc/libvirt/qemu
克隆命令:virt-clone -o rhel6- 71 -n xuegod63-kvm2 -f /var/lib/libvirt/images/xuegod63-kvm2.img
virt-clone -o 原虛擬機 -n 新虛擬機 -f 新img文件
對比配置文件,將兩份xml文件做diff對比,裡面只修改了name、img、Mac 3個位置信息
克隆完成後,需要修改新虛擬機的網卡配置,並刪除/etc/udev/rule.d/70-*-net文件,
2.快照(snapshot)
kvm默認格式為raw格式,如需要修改鏡像文件格式。需要配置xml文件
查看鏡像文件格式qemu-ig info 鏡像文件
1)、轉換格式(將raw格式轉換為qcow2格式)
qemu-img convert -f raw -O qrow2 /var/lib/libvert/images/xuegod63-kvm2.img
需要修改xml文件virsh edit 虛擬機
2)、創建快照
qemu-img snapshot-create 虛擬機(可以用snapshot-create-as指定快照名稱)
3)、快照管理
qemu-img snapshot-list
4)、恢復快照
查看虛擬機狀態:virsh domstate xuegod63-kvm2
恢復快照:virsh snapshot-revert 虛擬機 快照名
查看當前快照: virsh snapshot-current xuegod63-kvm2
快照目錄:/var/lib/libvert/qemu/snapshot/虛擬機
刪除快照: virsh snapshot-delete 虛擬機 快照名
⑩ vcenter查看所有的虛擬機地址
1,在終端輸入: ip addr 然後enter
2,進入終端:ifconfig 然後enter
若出現bash: ifcogfig: 未找到命令...
解決辦法,先安裝net-tool插件
輸入命令:sudo yum install net-tools
這樣便解決了出現未找到命令的問題
3,進入終端輸入:ifconfig -a 然後enter
白格的地方即為虛擬機地址