成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux 系統(tǒng)虛擬化模型及障礙

系統(tǒng) Linux 虛擬化
了滿(mǎn)足GeraldJ. Popek和Robert P. Goldberg提出的滿(mǎn)足虛擬化的3個(gè)條件,一個(gè)典型的解決方案是Trap andEmulate模型。

[[436822]]

x86架構(gòu)CPU虛擬化

Gerald J. Popek和Robert P. Goldberg在1974年發(fā)表的論文“Formal Requirements for Virtualizable[A1] [A2] Third Generation Architectures”中提出了符合虛擬化的3個(gè)條件:

(1)等價(jià)性,即VMM需要在宿主機(jī)上為虛擬機(jī)模擬出一個(gè)本質(zhì)上與物理機(jī)一致的環(huán)境。虛擬機(jī)在這個(gè)環(huán)境上運(yùn)行與其在物理機(jī)上運(yùn)行別無(wú)二致,除了可能因?yàn)橘Y源競(jìng)爭(zhēng)或者VMM的干預(yù)導(dǎo)致在虛擬環(huán)境中表現(xiàn)上略有差異,比如虛擬機(jī)的I/O、網(wǎng)絡(luò)等因宿主機(jī)的限速或者多個(gè)虛擬機(jī)共享資源,導(dǎo)致速度可能要比獨(dú)占物理機(jī)的慢一些。

(2)高效性,即虛擬機(jī)指令執(zhí)行的性能與其在物理機(jī)上運(yùn)行相比并無(wú)明顯損耗。該標(biāo)準(zhǔn)要求虛擬機(jī)中的絕大部分指令無(wú)須VMM干預(yù)而直接運(yùn)行在物理CPU上,比如我們?cè)趚86架構(gòu)上通過(guò)Qemu運(yùn)行的ARM系統(tǒng)并不是虛擬化,而是仿真(Emulator)。

(3)資源控制,即VMM完全控制系統(tǒng)資源。由VMM控制協(xié)調(diào)宿主機(jī)資源給各個(gè)虛擬機(jī),而不能由虛擬機(jī)控制了宿主機(jī)的資源。

陷入和模擬模型

為了滿(mǎn)足GeraldJ. Popek和Robert P. Goldberg提出的滿(mǎn)足虛擬化的3個(gè)條件,一個(gè)典型的解決方案是Trap andEmulate模型。

一般來(lái)說(shuō),處理器可以歸結(jié)為兩種運(yùn)行模式:系統(tǒng)模式和用戶(hù)模式。相應(yīng)的,CPU的指令也分為特權(quán)指令和非特權(quán)指令。特權(quán)指令只能在系統(tǒng)模式運(yùn)行,如果特權(quán)指令運(yùn)行在用戶(hù)模式就將觸發(fā)處理器異常。操作系統(tǒng)將內(nèi)核運(yùn)行在系統(tǒng)模式,因?yàn)閮?nèi)核需要管理系統(tǒng)資源,需要運(yùn)行特權(quán)指令,而普通的用戶(hù)程序則運(yùn)行在用戶(hù)模式。

在虛擬化場(chǎng)景下,虛擬機(jī)的用戶(hù)程序仍然運(yùn)行在用戶(hù)模式,但是虛擬機(jī)的內(nèi)核將運(yùn)行在用戶(hù)模式,這種方式稱(chēng)為Ring Compression。在這種方式下,虛擬機(jī)中的非特權(quán)指令直接運(yùn)行在處理器上,滿(mǎn)足了Popek和Goldberg提出的虛擬化標(biāo)準(zhǔn)中高效的要求,即指令的大部分無(wú)須VMM干預(yù)直接在處理器上運(yùn)行。但是,當(dāng)虛擬機(jī)執(zhí)行特權(quán)指令時(shí),因?yàn)槭窃谟脩?hù)模式執(zhí)行特權(quán)指令,將觸發(fā)處理器異常,從而陷入到VMM中,由VMM代理虛擬機(jī)完成系統(tǒng)資源的訪(fǎng)問(wèn),即所謂的模擬(emulate)。如此,又滿(mǎn)足了Popek和Goldberg提出的虛擬化標(biāo)準(zhǔn)中VMM控制系統(tǒng)資源的要求,虛擬機(jī)將不會(huì)因?yàn)榭梢灾苯舆\(yùn)行特權(quán)指令而修改宿主機(jī)的資源,從而破壞宿主機(jī)的環(huán)境。

