日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

虚拟化概述

發布時間:2023/11/28 生活经验 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟化概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

虛擬化概述
本文重點介紹了SR-IOV技術以及MLU270對SR-IOV的支持。
SR-IOV簡介
SR-IOV(Single Root I/O Virtualization)技術是一種基于硬件的虛擬化解決方案,可提供高性能和可伸縮性的虛擬解決方案。SR-IOV制定了標準化機制來實現多個虛擬機共享一個I/O設備。使得在虛擬機之間高效共享PCIe(Peripheral Component Interconnect Express,快速外設組件互連)設備,可以獲得與本機相似的I/O性能。了解SR-IOV規范,請查看 http://www.pcisig.com。
SR-IOV分為以下兩種功能類型:
? PF(Physical Function,物理功能):根據SR-IOV規范中定義,PF具有PCI功能,用于支持SR-IOV功能。PF包含SR-IOV功能結構,用于管理SR-IOV功能。PF是全功能的PCIe功能,可以像其他任何PCIe設備一樣進行發現、管理和處理。PF擁有完全配置資源,可以用于配置或控制PCIe設備。
? VF(Virtual Function,虛擬功能):與PF關聯的一種功能。VF是一種輕量級PCIe功能,可以與PF以及與同PCIE設備的其他VF共享物理資源。VF僅擁有用于其自身行為的配置資源。
每個SR-IOV設備都可有一個PF,并且每個PF可有多個與其關聯的VF。
每個VF都具有一個PCI內存空間,用于映射其寄存器集。VF設備驅動程序對寄存器集進行操作以啟用其功能,并且顯示為實際存在的PCI設備。創建VF后,可以直接將其指定給客戶VM。使得VF可以共享同一物理設備,并在沒有CPU和虛擬機管理程序軟件開銷的情況下,執行數據的輸入輸出。
虛擬化工作原理
MLU270支持SR-IOV,一張單卡資源可由最多4個虛擬機共享。每個VF擁有各自單獨、隔離的物理資源,可以彼此互不影響地并行執行任務。

虛擬化工作原理
SR-IOV在MLU270 上的應用
本章重點介紹了SR-IOV在MLU270上的應用。
虛擬功能VF的介紹
VF主要實現滿足上層業務需求的各項功能(業務功能)。PF接受VF的特權操作請求,替VF完成這些特權操作。VF各項資源可獨立使用、重置,不影響其它VF。
當重新配置VF時,用戶無需卸載驅動,即可動態配置VF。
虛擬功能VF的配置
根據配置,每個VF可設置為獨占1、1/2、或1/4整卡資源。板卡資源包括推理處理單元(IPU)、視頻處理單元(VPU)、JPEG處理單元(JPU)和內存等。
運行以下指令配置VF:
echo 占卡資源數 > /sys/bus/pci/devices/bdf/sriov_num
用戶根據需要將上面指令中的“占卡資源數”變量替換為1、2、3或4。
? 當使能1個VF,此VF獨占整個板卡資源,如下圖所示。

? 占用全部板卡資源的VF
? 當使能2個VF,每個VF獨占1/2板卡資源,如下圖所示。

? 占用1/2板卡資源的VF
? 當使能3個VF,其中1個VF占用1/2板卡資源,另外兩個VF各占用1/4板卡資源,如下圖所示。

? 占用1/2和1/4板卡資源的VF組合
? 當使能四個VF,每個VF獨占1/4板卡資源,如下圖所示。

? 占用1/4板卡資源的VF
VF Pass through到虛擬機
虛擬機模式VF示意圖如下所示:

虛擬機模式示意圖

