linux学习—— CentOS命令行版下创建KVM虚拟机(VM)并添加SR-IOV的虚拟网卡(VF)
CentOS命令行版下創建KVM虛擬機(VM)并添加SR-IOV的虛擬網卡(VF)
- 前言
- 一、KVM
- 1、KVM及相關技術(qemu、libvirt)
- 2、創建KVM虛擬機
- 二、SR-IOV
- 1、SR-IOV的概念
- 2、使用SR-IOV創建VF
- 三、將VF分配給創建好的VM
- 總結
- 參考鏈接
最近看到一篇文章,內容是關于SR-IOV中VF的創建與將VF添加到VM中。比本文詳細很多,供大家參考
https://www.cnblogs.com/sctb/p/13848201.html
前言
我目前的需求是在服務器中創建幾個虛擬機,并使其進行RDMA通信。由于使用的是centos服務器,而且還是命令行版的,比較麻煩。所以打算使用KVM來創建虛擬機。進行RDMA通信需要網卡的支持,因為服務器上的物理網卡是Mellanox 的 connectX6,所以打算使用SR-IOV來在connectX6創建幾個VF供虛擬機使用。若各位有更好的方法,還望不吝賜教!
一、KVM
1、KVM及相關技術(qemu、libvirt)
KVM 全稱是基于內核的虛擬機(Kernel-based Virtual Machine)是一個開源軟件,基于內核的虛擬化技術,實際是嵌入系統的一個虛擬化模塊,通過優化內核來使用虛擬技術,該內核模塊使得 Linux 變成了一個Hypervisor,虛擬機使用 Linux 自身的調度器進行管理。
kvm負責cpu虛擬化和內存虛擬化,實現了cpu和內存的虛擬化,但kvm不能模擬其他設備
qemu是模擬IO設備(網卡,磁盤),kvm加上qemu之后就能實現真正意義上服務器虛擬化。
libvirt則是調用kvm虛擬化技術的接口進行管理
具體參考這里
2、創建KVM虛擬機
virsh是基于libvirt的一個命令行工具。可用于配置、管理虛擬機。具體使用方法請virsh --help或這里
virt-install用于創建新的KVM虛擬機。格式如下(正確的指令)
virt-install --name rhel7anaconda-guest -r 1024 --location=/home/jherrman/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --disk size=8 --nographics --extra-args="console=tty0 console=ttyS0,115200n8"將上面的路徑改為自己主機中iso鏡像的存儲位置即可。鏡像下載。這里的參數 --extra-args=“console=tty0 console=ttyS0,115200n8” 在命令行linux模式下非常重要。
我之前使用的安裝指令(有問題的指令),一直沒有成功
virt-install --name centos --ram 1024 --vcpus=1 --disk path=/var/vm/disk/centos7.raw --network network:default --os-variant=rhel7 -l http://tel.mirrors.163.com/centos/7/os/x86_64/ --extra-args='console=tty0 console=ttyS0,115200n8'可能是使用了–disk path=/var/vm/disk/centos7.raw,導致一直連接不上虛擬機。若有相同情況的朋友,一定要使用第一條安裝指令!!
二、SR-IOV
1、SR-IOV的概念
SR-IOV(Single-Root I/O Virtualization)技術是一種基于物理硬件的虛擬化解決方案,可提高物理I/O設備的性能的可擴展性。SR-IOV技術允許在虛擬機之間高效共享PCIe設備,由于SR-IOV技術是基于硬件實現的,可以使虛擬機獲得與宿主機媲美的I/O性能。
我的理解是:SR-IOV可以將物理硬件資源虛擬化一部分出來,虛擬出來的這部分資源可以當做完整的硬件資源使用,但是功能肯定沒有物理硬件資源那么齊全。
SR-IOV定義了兩種功能類型:
物理功能(PF):PF是全功能的PCIE,可以像其他任何PCIE設備一樣進行發現、管理、和處理。PF擁有完全配置和控制PCIE設備資源的能力。
虛擬功能(VF):VF是一種輕量級的PCIE功能,VF可以與PF以及與同一PF相關聯的其他VF共享一個或多個物理資源。VF僅允許擁有用于其自身行為的配置資源。
2、使用SR-IOV創建VF
可以參照官網文檔
創建方法:
選擇將要進行SR-IOV操作的物理網卡。我這里的物理網卡名稱為p4p2
確保SR-IOV功能在系統中是啟用的。可以參照官網文檔
查看網卡所支持分配的VF數量。將設備改為自己機器上的網卡
cat /sys/ class/net/p4p2/device/sriov_totalvfs開啟SR-IOV功能
echo 2 > /sys/ class/net/p4p2/device/sriov_numvfs此時VF已經創建完成。可以使用IP工具給創建好的VF配置MAC地址
ip link set p4p2 vf 0 mac e4:11:22:33:44:50 ip link set p4p2 vf 1 mac e4:11:22:33:44:51查看ip link show p4p2
此時VF已經創建完成
三、將VF分配給創建好的VM
查看已創建的VF的pci號,我用的是pci_0000_42_01_2這個VF。
在任意路徑下創建XML文件,我是用的路徑是 /etc/libvirt/qemu/networks/ ,因為這里是虛擬機網絡配置文件的地方。命名為yxj-interface.xml
其內容
保存后,加載該xml文件
virsh net-define /tmp/passthrough.xml最后使用命令,將VF添加到VM上
virsh attach-device MyGuest /etc/libvirt/qemu/networks/yxj-interface.xml --live --config這樣一個虛擬的SR-IOV網卡就被添加到KVM的虛擬機上了
最后的網絡配置可根據個人需求進行處理。
總結
第一步通過virsh-install命令創建VM
第二步生成SR-IOV的VF
第三步將VF綁定到VM
這里只介紹了最基本的處理方式,根據個人的不同需求可以適當的進行調整。比如我最后還需要將VF連接到OVS網橋上,這里還需要在將PF上默認的模式從Legacy改為SwitchDev。
參考鏈接
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/virtualization_deployment_and_administration_guide
總結
以上是生活随笔為你收集整理的linux学习—— CentOS命令行版下创建KVM虚拟机(VM)并添加SR-IOV的虚拟网卡(VF)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Systick滴答定时器寄存器、dela
- 下一篇: ztek usb转串口 linux,Z-