x86架構(gòu)虛擬化的障礙

Gerald J. Popek和Robert P. Goldberg指出,修改系統(tǒng)資源的,或者在不同模式下行為有不同表現(xiàn)的,都屬于敏感指令。在虛擬化場(chǎng)景下,VMM需要監(jiān)測(cè)到這些敏感指令。一個(gè)支持虛擬化的體系架構(gòu)的敏感指令都屬于特權(quán)指令,即在非特權(quán)級(jí)別執(zhí)行這些敏感指令時(shí),CPU會(huì)拋出異常,進(jìn)入VMM的異常處理函數(shù),從而實(shí)現(xiàn)了控制VM訪(fǎng)問(wèn)敏感資源的目的。

但是,x86架構(gòu)恰恰不能滿(mǎn)足Gerald J. Popek和Robert P. Goldberg定義的這個(gè)準(zhǔn)則,且并不是所有的敏感指令都是特權(quán)指令,有些敏感指令在非特權(quán)模式下執(zhí)行時(shí)并不會(huì)拋出異常,此時(shí)VMM就無(wú)法攔截或者處理VM的行為。以修改FLAGS寄存器中的IF(interrupt flag)為例,我們首先使用指令pushfd將寄存器FLAGS的內(nèi)容壓到棧中,然后將棧頂?shù)腎F清0,最后使用popf指令從棧中恢復(fù)FLAGS寄存器。如果將虛擬機(jī)內(nèi)核運(yùn)行在ring 1,x86的CPU并不會(huì)拋出異常,而只是默默地忽略指令popfd,因此虛擬機(jī)關(guān)閉IF的目的并沒(méi)有生效。

有人提出半虛擬化的方式,即修改Guest的代碼,但是這不符合虛擬化的透明準(zhǔn)則。后來(lái),人們提出了二進(jìn)制翻譯的方式,包括靜態(tài)翻譯和動(dòng)態(tài)翻譯。靜態(tài)翻譯就是在運(yùn)行前,掃描整個(gè)可執(zhí)行文件,對(duì)敏感指令進(jìn)行翻譯,重新形成一個(gè)新的文件。靜態(tài)翻譯是有其局限性的,必須提前處理,而且有些指令只有在運(yùn)行時(shí)才產(chǎn)生的副作用,無(wú)法靜態(tài)處理。于是,動(dòng)態(tài)翻譯應(yīng)運(yùn)而生,即在運(yùn)行時(shí)以代碼塊為單元?jiǎng)討B(tài)地修改二進(jìn)制代碼。動(dòng)態(tài)翻譯在很多VMM中得到應(yīng)用,而且優(yōu)化的效果非常不錯(cuò)。

VMX擴(kuò)展

雖然程序員們從軟件層面采用了多種方案去解決x86架構(gòu)在虛擬化方面的問(wèn)題,但是軟件層的解決方案除了額外的開(kāi)銷(xiāo)外,也給VMM的實(shí)現(xiàn)帶來(lái)了巨大的復(fù)雜性。于是,Intel嘗試從硬件層面解決這個(gè)問(wèn)題。Intel并沒(méi)有將那些非特權(quán)的敏感指令修改為特權(quán)指令,因?yàn)椴⒉皇撬械奶貦?quán)指令都需要Trap and Emulate。我們舉個(gè)典型的例子,每當(dāng)操作系統(tǒng)內(nèi)核切換進(jìn)程時(shí),都會(huì)切換cr3寄存器,使其指向當(dāng)前運(yùn)行進(jìn)程的頁(yè)表。當(dāng)使用影子頁(yè)表進(jìn)行GVA到HPA的映射時(shí),需要捕獲Guest的每一次設(shè)置cr3寄存器的操作,VMM模塊使其指向影子頁(yè)表。而當(dāng)啟用了硬件層面的EPT支持后,cr3仍然指向Guest的進(jìn)程頁(yè)表,無(wú)須捕捉Guest設(shè)置cr3寄存器的操作,也就是說(shuō),雖然寫(xiě)cr3寄存器是特權(quán)指令,但是其不需要陷入VMM。

Intel開(kāi)發(fā)了VT技術(shù)支持虛擬化,為CPU增加了Virtual-Machine Extensions,簡(jiǎn)稱(chēng)為VMX。一旦啟動(dòng)了CPU的VMX支持,CPU將提供2種運(yùn)行模式:VMX Root Mode和VMX non-Root Mode,每一種模式都支持ring0 ~ ring3。VMM運(yùn)行在VMX RootMode,除了支持VMX外,VMX Root Mode和普通的模式并無(wú)本質(zhì)區(qū)別。VM運(yùn)行在VMX non-Root Mode,Guest無(wú)須再采用Ring Compression方式,Guest kernel可以直接運(yùn)行在VMX non-Root Mode的ring0,如圖1所示。