將VF Pass through到虛擬機的步驟如下:

  1. 安裝MLU驅動。
    在Host主機上安裝MLU驅動,SR-IOV會同MLU驅動一起安裝。安裝完成后,重啟機器使Host新驅動生效。
  2. 拆分MLU270到VF。
    以拆分到4個VF為例,步驟如下:
    a. 通過lspci命令獲取MLU270卡的BDF(bus,device,function)。
    b. lspci -d:0270
    假設獲取到的某張MLU270卡的BDF為“xx:yy.0”。
    c. 執行以下命令將MLU270卡拆分到4個VF。
    d. sudo sh -c “echo 4 > /sys/bus/pci/devices/“xx:yy.0”/sriov_numvfs”
    該命令將MLU270拆分到4個VF,Device ID為0271。
    e. 執行以下命令查看拆分的4個VF。
    f. lspci -d:0271
    顯示如下信息:
    xx:yy.1 Processing accelerators: Device cabc:0271
    xx:yy.2 Processing accelerators: Device cabc:0271
    xx:yy.3 Processing accelerators: Device cabc:0271
    xx:yy.4 Processing accelerators: Device cabc:0271
  3. 將VF Pass through到QEMU-KVM虛擬機。
    使用以下命令將某一個VF Pass through到虛擬機,其中“xx:yy.z”為VF的BDF。
    virsh nodedev-detach pci_0000_xx_yy_z
  4. 啟動QEMU虛擬機。
    不同操作系統啟動虛擬機的命令可能會不同。下面以CentOS 7系統為例來啟動QEMU虛擬機:
    qemu-system-x86_64 -cpu host -enable-kvm -m 16000M -smp 8 -name MLU_QEMU_1 -drive file=Centos7.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2 -device vfio-pci,host=xx:yy.z,id=hostdev0,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8
  5. 在QEMU虛擬機里面安裝MLU的驅動安裝包,并重啟虛擬機以保證新安裝的驅動生效。
    熱遷移
    熱遷移(Live Migration),又叫動態遷移,通常是先將整個虛擬機的運行狀態完整保存下來,然后恢復到原有硬件平臺或其他硬件平臺。遷移成功后,虛擬機仍舊平滑運行,用戶不會察覺到任何差異。
    要使用熱遷移功能,必須有2張MLU270的卡,并且兩張卡的拆分方式必須相同。目前只支持相同的VF之間的遷移。例如,如果源虛擬機的vf為1b:00.1,目的虛擬機的vf為1c:00.1,那么可以成功遷移;如果目的虛擬機的vf為1c:00.2,則無法正常遷移。
    目前在MLU270上可以使用QEMU命令方式進行熱遷移。
    遷移前目的端虛機一定要加載驅動。
    基于QEMU命令遷移
  6. 將熱遷移patch打到QEMU。
    本文使用QEMU 3.10。可以從開源社區下載QEMU源碼,并打上vMLU設備熱遷移的patch(咨詢相關人員獲取該patch)。
    打完patch后,檢查QEMU根目錄qemu是否有hw/cambricon目錄。如果有,說明打patch成功。
    cd qemu-3.10
    patch –p 1 < ./qemu.patch
  7. 重新編譯QEMU。
    編譯完成后,將使用重新編譯的QEMU代替系統自帶的QEMU組件進行后續操作。
    mkdir build
    cd build
    …/configure
    make
  8. 分別在源端服務器和目的端服務器上加載卡Host PF驅動。
    進入驅動的源碼包,執行如下腳本。
    sudo ./load_with_sriov
  9. 遷移主機使能SR-IOV。
    QEMU可以在同一臺服務器上進行遷移,也可以在兩臺不同的服務器間進行遷移。遷移前需要源端和目的端全部使能卡的SR-IOV。xxxx:xx:xx:x為PCIe設備的BDF號。
    echo x > /sys/bus/pci/devices/0000:xxxx:xx:xx:x/sriov_numvfs
  10. 通過shell命令將pass through給虛擬機的vf與host解綁,然后與VFIO驅動綁定。
    以PCIe設備0000:03:01.1為例的腳本如下:
    virsh nodedev-detach pci_0000:03:01.1
  11. 使用重新編譯后的QEMU啟動源端虛擬機。
    此過程需要用戶提前安裝虛擬機鏡像,通過 -device vfio-pci 指定透傳的PCIe設備,參考參數如下:
    sudo qemu-system-x86_64 -cpu host -enable-kvm -m 16000M -smp 16 -device vfio-pci,host=0000:03:01.1,id=hostdev0,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -vnc :9 &
  12. 使用重新編譯后的QEMU啟動目的端虛擬機。通過 -incoming 指定遷移使用的端口號。
    本例中,目的虛擬機的輸入端口號為6667。
    sudo qemu-system-x86_64 -cpu host -enable-kvm -m 16000M -smp 16 -device vfio-pci,host=0000:03:01.1,id=hostdev0,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -incoming tcp:0:6667** -vnc :10 &
  13. 在源虛擬機中加載驅動。
    使用VNC或者其它方式連接源端虛擬機,進入驅動源碼包目錄,執行以下命令加載驅動:
    ./load
  14. 開始熱遷移。
    有以下兩種方法:
    ? 在源端QEMU界面按下Ctrl + Alt + 2,然后輸入 migrate tcp:xx.xx.xx.xx:端口號 。其中IP地址為目的端虛擬機的IP地址,端口號為之前設置的目的端虛擬機輸入端口號6667。
    ? migrate tcp:192.168.1.2:6667
    ? 在運行qemu的命令行里面添加 -monitor tcp:xx.xx.xx.xx:monitor_port_num,server,nowait 參數,使用 echo “migrate -d tcp:192.168.1.2:6667” | nc -n xx.xx.xx.xx monitor_port_num 命令觸發虛擬機進行熱遷移。
    ? #在源端虛擬機上執行以下命令
    ? sudo qemu-system-x86_64 -cpu host -enable-kvm -m 16000M -smp 16 -device vfio-pci,host=0000:03:01.1,id=hostdev0,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -monitor tcp:127.0.0.1:55551,server,nowait -vnc :9
    ? #在目的端虛擬機上執行以下命令
    ? sudo qemu-system-x86_64 -cpu host -enable-kvm -m 16000M -smp 16 -device vfio-pci,host=0000:03:01.1,id=hostdev0,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -incoming tcp:192.168.1.2:6667 -monitor tcp:127.0.0.1:55552,server,nowait -vnc :10
    ? #在源端虛擬機上執行以下命令
    ? echo “migrate -d tcp:192.168.1.2:6667” | nc -n 127.0.0.1:55551
  15. 遷移完成后,使用VNC或者其它方式連接目的端虛擬機。
    會發現目的端虛擬機上已完全恢復了源端內容。
    編解碼內部視頻以及圖像數據流
    虛擬化技術使用VPU和JPU進行內部視頻以及圖像數據流的編碼和解碼,與CNCodec(Cambricon Neuware Codec,硬件編解碼)的內部數據處理流程一致。

總結

以上是生活随笔為你收集整理的虚拟化概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。