確定讀寫路徑的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及確定讀寫路徑的方法和裝置。
【背景技術(shù)】
[0002] 虛擬化包括計(jì)算虛擬化,網(wǎng)絡(luò)虛擬化和存儲(chǔ)虛擬化,存儲(chǔ)虛擬化為虛擬機(jī)提供存 儲(chǔ)及存儲(chǔ)服務(wù),例如對(duì)虛擬機(jī)存儲(chǔ)做快照、存儲(chǔ)熱迀移。通過存儲(chǔ)前后端方式給虛擬機(jī)提供 存儲(chǔ)是當(dāng)前存儲(chǔ)虛擬化的主流使用方式。
[0003] 在通過存儲(chǔ)前后端方式給虛擬機(jī)提供存儲(chǔ)的情況下,客機(jī)操作系統(tǒng)(guest os) 讀寫磁盤數(shù)據(jù)時(shí),先把數(shù)據(jù)的讀寫請(qǐng)求發(fā)給存儲(chǔ)前端驅(qū)動(dòng),存儲(chǔ)前端驅(qū)動(dòng)把該讀寫請(qǐng)求放 到存儲(chǔ)前端(Storage fronted)和存儲(chǔ)后端(Storage backend)共享的輸入輸出(Input Output,10)環(huán),然后發(fā)送中斷給存儲(chǔ)后端,存儲(chǔ)后端收到中斷通知后,從該IO環(huán)里取出該 讀寫請(qǐng)求,然后根據(jù)虛擬機(jī)配置發(fā)給圖1的路徑1或者路徑2,具體的,可以是在虛擬機(jī)啟動(dòng) 時(shí),按照虛擬機(jī)配置文件決定走哪一條路徑。
[0004] 路徑1沒有存儲(chǔ)高級(jí)服務(wù),或者存儲(chǔ)高級(jí)服務(wù)依賴存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage Area Network,SAN)或者虛擬SAN,但是路徑短、存儲(chǔ)時(shí)延小,使得存儲(chǔ)性能較高。路徑2有存儲(chǔ) 尚級(jí)服務(wù),具有多種存儲(chǔ)功能,例如對(duì)虛擬機(jī)做快照、虛擬機(jī)存儲(chǔ)熱遷移、虛擬機(jī)存儲(chǔ)精簡(jiǎn) 配置(Thin provision)等,但是路徑2的路徑較長(zhǎng),存儲(chǔ)時(shí)延較大,使得存儲(chǔ)性能較差。
[0005] 當(dāng)前虛擬機(jī)按照虛擬機(jī)配置文件決定讀寫請(qǐng)求走哪一條路徑,無(wú)法靈活地根據(jù)讀 寫請(qǐng)求的需求,采用恰當(dāng)?shù)穆窂教幚碜x寫請(qǐng)求,無(wú)法兼顧存儲(chǔ)性能和存儲(chǔ)功能。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種確定讀寫路徑的方法和裝置,能根據(jù)讀寫請(qǐng)求的需求,采用恰當(dāng) 的路徑處理讀寫請(qǐng)求,從而兼顧存儲(chǔ)性能和存儲(chǔ)功能。
[0007] 第一方面,提供了一種確定讀寫路徑的方法,該方法用于物理主機(jī),該物理主機(jī)包 括硬件層、運(yùn)行在硬件層之上的宿主機(jī)Host、以及運(yùn)行在Host之上的虛擬機(jī),Host包括塊 設(shè)備以及虛擬塊設(shè)備,該方法包括:H 〇st獲取虛擬機(jī)的第一讀寫請(qǐng)求,第一讀寫請(qǐng)求包括 第一虛擬地址;在地址轉(zhuǎn)換信息集合中查找第一虛擬地址,其中,地址轉(zhuǎn)換信息集合包括虛 擬地址與物理塊設(shè)備的信息的對(duì)應(yīng)關(guān)系,物理塊設(shè)備的信息包括讀寫標(biāo)識(shí);在地址轉(zhuǎn)換信 息集合中包括第一虛擬地址,且第一讀寫請(qǐng)求為讀請(qǐng)求的情況下,通過第一虛擬地址對(duì)應(yīng) 的塊設(shè)備處理第一讀寫請(qǐng)求;或者,在地址轉(zhuǎn)信息集合中包括第一虛擬地址,第一讀寫請(qǐng)求 為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo)識(shí)指示可讀可寫的情況下,通過第一虛擬地 址對(duì)應(yīng)的塊設(shè)備處理第一讀寫請(qǐng)求;或者,在地址轉(zhuǎn)換信息集合中包括第一虛擬地址,第一 讀寫請(qǐng)求為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo)識(shí)指示只讀的情況下,通過第一虛 擬地址對(duì)應(yīng)的虛擬塊設(shè)備處理第一讀寫請(qǐng)求;或者,在地址轉(zhuǎn)換信息集合中不包括第一虛 擬地址的情況下,通過第一虛擬地址對(duì)應(yīng)的虛擬塊設(shè)備處理第一讀寫請(qǐng)求。
[0008] 結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,物理塊設(shè)備的信息還包括物理塊設(shè) 備標(biāo)識(shí)和物理地址,通過第一虛擬地址對(duì)應(yīng)的塊設(shè)備處理第一讀寫請(qǐng)求包括:將第一讀寫 請(qǐng)求轉(zhuǎn)換為塊設(shè)備讀寫請(qǐng)求,塊設(shè)備讀寫請(qǐng)求包括第一虛擬地址對(duì)應(yīng)的第一物理地址和第 一物理塊設(shè)備標(biāo)識(shí);通過第一虛擬地址對(duì)應(yīng)的塊設(shè)備處理塊設(shè)備讀寫請(qǐng)求。
[0009] 結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,當(dāng)?shù)刂忿D(zhuǎn)換信息集合中包括第一虛 擬地址,第一讀寫請(qǐng)求為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo)識(shí)指示只讀時(shí),該方法 還包括:在地址轉(zhuǎn)換信息集合中刪除第一虛擬地址對(duì)應(yīng)的初始記錄。
[0010] 結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,在所述地址轉(zhuǎn)換信息集合中不包括 所述第一虛擬地址的情況下,該方法還包括:根據(jù)第一讀寫請(qǐng)求獲取第一虛擬地址對(duì)應(yīng)的 第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo)識(shí);將獲取的第一虛擬地址、第一物理地 址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo)識(shí)的對(duì)應(yīng)關(guān)系添加到地址轉(zhuǎn)換信息集合中。
[0011] 結(jié)合第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,該方法還包括:根據(jù) 第一讀寫請(qǐng)求獲取第一虛擬地址對(duì)應(yīng)的第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo) 識(shí);將獲取的第一虛擬地址、第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo)識(shí)的對(duì)應(yīng)關(guān) 系添加到地址轉(zhuǎn)換信息集合中。
[0012] 結(jié)合第一方面或第一種至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在 第五種可能的實(shí)現(xiàn)方式中,該方法還包括:確定是否開啟存儲(chǔ)高級(jí)服務(wù);在地址轉(zhuǎn)換信息 集合中查找第一虛擬地址包括:在未開啟存儲(chǔ)高級(jí)服務(wù)的情況下,在地址轉(zhuǎn)換信息集合中 查找第一虛擬地址。
[0013] 結(jié)合第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,確定是否開啟存儲(chǔ)高 級(jí)服務(wù)包括:獲取路徑切換指示,路徑切換指示用于指示是否開啟存儲(chǔ)高級(jí)服務(wù);根據(jù)路 徑切換指示確定是否開啟存儲(chǔ)高級(jí)服務(wù)。
[0014] 結(jié)合第一方面或第一種至第六種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在 第七種可能的實(shí)現(xiàn)方式中,物理塊設(shè)備的信息還包括物理地址和物理塊設(shè)備標(biāo)識(shí),當(dāng)?shù)刂?轉(zhuǎn)換信息集合中包括第一虛擬地址時(shí),在獲取第一讀寫請(qǐng)求之前,該方法還包括:獲取第一 虛擬地址對(duì)應(yīng)的第一物理地址和第一物理塊設(shè)備標(biāo)識(shí);根據(jù)第一虛擬地址對(duì)應(yīng)的虛擬磁盤 的格式,確定第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo)識(shí);創(chuàng)建地址轉(zhuǎn)換信息集合,地址轉(zhuǎn)換信息集 合包括第一虛擬地址、第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo)識(shí)的對(duì)應(yīng)關(guān)系。
[0015] 結(jié)合第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,根據(jù)第一虛擬地址對(duì) 應(yīng)的虛擬磁盤的格式,確定第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo)識(shí),包括:在第一虛擬地址對(duì)應(yīng) 厚置備虛擬磁盤或精簡(jiǎn)置備磁盤的情況下,確定第一讀寫標(biāo)識(shí)指示可讀可寫;在第一虛擬 地址對(duì)應(yīng)差分鏡像虛擬磁盤,且第一虛擬地址對(duì)應(yīng)子鏡像文件的情況下,確定第一讀寫標(biāo) 識(shí)指示可讀可寫;在第一虛擬地址對(duì)應(yīng)差分鏡像虛擬磁盤,且第一虛擬地址對(duì)應(yīng)父鏡像文 件的情況下,確定第一讀寫標(biāo)識(shí)指示只讀。
[0016] 結(jié)合第一方面或第一種至第八種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在 第九種可能的實(shí)現(xiàn)方式中,獲取第一讀寫請(qǐng)求包括:從存儲(chǔ)前端和存儲(chǔ)后端共享的輸入輸 出IO環(huán)中獲取虛擬機(jī)的第二讀寫請(qǐng)求,第二讀寫請(qǐng)求包括第二虛擬地址;從第二讀寫請(qǐng)求 中拆分出第一讀寫請(qǐng)求,第一虛擬地址為第二虛擬地址中的部分虛擬地址。
[0017] 第二方面,提供了一種確定讀寫路徑的裝置,該裝置應(yīng)用于物理主機(jī),物理主機(jī)運(yùn) 行有虛擬機(jī),該裝置包括:存儲(chǔ)后端模塊,用于:獲取虛擬機(jī)的第一讀寫請(qǐng)求,第一讀寫請(qǐng) 求包括第一虛擬地址;在地址轉(zhuǎn)換信息集合中查找第一虛擬地址,其中,地址轉(zhuǎn)換信息集合 包括虛擬地址與物理塊設(shè)備的信息的對(duì)應(yīng)關(guān)系,物理塊設(shè)備的信息包括讀寫標(biāo)識(shí);塊設(shè)備, 用于在地址轉(zhuǎn)換信息集合中包括第一虛擬地址,且第一讀寫請(qǐng)求為讀請(qǐng)求的情況下,或者 在地址轉(zhuǎn)信息集合中包括第一虛擬地址,第一讀寫請(qǐng)求為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的 第一讀寫標(biāo)識(shí)指示可讀可寫的情況下,處理第一讀寫請(qǐng)求;虛擬塊設(shè)備,用于在地址轉(zhuǎn)換信 息集合中包括第一虛擬地址,第一讀寫請(qǐng)求為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的第一讀寫標(biāo) 識(shí)指示只讀的情況下,或者在地址轉(zhuǎn)換信息集合中不包括第一虛擬地址的情況下,通過第 一虛擬地址對(duì)應(yīng)的虛擬塊設(shè)備處理第一讀寫請(qǐng)求。
[0018] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,物理塊設(shè)備的信息還包 括物理塊設(shè)備標(biāo)識(shí)和物理地址,存儲(chǔ)后端模塊還用于:將第一讀寫請(qǐng)求轉(zhuǎn)換為塊設(shè)備讀寫 請(qǐng)求,塊設(shè)備讀寫請(qǐng)求包括第一虛擬地址對(duì)應(yīng)的第一物理地址和第一物理塊設(shè)備標(biāo)識(shí);塊 設(shè)備具體用于處理塊設(shè)備讀寫請(qǐng)求。
[0019] 結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,存儲(chǔ)后端模塊還用于,在 地址轉(zhuǎn)換信息集合中包括第一虛擬地址,第一讀寫請(qǐng)求為寫請(qǐng)求,且第一虛擬地址對(duì)應(yīng)的 第一讀寫標(biāo)識(shí)指示只讀的情況下,在地址轉(zhuǎn)換信息集合中刪除第一虛擬地址對(duì)應(yīng)的初始記 錄。
[0020] 結(jié)合第二方面,在第二方面的第三種可能的實(shí)現(xiàn)方式中,該裝置還包括:第一獲取 模塊,用于在地址轉(zhuǎn)換信息集合中不包括述第一虛擬地址的情況下,根據(jù)第一讀寫請(qǐng)求獲 取第一虛擬地址對(duì)應(yīng)的第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一讀寫標(biāo)識(shí);存儲(chǔ)后端模 塊將所述第一獲取模塊獲取的第一虛擬地址、第一物理地址、第一物理塊設(shè)備標(biāo)識(shí)和第一 讀寫