圖1 VMX運(yùn)行模式

處在VMX RootMode的VMM可以通過(guò)執(zhí)行CPU提供的虛擬化指令VMLaunch切換到VMX non-Root Mode,因?yàn)檫@個(gè)過(guò)程相當(dāng)于進(jìn)入Guest[3] ,所以通常也被稱(chēng)為VM entry。當(dāng)Guest內(nèi)部執(zhí)行了敏感指令,比如某些I/O操作后,將觸發(fā)CPU發(fā)生陷入的動(dòng)作,從VMX non-Root Mode切換回VMX Root Mode,這個(gè)過(guò)程相當(dāng)于退出VM,所以也稱(chēng)為VM exit。然后VMM將對(duì)Guest 的操作進(jìn)行模擬。相比于Ring Compression方式,即將Guest的內(nèi)核也運(yùn)行在用戶(hù)模式(ring 1 ~ ring 3)的方式,支持VMX擴(kuò)展的CPU[4] :

(1)運(yùn)行于Guest模式時(shí),Guest用戶(hù)空間的系統(tǒng)調(diào)用直接陷入Guest模式的內(nèi)核空間,而不是再陷入到Host模式的內(nèi)核空間。

(2)對(duì)于外部中斷,因?yàn)樾枰孷MM控制系統(tǒng)的資源,所以處于Guest模式的CPU收到外部中斷,則觸發(fā)CPU從Guest模式退出到Host模式,由Host內(nèi)核處理外部中斷。處理完中斷后,再重新切入Guest模式。為了提高I/O效率,Intel支持外設(shè)透?jìng)髂J剑谶@種模式下,Guest可以不必產(chǎn)生VM exit,“設(shè)備虛擬化”一章將討論這種特殊方式。

(3)不再是所有的特權(quán)指令都會(huì)導(dǎo)致處于Guest模式的CPU發(fā)生VM exit,僅當(dāng)運(yùn)行敏感指令時(shí)才會(huì)導(dǎo)致CPU從Guest模式陷入Host模式,因?yàn)橛械奶貦?quán)指令并不需要由VMM介入處理。

如同一個(gè)CPU可以分時(shí)運(yùn)行多個(gè)任務(wù)一樣,每個(gè)任務(wù)有自己的上下文,由調(diào)度器在調(diào)度時(shí)切換上下文,從而實(shí)現(xiàn)同一個(gè)CPU同時(shí)運(yùn)行多個(gè)任務(wù)。在VMX擴(kuò)展下,同一個(gè)物理CPU“一人分飾多角”,分時(shí)運(yùn)行著Host及Guest,在不同模式間按需切換,因此,不同模式也需要保存自己的上下文。為此,VMX設(shè)計(jì)了一個(gè)保存上下文的數(shù)據(jù)結(jié)構(gòu):VMCS。每一個(gè)Guest都有一個(gè)VMCS實(shí)例,當(dāng)物理CPU加載了不同的VMCS時(shí),將運(yùn)行不同的Guest,,如圖2所示。

圖2 多個(gè)Guest切換

VMCS中主要保存著兩大類(lèi)數(shù)據(jù),一類(lèi)是狀態(tài),包括Host的和Guest的,另外一類(lèi)是控制Guest運(yùn)行時(shí)的行為。

(1)Guest-state area,保存虛擬機(jī)狀態(tài)的區(qū)域。當(dāng)發(fā)生VM exit時(shí),Guest的態(tài)保存在這個(gè)區(qū)域;當(dāng)VM entry時(shí),這些狀態(tài)將被裝載到CPU中。這些都是硬件層面的自動(dòng)行為,VMM無(wú)須編碼干預(yù)。

(2)Host-state area,保存宿主機(jī)狀態(tài)的區(qū)域。當(dāng)發(fā)生VM exit時(shí),CPU自動(dòng)從VMCS裝載這些狀態(tài)到物理CPU;當(dāng)VM entry時(shí),CPU自動(dòng)將狀態(tài)保存到這個(gè)區(qū)域。

(3)VM-exit information fields。當(dāng)虛擬機(jī)發(fā)生VM exit時(shí),VMM需要知道導(dǎo)致VM exit的原因,然后才能對(duì)癥下藥,進(jìn)行相應(yīng)的模擬操作。為此,CPU會(huì)自動(dòng)將Guest退出的原因保存在這個(gè)區(qū)域,供VMM使用。

(4)VM-execution control fields。這個(gè)區(qū)域中的各種字段控制著虛擬機(jī)運(yùn)行時(shí)的一些行為,比如設(shè)置Guest運(yùn)行時(shí)訪(fǎng)問(wèn)cr3時(shí)是否觸發(fā)VM exit;控制VM entry與exit時(shí)的行為的VM-entry control fields和VM-exitcontrol fields。我們不再一一列出細(xì)節(jié),讀者如有需要可以查閱Intel手冊(cè)。

在創(chuàng)建VCPU時(shí),KVM模塊將為每個(gè)VCPU申請(qǐng)一個(gè)VMCS,每次CPU準(zhǔn)備切入Guest模式時(shí),將設(shè)置其VMCS指針指向即將切入的Guest對(duì)應(yīng)的VMCS實(shí)例:

  1. commit 6aa8b732ca01c3d7a54e93f4d701b8aabbe60fb7 
  2. [PATCH] kvm: userspace interface 
  3. linux.git/drivers/kvm/vmx.c 
  4. static struct kvm_vcpu *vmx_vcpu_load(structkvm_vcpu *vcpu) 
  5.     u64phys_addr = __pa(vcpu->vmcs); 
  6.     int cpu; 
  7.   
  8.     cpu =get_cpu(); 
  9.     … 
  10.     if(per_cpu(current_vmcs, cpu) != vcpu->vmcs) { 
  11.         … 
  12.        per_cpu(current_vmcs, cpu) = vcpu->vmcs; 
  13.         asmvolatile (ASM_VMX_VMPTRLD_RAX "; setna %0" 
  14.                  : "=g"(error) : "a"(&phys_addr),"m"(phys_addr) 
  15.                  : "cc"); 
  16.         … 
  17.     } 
  18.     … 

并不是所有的狀態(tài)都由CPU自動(dòng)保存與恢復(fù),我們還需要考慮效率。以cr2寄存器為例,大多數(shù)時(shí)候,從Guest退出到Host再次進(jìn)入Guest期間,Host并不會(huì)改變cr2寄存器的值,而且寫(xiě)cr2的開(kāi)銷(xiāo)不小,如果每次VM entry都更新一次cr2,除了浪費(fèi)CPU指令周期,毫無(wú)意義。因此,將這些狀態(tài)交給VMM由軟件自行控制更合適。

VCPU生命周期

對(duì)于每個(gè)虛擬處理器(VCPU),VMM使用一個(gè)線(xiàn)程代表VCPU這個(gè)實(shí)體。在Guest運(yùn)轉(zhuǎn)過(guò)程中,每個(gè)VCPU基本都在如圖1-3所示的狀態(tài)中不斷地轉(zhuǎn)換。

圖3 VCPU生命周期

在用戶(hù)空間準(zhǔn)備好后,VCPU所在線(xiàn)程向內(nèi)核中KVM模塊向發(fā)起一個(gè)ioctl請(qǐng)求KVM_RUN,告知內(nèi)核中的KVM模塊,用戶(hù)空間的操作已經(jīng)完成,可以切入Guest模式運(yùn)行Guest了。

在進(jìn)入內(nèi)核態(tài)后,KVM模塊將調(diào)用CPU提供的虛擬化指令切入Guest模式。如果是首次運(yùn)行Guest,則使用VMLaunch指令,否則使用VMResume指令。在這個(gè)切換過(guò)程中,首先,CPU的狀態(tài),也就是Host的狀態(tài),將會(huì)被保存到VMCS中存儲(chǔ)Host狀態(tài)的區(qū)域,非CPU自動(dòng)保存的狀態(tài)由KVM自行保存。然后,加載存儲(chǔ)在VMCS中的Guest的狀態(tài)到物理CPU,非CPU自動(dòng)恢復(fù)的狀態(tài)則由KVM自行恢復(fù)。

物理CPU切入Guest模式,運(yùn)行Guest指令。當(dāng)執(zhí)行Guest指令遇到敏感指令時(shí),CPU將從Guest模式切回到Host模式的ring0,進(jìn)入Host內(nèi)核的KVM模塊。在這個(gè)切換過(guò)程中,首先,CPU的狀態(tài),也就是Guest的狀態(tài),將會(huì)被保存到VMCS中存儲(chǔ)Guest狀態(tài)的區(qū)域,然后,加載存儲(chǔ)在VMCS中的Host的狀態(tài)到物理CPU。同樣的,非CPU自動(dòng)保存的狀態(tài),由KVM模塊自行保存。

處于內(nèi)核態(tài)的KVM模塊從VMCS中讀取虛擬機(jī)退出原因,嘗試在內(nèi)核中處理。如果內(nèi)核中可以處理,那么虛擬機(jī)就不必再切換到Host模式的用戶(hù)態(tài)了,處理完后,直接快速切回Guest。這種退出也稱(chēng)為輕量級(jí)虛擬機(jī)退出。

如果內(nèi)核態(tài)的KVM模塊不能處理虛擬機(jī)退出,那么VCPU將再進(jìn)行一次上下文切換,從Host的內(nèi)核態(tài)切換到Host的用戶(hù)態(tài),由VMM的用戶(hù)空間部分進(jìn)行處理。VMM用戶(hù)空間處理完畢后,再次發(fā)起切入Guest模式的指令。在整個(gè)虛擬機(jī)運(yùn)行過(guò)程中,這個(gè)過(guò)程循環(huán)往復(fù)。

下面是內(nèi)核空間切入、切出Guest的代碼:

  1. commit 6aa8b732ca01c3d7a54e93f4d701b8aabbe60fb7 
  2. [PATCH] kvm: userspace interface 
  3. linux.git/drivers/kvm/vmx.c 
  4. static int vmx_vcpu_run(struct kvm_vcpu *vcpu, …) 
  5.     u8 fail; 
  6.     u16fs_sel, gs_sel, ldt_sel; 
  7.     intfs_gs_ldt_reload_needed; 
  8.   
  9. again: 
  10.     … 
  11.         /*Enter guest mode */ 
  12.        "jne launched \n\t" 
  13.        ASM_VMX_VMLAUNCH "\n\t" 
  14.        "jmp kvm_vmx_return \n\t" 
  15.        "launched: " ASM_VMX_VMRESUME "\n\t" 
  16.        ".globl kvm_vmx_return \n\t" 
  17.        "kvm_vmx_return: " 
  18.         /*Save guest registers, load host registers, keep flags */ 
  19.     … 
  20.         if(kvm_handle_exit(kvm_run, vcpu)) { 
  21.             … 
  22.            goto again; 
  23.         } 
  24.     } 
  25.     return 0; 

在從Guest退出時(shí),KVM模塊首先調(diào)用函數(shù)kvm_handle_exit嘗試在內(nèi)核空間處理Guest退出。函數(shù)kvm_handle_exit有個(gè)約定,如果在內(nèi)核空間可以成功處理虛擬機(jī)退出,或者是因?yàn)槠渌蓴_比如外部中斷導(dǎo)致虛擬機(jī)退出等無(wú)須切換到Host的用戶(hù)空間,則返回1;否則返回0,表示需要求助KVM的用戶(hù)空間部分處理虛擬機(jī)退出,比如需要KVM用戶(hù)空間的模擬設(shè)備處理外設(shè)請(qǐng)求。

如果內(nèi)核空間成功處理了虛擬機(jī)的退出,則函數(shù)kvm_handle_exit返回1,我們看到上述代碼直接跳轉(zhuǎn)到標(biāo)簽again處,然后程序流程會(huì)再次切入Guest。這種虛擬機(jī)退出被稱(chēng)為輕量級(jí)虛擬機(jī)退出。如果函數(shù)kvm_handle_exit返回0,則函數(shù)vmx_vcpu_run結(jié)束執(zhí)行,CPU從內(nèi)核空間返回到用戶(hù)空間,以kvmtool為例,其相關(guān)代碼片段如下:

  1. commit 8d20223edc81c6b199842b36fcd5b0aa1b8d3456 
  2. Dump KVM_EXIT_IO details 
  3. kvmtool.git/kvm.c 
  4. int main(int argc, char *argv[]) 
  5.     … 
  6.     for (;;){ 
  7.        kvm__run(kvm); 
  8.   
  9.        switch (kvm->kvm_run->exit_reason) { 
  10.         caseKVM_EXIT_IO: 
  11.         … 
  12.     } 
  13.     … 

根據(jù)代碼可見(jiàn),kvmtool發(fā)起進(jìn)入Guest的代碼處于一個(gè)無(wú)限的for循環(huán)中。當(dāng)從KVM內(nèi)核空間返回用戶(hù)空間后,kvmtool在用戶(hù)空間處理Guest的請(qǐng)求,比如調(diào)用模擬設(shè)備處理I/O請(qǐng)求。在處理完Guest的請(qǐng)求后,重新進(jìn)入下一輪for循環(huán),kvmtool再次請(qǐng)求KVM模塊切入Guest。

王柏生 資深技術(shù)專(zhuān)家,先后就職于中科院軟件所、紅旗Linux和百度,現(xiàn)任百度主任架構(gòu)師。在操作系統(tǒng)、虛擬化技術(shù)、分布式系統(tǒng)、云計(jì)算、自動(dòng)駕駛等相關(guān)領(lǐng)域耕耘多年,有著豐富的實(shí)踐經(jīng)驗(yàn)。著有暢銷(xiāo)書(shū)《深度探索Linux操作系統(tǒng)》(2013年出版)。

謝廣軍 計(jì)算機(jī)專(zhuān)業(yè)博士,畢業(yè)于南開(kāi)大學(xué)計(jì)算機(jī)系。資深技術(shù)專(zhuān)家,多年的IT行業(yè)工作經(jīng)驗(yàn)。現(xiàn)擔(dān)任百度智能云副總經(jīng)理,負(fù)責(zé)云計(jì)算相關(guān)產(chǎn)品的研發(fā)。多年來(lái)一直從事操作系統(tǒng)、虛擬化技術(shù)、分布式系統(tǒng)、大數(shù)據(jù)、云計(jì)算等相關(guān)領(lǐng)域的研發(fā)工作,實(shí)踐經(jīng)驗(yàn)豐富。

本文內(nèi)容節(jié)選自《深度探索Linux虛擬化技術(shù)》,已獲得機(jī)械工業(yè)出版社華章公司授權(quán)。

本文轉(zhuǎn)載自微信公眾號(hào)「Linux閱碼場(chǎng)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux閱碼場(chǎng)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Linux閱碼場(chǎng)
相關(guān)推薦

2012-06-20 14:26:23

虛擬化

2011-10-18 16:09:51

廣域網(wǎng)虛擬化

2011-11-02 09:41:15

2009-12-17 15:35:28

2013-07-24 13:26:18

2012-06-06 09:37:58

虛擬化

2013-07-23 10:10:14

2018-02-28 14:29:18

2010-03-16 10:42:27

虛擬化整合比例

2011-10-29 21:20:18

2012-10-17 10:02:38

虛擬化

2010-01-14 09:23:03

數(shù)據(jù)中心虛擬化

2023-09-19 10:00:34

Linux虛擬

2011-08-08 09:46:18

服務(wù)器虛擬化

2010-09-29 10:16:02

Linux集群虛擬化

2014-01-13 10:09:08

存儲(chǔ)虛擬化云計(jì)算

2012-04-27 15:22:46

存儲(chǔ)虛擬化障礙

2018-02-28 14:41:29

2012-05-24 09:29:28

虛擬化ESG服務(wù)器虛擬化

2009-10-28 15:45:22

linux虛擬化技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美三级免费观看 | 日本一区二区三区视频在线 | 91麻豆精品国产91久久久更新资源速度超快 | 毛片一级片 | 中文字幕亚洲区一区二 | 国产黄色麻豆视频 | 欧美性猛交一区二区三区精品 | 国产精品美女 | 国产日韩一区二区 | 二区三区视频 | 久色视频在线 | 国产一区成人 | 久久国产精品99久久久久 | 青青久在线视频 | 激情五月综合 | 玖玖综合网 | 国产一区二区三区精品久久久 | 日韩成人精品一区 | 亚洲一区二区三区视频在线 | 国产高清视频在线观看 | 搞黄网站在线观看 | 亚洲综合色婷婷 | 欧美精品久久久 | 欧美日韩综合视频 | 日韩中文字幕免费在线观看 | 黄色av免费 | 黑色丝袜三级在线播放 | 久久精品99国产精品 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美一区二区三区在线看 | 久久久久久综合 | 国产一级免费视频 | 亚洲成人一区二区三区 | 五月天天丁香婷婷在线中 | 欧美一区2区三区4区公司 | 日本网站免费观看 | 欧美一区二区三区久久精品 | 91免费在线看 | 日本在线免费看最新的电影 | 欧美久久一区二区 | 日本理论片好看理论片 |