專利名稱:存儲介質(zhì)處理方法、系統(tǒng)及數(shù)據(jù)讀寫操作方法、系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲技術(shù),特別是涉及一種對計(jì)算機(jī)存儲介質(zhì)進(jìn)行虛擬 化的方法和系統(tǒng)。
背景技術(shù):
計(jì)算機(jī)數(shù)據(jù)存儲在計(jì)算機(jī)物理存儲介質(zhì)上。計(jì)算機(jī)物理存儲介質(zhì)上的數(shù) 據(jù)存儲單元是數(shù)據(jù)塊,數(shù)據(jù)被寫入計(jì)算機(jī)時(shí),寫入一個(gè)固定地址的數(shù)據(jù)塊中, 并在需要時(shí),從此數(shù)據(jù)塊中讀取數(shù)據(jù)。計(jì)算機(jī)物理存儲介質(zhì)的容量是物理存 儲介質(zhì)上全部數(shù)據(jù)塊容量之和。計(jì)算機(jī)呈現(xiàn)給用戶的物理存儲介質(zhì)容量是一 個(gè)固定的,物理存儲介質(zhì)本身所決定的實(shí)際數(shù)值。
圖1是現(xiàn)有技術(shù)下數(shù)據(jù)讀寫的流程圖。如圖所示,現(xiàn)有技術(shù)下數(shù)據(jù)讀寫 包括以下步驟
步驟101: IO (Input-Output,輸入輸出)子系統(tǒng)發(fā)出數(shù)據(jù)讀寫指令。 每一個(gè)數(shù)據(jù)讀寫指令包括指令類型、數(shù)據(jù)地址、數(shù)據(jù)暫存區(qū)等。指令 類型可以是寫數(shù)據(jù)指令,或讀數(shù)據(jù)指令。如果是寫數(shù)據(jù)指令,數(shù)據(jù)暫存區(qū)存 放寫入的數(shù)據(jù)。如果是讀數(shù)據(jù)指令,數(shù)據(jù)暫存區(qū)用于存放讀取的數(shù)據(jù)。
物理存儲介質(zhì)通過SCSI (Small Computer System Interface,小型計(jì)算機(jī) 系統(tǒng)接口)與操作系統(tǒng)交互。操作系統(tǒng)在掃描存儲設(shè)備時(shí),逐一掃描SCSI端
口,并詢問掃描到的物理存儲介質(zhì)的相關(guān)信息,據(jù)此建立可以被操作系統(tǒng)訪
問的設(shè)備對象。當(dāng)IO子系統(tǒng)發(fā)出數(shù)據(jù)讀寫指令時(shí),通過操作系統(tǒng)建立的設(shè)備 對象,將指令直接發(fā)送到相應(yīng)的物理存儲介質(zhì)?,F(xiàn)有技術(shù)下,SCSI端口和與 SCSI端口連接的存儲介質(zhì)是物理設(shè)備。
步驟102:物理存儲介質(zhì)接收到所述指令。
根據(jù)計(jì)算機(jī)操作系統(tǒng)數(shù)據(jù)讀寫指令的組成規(guī)則,分解數(shù)據(jù)讀寫指令,獲 得指令類型、數(shù)據(jù)地址等。
步驟103:判斷所述指令是寫數(shù)據(jù)指令還是讀數(shù)據(jù)指令,如果是寫數(shù)據(jù)指
令,執(zhí)行步驟104,否則執(zhí)行步驟105。
步驟104:將所述指令中的數(shù)據(jù),記錄在物理存儲介質(zhì)上,所述指令包含 的數(shù)據(jù)地址所定位的數(shù)據(jù)塊中。
物理存儲介質(zhì)的數(shù)據(jù)塊是計(jì)算機(jī)存儲數(shù)據(jù)的基本單元,現(xiàn)有技術(shù)下,物 理存儲介質(zhì)的數(shù)據(jù)塊是固定的、預(yù)先分配的,數(shù)據(jù)塊地址是操作系統(tǒng)讀寫指 令中的數(shù)據(jù)地址。
寫入數(shù)據(jù)后,執(zhí)行步驟106,返回指令完成信息。
每一個(gè)寫數(shù)據(jù)指令通過步驟101到步驟104,及步驟106完成。如果是讀 數(shù)據(jù)指令,執(zhí)行歩驟103后,執(zhí)行步驟105。
步驟105:根據(jù)所述指令中的數(shù)據(jù)地址,從所定位的物理存儲介質(zhì)的數(shù)據(jù) 塊中,讀取所述指令中指定長度的數(shù)據(jù)。
讀取數(shù)據(jù)后,執(zhí)行步驟106,返回指令完成信息。
從以上對現(xiàn)有技術(shù)的描述中,可以看到,數(shù)據(jù)讀寫指令中的數(shù)據(jù)地址是 物理存儲介質(zhì)的數(shù)據(jù)塊地址。數(shù)據(jù)存儲的容量取決于物理存儲介質(zhì)的容量, 超出物理存儲介質(zhì)容量的數(shù)據(jù)讀寫無法完成。隨著存儲數(shù)據(jù)量的增加,現(xiàn)有 物理存儲介質(zhì)可能用盡,導(dǎo)致數(shù)據(jù)讀寫失敗。即使增加新的物理存儲介質(zhì), 由于新物理存儲介質(zhì)與現(xiàn)有物理存儲介質(zhì)是兩個(gè)獨(dú)立的物理設(shè)備,無法動態(tài) 整合為一個(gè)物理設(shè)備供使用,數(shù)據(jù)讀寫仍然無法完成。應(yīng)用中,有些數(shù)據(jù)可 以存儲在物理上分離的存儲介質(zhì)上;而有些數(shù)據(jù)必須連續(xù)存儲在同一物理存 儲介質(zhì)上,這種應(yīng)用環(huán)境下的存儲介質(zhì)的擴(kuò)容將是一個(gè)難題。即便一種方法 可以提供以一個(gè)大容量的物理存儲介質(zhì)替換小容量存儲介質(zhì),但是數(shù)據(jù)遷移 過程的數(shù)據(jù)不可用性,及數(shù)據(jù)遷移可能造成的數(shù)據(jù)丟失,都是用戶擔(dān)心的實(shí) 際問題。
隨著計(jì)算機(jī)應(yīng)用的普及,數(shù)據(jù)量增長帶來的存儲容量擴(kuò)充,成為每一個(gè) 企業(yè)級用戶關(guān)心的問題。為了減少可能的,由于數(shù)據(jù)量增長而帶來的容量不 足,用戶不得不以數(shù)倍于現(xiàn)實(shí)需求的容量購買計(jì)算機(jī)存儲設(shè)備,因而加大預(yù) 算,增加成本。更加遺憾的是,隨著新技術(shù)的更新,原來購置的設(shè)備可能未 及使用,已面臨淘汰。
在實(shí)際應(yīng)用中,還可能面臨這樣的問題,原來預(yù)計(jì)數(shù)據(jù)存儲量大的應(yīng)用,
使用中,容量的消耗與預(yù)計(jì)相差甚遠(yuǎn),以至于分配給這一應(yīng)用的物理存儲介
質(zhì)容量消耗甚少,基本閑置,但卻無法重新分配給其它需要的應(yīng)用使用;對 于需要擴(kuò)容的應(yīng)用只有通過重新購買新設(shè)備補(bǔ)充容量,造成不必要的成本增 加。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種存儲介質(zhì)處理方法、系統(tǒng)及 數(shù)據(jù)讀寫操作方法、系統(tǒng),從而將容量有限的、數(shù)量有限的物理存儲介質(zhì)虛
擬為大容量的、動態(tài)分配的、數(shù)倍于實(shí)際容量的虛擬存儲介質(zhì),解決用戶擴(kuò) 容與資源高效使用的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種存儲介質(zhì)處理方法,包括-.
步驟A,設(shè)置物理存儲介質(zhì)集的虛擬地址對照表,記錄物理存儲介質(zhì)集、 物理存儲介質(zhì)及虛擬存儲介質(zhì)之間的對應(yīng)關(guān)系;
步驟B,將物理存儲介質(zhì)的設(shè)備標(biāo)識添加到虛擬地址對照表的相應(yīng)單元;
步驟C,創(chuàng)建與物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì)的設(shè)備對象,并向 虛擬SCSI端口驅(qū)動模塊注冊,所述虛擬存儲介質(zhì)的設(shè)備標(biāo)識記錄于虛擬地址 對照表的相應(yīng)單元;
步驟D,虛擬SCSI端口驅(qū)動模塊向操作系統(tǒng)注冊虛擬存儲介質(zhì)的設(shè)備對象。
上述的存儲介質(zhì)處理方法,其中,所述虛擬地址對照表包括 物理存儲介質(zhì)集標(biāo)識記錄單元,用于記錄物理存儲介質(zhì)集標(biāo)識; 物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的
物理存儲介質(zhì)的設(shè)備標(biāo)識或數(shù)據(jù)塊地址;及
虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的
虛擬存儲介質(zhì)的設(shè)備標(biāo)識。
上述的存儲介質(zhì)處理方法,其中,所述步驟B中,將物理存儲介質(zhì)設(shè)備
標(biāo)識或數(shù)據(jù)塊地址添加到物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,并初始化所述物
理存儲介質(zhì)。
上述的存儲介質(zhì)處理方法,其中,所述步驟C具體包括
步驟Cl,根據(jù)創(chuàng)建虛擬存儲介質(zhì)指令中的物理存儲介質(zhì)集標(biāo)識定位虛擬
地址對照表的虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元;
步驟C2,創(chuàng)建虛擬存儲介質(zhì)的設(shè)備標(biāo)識并記錄在所述虛擬存儲介質(zhì)設(shè)備 標(biāo)識記錄單元中,并記錄虛擬存儲介質(zhì)的容量;
步驟C3,創(chuàng)建所述容量的虛擬存儲介質(zhì)的設(shè)備對象,并向虛擬SCSI端 口驅(qū)動模塊注冊。
上述的存儲介質(zhì)處理方法,其中,所述步驟D具體包括
步驟Dl,虛擬SCSI端口驅(qū)動接收到操作系統(tǒng)的掃描SCSI端口指令后向 虛擬存儲管理子模塊發(fā)出詢問請求;
步驟D2,虛擬存儲管理子模塊定位虛擬地址對照表中的虛擬存儲介質(zhì)設(shè) 備標(biāo)識記錄單元;
步驟D3,獲取虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元中的虛擬存儲介質(zhì)的設(shè)備 標(biāo)識,在相同設(shè)備標(biāo)識的設(shè)備對象不存在時(shí),建立對應(yīng)虛擬存儲介質(zhì)的設(shè)備 對象,并注冊到操作系統(tǒng)。
為了更好的實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種數(shù)據(jù)讀寫操作方法,用 于根據(jù)指令實(shí)現(xiàn)虛擬存儲介質(zhì)的設(shè)備對象的訪問,其中,虛擬地址對照表包 括虛擬存儲介質(zhì)地址記錄單元,記錄有虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地 址對應(yīng)關(guān)系,所述方法包括
步驟E,根據(jù)虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系將數(shù)據(jù)寫
指令中的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后完成數(shù)據(jù)寫操作; 和/或
步驟F,根據(jù)虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系將數(shù)據(jù)讀 指令中的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后完成數(shù)據(jù)讀操作。
上述的數(shù)據(jù)讀寫操作方法,其中,所述步驟E具體包括
步驟El,判斷所述寫指令中的數(shù)據(jù)塊地址是否為已分配的存儲單元,如 果是,執(zhí)行步驟E2;否則,執(zhí)行步驟E3;
步驟E2,分配新的物理存儲單元,并更新虛擬存儲介質(zhì)和物理存儲介質(zhì)
間的地址對應(yīng)關(guān)系,進(jìn)入步驟E3;
步驟E3,根據(jù)虛擬地址對照表中的虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地 址對應(yīng)關(guān)系,將所述寫指令中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址,
并將數(shù)據(jù)寫入到物理存儲介質(zhì)的數(shù)據(jù)塊中。
上述的數(shù)據(jù)讀寫操作方法,其中,所述步驟E2具體包括
步驟E21,根據(jù)設(shè)置的物理存儲介質(zhì)分配原則,定位下一個(gè)可分配物理
存儲介質(zhì)的數(shù)據(jù)塊地址;
步驟E22,將指令中的虛擬存儲介質(zhì)設(shè)備標(biāo)識、虛擬存儲介質(zhì)數(shù)據(jù)塊所
在的存儲單元的起始地址、物理存儲介質(zhì)設(shè)備標(biāo)識、物理存儲介質(zhì)可分配存
儲單元的起始地址記錄在對應(yīng)的虛擬存儲介質(zhì)地址記錄單元中。 上述的數(shù)據(jù)讀寫操作方法,其中,所述步驟F具體包括 步驟Fl,判斷所述讀指令中的數(shù)據(jù)塊地址是否為已分配的存儲單元,如
果是,執(zhí)行步驟F2;否則結(jié)束讀取操作;
步驟F2,根據(jù)虛擬地址對照表中的虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地
址對應(yīng)關(guān)系,將讀指令中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后, 定位物理存儲介質(zhì)的數(shù)據(jù)塊并讀取相應(yīng)數(shù)據(jù)。
為了更好的實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種存儲介質(zhì)處理系統(tǒng),包
括用于存儲數(shù)據(jù)的物理存儲介質(zhì),其中,還包括
虛擬存儲控制器,用于設(shè)置物理存儲介質(zhì)集的虛擬地址對照表,并將物 理存儲介質(zhì)的設(shè)備標(biāo)識添加到虛擬地址對照表的相應(yīng)單元后創(chuàng)建與物理存儲
介質(zhì)集對應(yīng)的虛擬存儲介質(zhì);
虛擬SCSI端口驅(qū)動模塊,向操作系統(tǒng)注冊為SCSI端口設(shè)備,用于為所 述虛擬存儲介質(zhì)建立設(shè)備對象,并用于將所述設(shè)備對象注冊到操作系統(tǒng);
所述虛擬地址對照表用于記錄物理存儲介質(zhì)集、物理存儲介質(zhì)及虛擬存 儲介質(zhì)之間的對應(yīng)關(guān)系。
上述的存儲介質(zhì)處理系統(tǒng),其中,所述虛擬地址對照表包括
物理存儲介質(zhì)集標(biāo)識記錄單元,用于記錄物理存儲介質(zhì)集標(biāo)識;
物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的 物理存儲介質(zhì)的設(shè)備標(biāo)識或數(shù)據(jù)塊地址;及
虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的 虛擬存儲介質(zhì)的設(shè)備標(biāo)識。
為了更好的實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種數(shù)據(jù)讀寫操作系統(tǒng),用
于根據(jù)指令實(shí)現(xiàn)對虛擬存儲介質(zhì)的設(shè)備對象的訪問,其中,包括
虛擬存儲控制器,用于根據(jù)虛擬地址對照表將數(shù)據(jù)讀寫指令中的虛擬存 儲介質(zhì)的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后實(shí)現(xiàn)數(shù)據(jù)讀寫操 作;
虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系保存于虛擬地址對照表 的虛擬存儲介質(zhì)地址記錄單元。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是采用本發(fā)明提供的技術(shù)方案, 操作系統(tǒng)掃描到的存儲介質(zhì)是虛擬存儲介質(zhì),并且,其容量是虛擬容量。虛 擬存儲介質(zhì)的容量可以大于支持該虛擬存儲介質(zhì)的物理存儲介質(zhì)集的容量。 物理存儲介質(zhì)集中的物理存儲介質(zhì)可以動態(tài)增加,并且,虛擬存儲介質(zhì)的容 量也可以動態(tài)擴(kuò)展,隨時(shí)滿足擴(kuò)容要求。物理存儲介質(zhì)集中的物理存儲介質(zhì), 只有在數(shù)據(jù)寫入時(shí),才動態(tài)地分配給虛擬存儲介質(zhì)存儲數(shù)據(jù),基于物理存儲 介質(zhì)集建立的所有虛擬存儲介質(zhì)共享其中的物理存儲介質(zhì)。因而,最大限度 地實(shí)現(xiàn)存儲資源的高效使用。不難看出,本發(fā)明提供的技術(shù)方案在物理存儲 介質(zhì)的高效使用和存儲熱擴(kuò)容方面具有的優(yōu)勢。從而,減少存儲投入、延長 再投入周期,簡化存儲管理。
圖1是現(xiàn)有技術(shù)下數(shù)據(jù)讀寫流程圖2是本發(fā)明的存儲介質(zhì)處理系統(tǒng)的系統(tǒng)方框圖3是本發(fā)明向物理存儲介質(zhì)集中添加物理存儲介質(zhì)的流程圖4是本發(fā)明創(chuàng)建虛擬存儲介質(zhì)的流程圖5是本發(fā)明虛擬存儲介質(zhì)設(shè)備對象注冊到操作系統(tǒng)的流程圖。 圖6是本發(fā)明實(shí)現(xiàn)數(shù)據(jù)讀寫過程的流程圖; 圖7是虛擬存儲介質(zhì)集容量串行分配原則的示意圖; 圖8是虛擬存儲介質(zhì)集容量并行分配原則的示意圖。
具體實(shí)施例方式
本發(fā)明的主要思想是,創(chuàng)建虛擬存儲介質(zhì),并在物理存儲介質(zhì)和虛擬存 儲介質(zhì)之間建立對應(yīng)關(guān)系,在操作系統(tǒng)進(jìn)行存儲設(shè)備掃描時(shí),將虛擬存儲介 質(zhì)提供給操作系統(tǒng)。在IO子系統(tǒng)發(fā)出數(shù)據(jù)讀寫指令時(shí),虛擬存儲設(shè)備根據(jù)建
立的對應(yīng)關(guān)系將數(shù)據(jù)讀寫指令映射到物理存儲介質(zhì),進(jìn)行相應(yīng)的讀寫操作。 這樣,通過建立虛擬存儲介質(zhì)設(shè)備對象,可以為物理存儲介質(zhì)提供動態(tài)、有 效的分配管理機(jī)制,充分利用物理存儲介質(zhì),從而解決用戶擴(kuò)容與資源均衡 消耗的問題。
以下參照附圖詳細(xì)說明本發(fā)明的方法和系統(tǒng)。
圖2是本發(fā)明提供的存儲介質(zhì)處理系統(tǒng)方框圖。如圖2所示,實(shí)現(xiàn)本發(fā)
明的系統(tǒng)包括IO子系統(tǒng)、虛擬SCSI端口驅(qū)動模塊、虛擬存儲控制器以及物 理存儲介質(zhì)。虛擬存儲控制器包括虛擬存儲管理子模塊和IO控制子模塊,用 于分配、管理虛擬存儲介質(zhì),完成數(shù)據(jù)讀寫指令。
其中,IO子系統(tǒng),用于將存儲設(shè)備掃描指令發(fā)送給虛擬SCSI端口驅(qū)動 模塊,并且,將數(shù)據(jù)讀寫指令發(fā)送給虛擬存儲控制器建立的虛擬存儲介質(zhì)設(shè) 備對象。數(shù)據(jù)讀寫指令中的數(shù)據(jù)塊地址是虛擬存儲介質(zhì)的數(shù)據(jù)塊地址。
虛擬SCSI端口驅(qū)動模塊,是向操作系統(tǒng)提供標(biāo)準(zhǔn)SCSI端口的設(shè)備驅(qū)動 模塊。虛擬SCSI端口驅(qū)動模塊啟動時(shí),向操作系統(tǒng)注冊為SCSI端口設(shè)備,
用于在接收到操作系統(tǒng)下達(dá)的存儲設(shè)備掃描指令時(shí),向虛擬存儲控制器中的 虛擬存儲管理子模塊發(fā)出詢問請求,將得到的虛擬存儲介質(zhì)設(shè)備對象返回給
IO子系統(tǒng)。
虛擬存儲管理子模塊,用于將虛擬存儲介質(zhì)設(shè)備對象返回給io子系統(tǒng),
創(chuàng)建、分配、管理虛擬存儲介質(zhì),以及在接收到添加、刪除物理存儲介質(zhì)指 令時(shí)添加、刪除物理存儲介質(zhì),并將虛擬存儲介質(zhì)和物理存儲介質(zhì)間的對應(yīng) 關(guān)系記錄在虛擬地址對照表中。
IO控制子模塊,用于在接收到來自10子系統(tǒng)的數(shù)據(jù)讀寫指令后,對照
虛擬地址對照表,將接收到的數(shù)據(jù)讀寫指令中的數(shù)據(jù)塊地址,轉(zhuǎn)換為物理存 儲介質(zhì)數(shù)據(jù)塊地址,并在完成數(shù)據(jù)讀寫后返回指令完成信息。
物理存儲介質(zhì),用于存儲數(shù)據(jù)。物理存儲介質(zhì)在虛擬存儲控制器模塊的 管理和分配下,以虛擬存儲介質(zhì)的形式,提供給用戶讀寫數(shù)據(jù)。物理存儲介 質(zhì)可以是本地磁盤、網(wǎng)絡(luò)共享磁盤或存儲局域網(wǎng)環(huán)境下的網(wǎng)絡(luò)連接磁盤。
上述的虛擬地址對照表,直接保存在物理存儲介質(zhì)上,用于記錄虛擬存 儲介質(zhì)和物理存儲介質(zhì)間的對應(yīng)關(guān)系。系統(tǒng)啟動時(shí),調(diào)入內(nèi)存中,并在物理
存儲介質(zhì)的虛擬化分配和管理過程中不斷更新。
上述虛擬存儲介質(zhì),是由虛擬存儲管理子模塊根據(jù)虛擬地址對照表中的 信息創(chuàng)建的,可以直接被操作系統(tǒng)訪問的存儲設(shè)備。在本發(fā)明中,虛擬存儲
介質(zhì)可以提供給本地?cái)?shù)據(jù)讀寫使用;也可以通過文件共享協(xié)議,如NFS
(Network File System)協(xié)i義、CIFS (Common Internet File System)幼、議、 HTTP協(xié)議(Hyper Text Transfer Protocol),提供給網(wǎng)絡(luò)環(huán)境下的服務(wù)器共享 文件系統(tǒng)的數(shù)據(jù)讀寫;還可以進(jìn)一步通過FC協(xié)議、iSCSI協(xié)議,提供給存儲 局域網(wǎng)環(huán)境下的其它服務(wù)器使用。
圖3是本發(fā)明向物理存儲介質(zhì)集中添加物理存儲介質(zhì)的流程圖。如圖3 所示,包括
步驟301:虛擬存儲管理子模塊接收到添加物理存儲介質(zhì)指令,所述指令 中包括物理存儲介質(zhì)設(shè)備標(biāo)識、物理存儲介質(zhì)集標(biāo)識以及物理存儲介質(zhì)集的 類型。其中,物理存儲介質(zhì)集類型包括新物理存儲介質(zhì)集或現(xiàn)有物理存儲介 質(zhì)集。
物理存儲介質(zhì)是數(shù)據(jù)存儲的最終實(shí)際介質(zhì)。物理存儲介質(zhì)設(shè)備標(biāo)識是識 別物理存儲介質(zhì),進(jìn)行數(shù)據(jù)讀寫的唯一設(shè)備標(biāo)識。本發(fā)明中通過所記錄的物 理存儲介質(zhì)和虛擬存儲介質(zhì)之間的對應(yīng)關(guān)系,定位物理存儲介質(zhì),完成針對 于虛擬存儲介質(zhì)的數(shù)據(jù)讀寫。
一組物理存儲介質(zhì)的集合組成物理存儲介質(zhì)集,物理存儲介質(zhì)集標(biāo)識可 以由用戶定義,也可以由虛擬存儲控制器產(chǎn)生。
步驟302:判斷所述指令是否將物理存儲介質(zhì)添加到新物理存儲介質(zhì)集?
如果是,執(zhí)行步驟303;否則,執(zhí)行步驟304。
步驟303:在物理存儲介質(zhì)上分配虛擬地址對照表,并初始化虛擬地址對 照表。
按照所述指令將物理存儲介質(zhì)添加到新物理存儲介質(zhì)集時(shí),首先,在所 述指令中的物理存儲介質(zhì)上分配一個(gè)數(shù)據(jù)存儲區(qū)存儲虛擬地址對照表,并初 始化虛擬地址對照表。
虛擬地址對照表,記錄虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系。 虛擬地址對照表存儲在物理存儲介質(zhì)上,也可以在系統(tǒng)啟動時(shí),調(diào)入內(nèi)存。
虛擬地址對照表中的記錄單元分為四種類型物理存儲介質(zhì)集標(biāo)識記錄 單元、物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元、虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元、 以及虛擬存儲介質(zhì)地址記錄單元。 一組連續(xù)的物理存儲介質(zhì)設(shè)備標(biāo)識記錄單 元組成物理存儲介質(zhì)列表,添加或刪除物理存儲介質(zhì)時(shí),物理存儲介質(zhì)列表 得以更新; 一組連續(xù)的虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元組成虛擬存儲介質(zhì)列 表,創(chuàng)建或刪除虛擬存儲介質(zhì)時(shí),虛擬存儲介質(zhì)列表得以更新;虛擬存儲介 質(zhì)地址記錄單元只在數(shù)據(jù)寫入虛擬存儲介質(zhì)時(shí)才分配,已分配的、連續(xù)的虛 擬存儲介質(zhì)地址記錄單元組成虛擬存儲介質(zhì)地址列表。
系統(tǒng)中,至少有一個(gè)虛擬地址對照表,也可以有多個(gè)虛擬地址對照表。 一個(gè)虛擬地址對照表至少有一個(gè)物理存儲介質(zhì)集標(biāo)識記錄單元,以及與之相 對應(yīng)的至少一個(gè)物理存儲介質(zhì)列表, 一個(gè)虛擬存儲介質(zhì)列表和一個(gè)虛擬存儲 介質(zhì)地址列表。物理存儲介質(zhì)列表中的記錄單元數(shù),虛擬存儲介質(zhì)列表中的 記錄單元數(shù),可以預(yù)先設(shè)置。
一種區(qū)分虛擬地址對照表記錄單元的方法是為每一個(gè)記錄單元設(shè)置不同 的標(biāo)志位。如0代表空記錄單元,1代表物理存儲介質(zhì)集記錄單元,2代表物
理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,3代表虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元,4代
表虛擬存儲介質(zhì)地址記錄單元。采用此區(qū)分方法,在記錄信息的同時(shí),記錄 單元的標(biāo)志位需更新。另一種區(qū)分的方法可以通過地址指針來實(shí)現(xiàn),在物理 存儲介質(zhì)集記錄單元中記錄與之對應(yīng)的物理存儲介質(zhì)列表的起始地址,虛擬 存儲介質(zhì)列表的起始地址和虛擬存儲介質(zhì)地址列表的起始地址。
在虛擬地址對照表初始化過程中,需要將物理存儲介質(zhì)集標(biāo)識記錄在物
理存儲介質(zhì)集標(biāo)識記錄單元中。繼續(xù)執(zhí)行步驟304,將所述指令中的物理存 儲介質(zhì)設(shè)備標(biāo)識記錄在新分配的虛擬地址對照表的物理存儲介質(zhì)列表中。執(zhí) 行步驟305,對所述指令中的物理存儲介質(zhì)初始化。在物理存儲介質(zhì)初始化 完成后,執(zhí)行步驟306,返回指令完成信息。
在執(zhí)行步驟302的判斷后,如果所述指令是將物理存儲介質(zhì)添加到現(xiàn)有 物理存儲介質(zhì)集,則執(zhí)行步驟304。
步驟304:將所述指令中的物理存儲介質(zhì)設(shè)備標(biāo)識記錄在所定位的虛擬地 址對照表的物理存儲介質(zhì)列表中。
對照虛擬地址對照表中物理存儲介質(zhì)集標(biāo)識記錄單元中記錄的物理存儲 介質(zhì)集標(biāo)識,定位與所述指令中物理存儲介質(zhì)集對應(yīng)的物理存儲介質(zhì)列表, 將所述指令中的物理存儲介質(zhì)設(shè)備標(biāo)識記錄在所定位的虛擬地址對照表的物 理存儲介質(zhì)列表的空記錄單元中。
本實(shí)施例中,物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元中記錄的是物理存儲介質(zhì) 設(shè)備標(biāo)識。其它實(shí)施例中,可以通過記錄其它與物理存儲介質(zhì)識別相關(guān)的信 息定位物理存儲介質(zhì),還可能結(jié)合記錄物理存儲介質(zhì)的數(shù)據(jù)塊地址,將一部 分物理存儲介質(zhì)添加到物理存儲介質(zhì)集中。
步驟305:初始化所述指令中的物理存儲介質(zhì)。
初始化物理存儲介質(zhì)的過程,是向所述指令中的物理存儲介質(zhì)的所有數(shù)
據(jù)塊寫入零數(shù)據(jù)的過程。初始化完成后,執(zhí)行步驟306。 歩驟306:返回指令完成信息。
添加物理存儲介質(zhì)指令可能包括添加多個(gè)物理存儲介質(zhì)的請求,所述指 令可以通過重復(fù)步驟302到步驟305添加每一個(gè)物理存儲介質(zhì),完成全部添 加請求后,執(zhí)行步驟306,返回指令完成信息。
上面對添加物理存儲介質(zhì)的操作進(jìn)行了說明,當(dāng)然也可進(jìn)行刪除物理存 儲介質(zhì)的操作,其不同之處在于不用進(jìn)行判斷(缺少步驟302,因?yàn)閯h除肯 定只能針對現(xiàn)有的物理存儲介質(zhì)集進(jìn)行操作),同時(shí),也可不進(jìn)行初始化操作, 而在相應(yīng)的步驟304中是刪除物理存儲介質(zhì)列表中的物理存儲介質(zhì)設(shè)備標(biāo) 識。
添加了物理存儲介質(zhì)后,可以進(jìn)一步針對物理存儲介質(zhì)集創(chuàng)建虛擬存儲 介質(zhì)。
參見圖4,創(chuàng)建虛擬存儲介質(zhì)的步驟包括
步驟411:虛擬存儲管理子模塊接收到創(chuàng)建虛擬存儲介質(zhì)指令,所述指
令中包括物理存儲介質(zhì)集標(biāo)識和虛擬存儲介質(zhì)容量。
虛擬存儲介質(zhì)容量是用戶定義的,與實(shí)際存儲容量無必然聯(lián)系的虛擬容 量。虛擬存儲介質(zhì)容量可以大于物理存儲介質(zhì)集中的物理存儲介質(zhì)容量之和。
步驟412:定位虛擬地址對照表的虛擬存儲介質(zhì)列表。
對照虛擬地址對照表中物理存儲介質(zhì)集標(biāo)識記錄單元中記錄的物理存儲
介質(zhì)集標(biāo)識,定位與所述指令中物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì)列表。
步驟413:創(chuàng)建虛擬存儲介質(zhì)的設(shè)備標(biāo)識,記錄在虛擬地址對照表的虛 擬存儲介質(zhì)列表中,同時(shí)記錄所要創(chuàng)建的虛擬存儲介質(zhì)的容量。
虛擬存儲管理子模塊創(chuàng)建用于識別虛擬存儲介質(zhì)的設(shè)備標(biāo)識,記錄在所 定位的虛擬地址對照表的虛擬存儲介質(zhì)列表的空記錄單元中,同時(shí)記錄所述 指令中的虛擬存儲介質(zhì)容量。
步驟414:創(chuàng)建所述指令中指定容量的虛擬存儲介質(zhì)的設(shè)備對象,并向虛 擬SCSI端口驅(qū)動模塊注冊。
虛擬存儲管理子模塊創(chuàng)建可被操作系統(tǒng)識別的虛擬存儲介質(zhì)的設(shè)備對 象,其設(shè)備標(biāo)識為新分配的虛擬存儲介質(zhì)設(shè)備標(biāo)識,容量為所述指令中的虛
擬存儲介質(zhì)容量。并且,向虛擬SCSI端口驅(qū)動模塊注冊新建的設(shè)備對象。
步驟415:返回指令完成信息。
新創(chuàng)建的虛擬存儲介質(zhì)不占用物理存儲空間,操作系統(tǒng)看到的虛擬存儲 介質(zhì)的數(shù)據(jù)塊只是虛擬的數(shù)據(jù)塊,沒有物理存儲介質(zhì)的數(shù)據(jù)塊被分配給該虛 擬存儲介質(zhì)使用。虛擬存儲介質(zhì)的容量代表著數(shù)據(jù)存儲可能使用的最大空間。
支持虛擬存儲介質(zhì)存儲數(shù)據(jù)的物理存儲介質(zhì)的數(shù)據(jù)塊,在創(chuàng)建虛擬存儲 介質(zhì)過程中,并不被分配。只有在數(shù)據(jù)寫入虛擬存儲介質(zhì)時(shí),才會動態(tài)的分 配給虛擬存儲介質(zhì)?;谖锢泶鎯橘|(zhì)集建立的虛擬存儲介質(zhì)共享物理存儲 介質(zhì)集中的所有物理存儲介質(zhì)的存儲資源。
創(chuàng)建虛擬存儲介質(zhì)指令可能包括創(chuàng)建多個(gè)虛擬存儲介質(zhì)的請求,所述指
令可以通過重復(fù)步驟412到步驟414,創(chuàng)建每一個(gè)虛擬存儲介質(zhì),完成全部 創(chuàng)建請求后,執(zhí)行步驟415,返回指令完成信息。
新創(chuàng)建的虛擬存儲介質(zhì),在操作系統(tǒng)發(fā)出掃描SCSI端口指令時(shí),向操作 系統(tǒng)注冊,進(jìn)一步被操作系統(tǒng)使用。
圖5是本發(fā)明虛擬存儲介質(zhì)設(shè)備對象注冊到操作系統(tǒng)的流程圖,包括
步驟501:操作系統(tǒng)發(fā)出掃描SCSI端口指令。
SCSI端口驅(qū)動是操作系統(tǒng)和存儲介質(zhì)間的通訊端口。操作系統(tǒng)掃描存儲 設(shè)備時(shí),逐一向SCSI端口發(fā)出詢問請求,等待應(yīng)答。
步驟502:虛擬SCSI端口驅(qū)動接收到所述指令,向虛擬存儲管理子模塊
發(fā)出詢問請求。
虛擬SCSI端口驅(qū)動啟動后,向操作系統(tǒng)注冊為SCSI端口設(shè)備。在操作 系統(tǒng)發(fā)出掃描SCSI端口指令時(shí),虛擬SCSI端口驅(qū)動接收到所述指令,進(jìn)一
步向虛擬存儲控制器中的虛擬存儲管理子模塊發(fā)出詢問請求。
步驟503:虛擬存儲管理子模塊,定位虛擬地址對照表中的虛擬存儲介質(zhì) 列表。
虛擬地址對照表中可能包括多個(gè)虛擬存儲介質(zhì)列表,虛擬存儲子模塊將
逐一定位每一個(gè)虛擬存儲介質(zhì)列表,并重復(fù)步驟504到步驟508,向操作系
統(tǒng)注冊每一個(gè)虛擬存儲介質(zhì)設(shè)備對象。
步驟504:判斷當(dāng)前記錄單元是否記錄了虛擬存儲介質(zhì)信息,如果是,
執(zhí)行步驟505;否則,執(zhí)行步驟509。
步驟505:獲得當(dāng)前記錄單元中虛擬存儲介質(zhì)的設(shè)備標(biāo)識。 步驟506:判斷具有相同設(shè)備標(biāo)識的設(shè)備對象是否已經(jīng)存在? 判斷虛擬存儲管理子模塊已經(jīng)建立的虛擬存儲介質(zhì)的設(shè)備對象中,具有
相同設(shè)備標(biāo)識的設(shè)備對象是否己經(jīng)存在?如果是,執(zhí)行步驟508;否則,執(zhí)
行步驟507。
步驟507:根據(jù)虛擬存儲介質(zhì)的設(shè)備標(biāo)識,建立虛擬存儲介質(zhì)設(shè)備對象, 并向虛擬SCSI端口驅(qū)動模塊注冊。
步驟508:設(shè)置下一記錄單元為當(dāng)前單元。 返回執(zhí)行步驟504。
在執(zhí)行步驟504的判斷后,如果當(dāng)前記錄單元是空記錄單元,執(zhí)行步驟 509,返回指令完成信息。這一判斷條件成立的前提是虛擬存儲介質(zhì)列表中的 記錄單元是按照順序分配的。如果,虛擬存儲介質(zhì)列表的記錄單元,不按照 順序,任意分配,則需要以虛擬存儲介質(zhì)列表的記錄單元數(shù)為判斷條件。循 環(huán)次數(shù)超出記錄單元數(shù),執(zhí)行步驟509,返回指令完成信息。
步驟509:返回指令完成信息。
系統(tǒng)中可能包括多個(gè)虛擬地址對照表,重復(fù)步驟503到步驟508,定位每 一個(gè)虛擬地址對照表中的每一個(gè)虛擬存儲介質(zhì)列表,為其中的虛擬存儲介質(zhì) 建立設(shè)備對象,并向操作系統(tǒng)注冊。
指令完成信息返回后,操作系統(tǒng)將看到新建的,具有虛擬容量的,與物 理存儲介質(zhì)具有相同設(shè)備屬性的虛擬存儲介質(zhì)。并且,IO子系統(tǒng)可以直接向 虛擬存儲介質(zhì)發(fā)出數(shù)據(jù)讀寫指令。
圖6是本發(fā)明實(shí)現(xiàn)數(shù)據(jù)讀寫過程的流程圖包括
步驟601: IO子系統(tǒng)發(fā)出數(shù)據(jù)讀寫指令。
每一個(gè)數(shù)據(jù)讀寫指令包括指令類型、數(shù)據(jù)地址、數(shù)據(jù)暫存區(qū)等。指令 類型可以是寫數(shù)據(jù)指令,或讀數(shù)據(jù)指令。如果是寫數(shù)據(jù)指令,數(shù)據(jù)暫存區(qū)存 放寫入的數(shù)據(jù)。如果是讀數(shù)據(jù)指令,數(shù)據(jù)暫存區(qū)用于存放讀取的數(shù)據(jù)。
所述指令直接發(fā)送到虛擬存儲介質(zhì)設(shè)備對象,虛擬存儲介質(zhì)通過虛擬 SCSI端口與操作系統(tǒng)交互。操作系統(tǒng)在掃描存儲設(shè)備時(shí),逐一掃描SCSI端
口 ,并詢問掃描到的存儲設(shè)備的相關(guān)信息。當(dāng)IO子系統(tǒng)發(fā)出數(shù)據(jù)讀寫指令時(shí),
通過設(shè)備對象,將指令直接發(fā)送到相應(yīng)的虛擬存儲介質(zhì)。
步驟602:虛擬存儲介質(zhì)接收到所述指令。 步驟603:判斷是寫數(shù)據(jù)指令?
虛擬存儲控制器的10控制子模塊判斷接收到的指令是否為寫數(shù)據(jù)指令, 如果是,執(zhí)行步驟604;否則,執(zhí)行步驟609。
步驟604:判斷所述指令中的數(shù)據(jù)地址是否為已分配的存儲單元。
虛擬存儲控制器的io子模塊定位所述指令發(fā)送到的虛擬存儲介質(zhì)所在
的虛擬地址對照表,并進(jìn)一步定位虛擬地址對照表中的虛擬存儲介質(zhì)地址列 表。讀取虛擬存儲介質(zhì)地址列表中的每一個(gè)記錄單元所記錄的信息,判斷所 述指令對應(yīng)的虛擬存儲介質(zhì)的相應(yīng)數(shù)據(jù)地址是否己存在,如果是,執(zhí)行步驟
606;否則,執(zhí)行步驟605。
判斷所述指令中的數(shù)據(jù)地址是否是已分配的存儲單元的步驟包括
(604a)獲得所述指令發(fā)送到的虛擬存儲介質(zhì)的設(shè)備標(biāo)識,對照虛擬地 址對照表的虛擬存儲介質(zhì)列表,定位物理存儲介質(zhì)集。
(604b)定位與所定位的物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì)地址列表,
設(shè)置虛擬存儲介質(zhì)地址列表的起始單元為當(dāng)前記錄單元。
(604c)讀取當(dāng)前記錄單元中的虛擬存儲介質(zhì)設(shè)備標(biāo)識,及虛擬存儲介
質(zhì)的數(shù)據(jù)塊地址。
(604d)判斷所述指令對應(yīng)的虛擬存儲介質(zhì)設(shè)備標(biāo)識是否和讀取的虛擬 存儲介質(zhì)設(shè)備標(biāo)識相同。如果是,進(jìn)一步判斷,所述指令中的數(shù)據(jù)地址是否 在以所讀取的數(shù)據(jù)塊地址為起始地址的已分配存儲單元中。
(604e)如果上述判斷成功,說明所述指令中的數(shù)據(jù)地址在己分配的物 理存儲單元中,執(zhí)行步驟606。如果上述判斷失敗,將下一個(gè)記錄單元設(shè)置 為當(dāng)前記錄單元,重復(fù)步驟(604c)和步驟(604d),直到完成整個(gè)虛擬存儲 介質(zhì)地址列表的査詢。
如果查詢失敗,說明所述指令中的數(shù)據(jù)地址是未分配的存儲單元,執(zhí)行 步驟605。
步驟605:分配新的物理存儲單元,更新虛擬存儲介質(zhì)地址列表。
實(shí)現(xiàn)步驟605的步驟包括 (605a)根據(jù)設(shè)置的物理存儲介質(zhì)分配原則,定位下一個(gè)可分配物理存 儲介質(zhì)的數(shù)據(jù)塊地址。
(605b)定位虛擬存儲介質(zhì)地址列表的空記錄單元。 (605c)將所述指令中的虛擬存儲介質(zhì)設(shè)備標(biāo)識、虛擬存儲介質(zhì)數(shù)據(jù)塊 所在的存儲單元的起始地址、物理存儲介質(zhì)設(shè)備標(biāo)識、物理存儲介質(zhì)可分配 存儲單元的起始地址,記錄在所定位的虛擬存儲介質(zhì)地址記錄單元中。
此步驟中可分配的存儲單元,并不局限于一個(gè)物理的數(shù)據(jù)塊,可以是連 續(xù)數(shù)據(jù)塊的集合。存儲單元所包含的數(shù)據(jù)塊數(shù)量,可以由用戶設(shè)置,也可以 由系統(tǒng)設(shè)置。存儲單元中起始數(shù)據(jù)塊的地址用于識別存儲單元的物理位置, 是存儲單元的起始地址。虛擬存儲介質(zhì)和物理存儲介質(zhì)的存儲單元,包含相 同數(shù)量的數(shù)據(jù)塊。但是,虛擬存儲介質(zhì)存儲單元的起始地址并不一定和物理 存儲介質(zhì)存儲單元的起始地址相同。
此步驟中分配的存儲單元的容量,并不一定等于所述指令中的數(shù)據(jù)長度。 所述指令中的數(shù)據(jù)長度可能小于存儲單元的容量,也可能大于存儲單元的容 量。如果所述指令的長度大于分配的存儲單元的容量,需要重復(fù)步驟605, 分配下一個(gè)存儲單元,直到所分配的存儲單元滿足所述指令中的數(shù)據(jù)讀寫長 度要求。
完成物理存儲單元分配后,執(zhí)行步驟606和步驟607,將所述指令中的數(shù)
據(jù),寫入到新分配的,由所述指令中的數(shù)據(jù)地址轉(zhuǎn)換,并定位的物理存儲介 質(zhì)的數(shù)據(jù)塊中。
步驟606:根據(jù)虛擬地址對照表中虛擬存儲介質(zhì)地址列表,將所述指令 中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址。 實(shí)現(xiàn)步驟606的步驟包括
(606a)在所定位的虛擬存儲介質(zhì)地址列表中,定位具有相同虛擬存儲 介質(zhì)設(shè)備標(biāo)識,和相同虛擬存儲介質(zhì)存儲單元的起始地址的記錄單元。
(606b)讀取所定位的記錄單元中的物理存儲介質(zhì)設(shè)備標(biāo)識和物理存儲 介質(zhì)存儲單元的起始地址。
步驟607:將所述指令中的數(shù)據(jù),寫入到所定位的物理存儲介質(zhì)的數(shù)據(jù) 塊中。
步驟608:返回指令完成信息。
在步驟603的判斷中,如果是讀指令,執(zhí)行步驟609。
步驟609:判斷所述指令中的數(shù)據(jù)地址是否為已分配的存儲單元。
判斷所述指令中的數(shù)據(jù)地址是否為已分配的存儲單元,如果是,執(zhí)行步
驟610;否則,執(zhí)行步驟612。
判斷所述指令中的數(shù)據(jù)地址是否是已分配的存儲單元的步驟和步驟604
的步驟相同。
步驟610:對照虛擬地址對照表中虛擬存儲介質(zhì)地址列表,將所述指令 中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址。
步驟610轉(zhuǎn)換數(shù)據(jù)塊地址的步驟和步驟606的步驟相同。
步驟611:定位物理存儲介質(zhì)的數(shù)據(jù)塊,讀取所述指令中指定長度的數(shù)據(jù)。
步驟612:返回指令完成信息。
執(zhí)行數(shù)據(jù)讀寫指令步驟605時(shí),分配新的物理存儲單元,可以有三種分
配原則串行分配原則、并行分配原則和選擇性分配原則。
圖7是物理存儲單元串行分配原則示意圖,圖8是物理存儲單元容量并 行分配原則示意圖。
根據(jù)容量串行分配原則,物理存儲單元的分配,從物理存儲介質(zhì)集中第
一個(gè)物理存儲介質(zhì)的第一個(gè)可分配數(shù)據(jù)塊開始,順序分配存儲單元,寫入數(shù)
據(jù);物理存儲介質(zhì)集中的第一物理存儲介質(zhì)的空間分配完畢,繼續(xù)從同一個(gè) 物理存儲介質(zhì)集中的第二物理存儲介質(zhì)的第一個(gè)可分配數(shù)據(jù)塊開始順序分配 存儲單元,寫入數(shù)據(jù);依次分配第三、第四...物理存儲介質(zhì)。
參見圖7,數(shù)據(jù)"A"、"B"、"C"、"D"先后寫入虛擬存儲介質(zhì)1的F0000001、 虛擬存儲介質(zhì)2的FF000001、虛擬存儲介質(zhì)1的F000000F、和虛擬存儲介 質(zhì)2的FF000002數(shù)據(jù)塊中。虛擬存儲介質(zhì)1接收到將數(shù)據(jù)"A"寫入地址 F0000001的指令,虛擬存儲控制器的IO子模塊判斷所述指令是寫數(shù)據(jù)指令, 進(jìn)一步判斷所述指令中的數(shù)據(jù)地址是未分配的存儲單元,IO控制子模塊根據(jù) 容量串行分配原則,定位物理存儲介質(zhì)集中的物理存儲介質(zhì)1的10000001數(shù) 據(jù)塊為下一個(gè)可分配數(shù)據(jù)塊,分配新的虛擬存儲介質(zhì)地址記錄單元,將虛擬 存儲介質(zhì)l設(shè)備標(biāo)識、所述指令中的地址F0000001、所定位的物理存儲介質(zhì) 1設(shè)備標(biāo)識和數(shù)據(jù)塊地址10000001寫入新分配的虛擬存儲介質(zhì)地址記錄單元 中,將所述指令中的數(shù)據(jù)"A"寫入物理存儲介質(zhì)1的地址為10000001的數(shù) 據(jù)塊中,完成所述指令。
虛擬存儲介質(zhì)2接收到寫入數(shù)據(jù)"B"的指令,IO控制子模塊根據(jù)容量 串行分配原則,判斷下一個(gè)可分配的存儲單元為物理存儲介質(zhì)1上地址為 10000002的數(shù)據(jù)塊,因此,將虛擬存儲介質(zhì)2設(shè)備標(biāo)識、所述指令中的地址 FF000001、所定位的物理存儲介質(zhì)1設(shè)備標(biāo)識和數(shù)據(jù)塊地址10000002寫入新 分配的虛擬存儲介質(zhì)地址記錄單元中,將所述指令中的數(shù)據(jù)"B"寫入物理存 儲介質(zhì)1的地址為10000002的數(shù)據(jù)塊中,完成所述指令。
根據(jù)容量串行分配原則,IO控制子模塊繼續(xù)將數(shù)據(jù)"C"、 "D"寫入到物 理存儲介質(zhì)1的連續(xù)數(shù)據(jù)塊10000003、 10000004中,并將相關(guān)信息記錄在虛 擬存儲介質(zhì)地址列表的記錄單元中。
根據(jù)容量串行分配原則,連續(xù)寫入的、即使分布于不同虛擬存儲介質(zhì)的
數(shù)據(jù),也將存儲于同一物理存儲介質(zhì)的連續(xù)數(shù)據(jù)塊空間。如圖7中,先后寫 入虛擬存儲介質(zhì)1、虛擬存儲介質(zhì)2的數(shù)據(jù)"A"、 "B",存儲在同一物理存儲 介質(zhì)l連續(xù)分布的、相鄰數(shù)據(jù)塊10000001、 10000002中。
根據(jù)容量串行分配原則,分布于同一虛擬存儲介質(zhì)的兩個(gè)連續(xù)數(shù)據(jù)塊中
的數(shù)據(jù),由于寫入順序的非連續(xù)性,同樣可能分布于物理存儲介質(zhì)的非連續(xù)
數(shù)據(jù)塊空間。如圖7中,寫入虛擬存儲介質(zhì)2的地址FF000001、 FF000002 的數(shù)據(jù)"B"、 "D",存儲在同一物理存儲介質(zhì)1上不相鄰的兩個(gè)數(shù)據(jù)塊 10000002、 10000004中。
遵循容量串行分配原則,物理存儲介質(zhì)數(shù)據(jù)塊分配順序由數(shù)據(jù)寫入順序 決定的,物理存儲介質(zhì)的數(shù)據(jù)塊分配是連續(xù)的。容量串行分配原則,可以最 有效的利用虛擬存儲池中的物理存儲資源。然而,當(dāng)遵循容量串行分配原則 的物理存儲介質(zhì)集中的一個(gè)物理存儲介質(zhì)出現(xiàn)故障時(shí),將導(dǎo)致所有將數(shù)據(jù)存 儲在這一物理存儲介質(zhì)上的虛擬存儲介質(zhì)的數(shù)據(jù)的不可用,甚至永久丟失。
根據(jù)容量并行分配原則,物理存儲單元的分配,從物理存儲介質(zhì)集中每 一個(gè)物理存儲介質(zhì)的第一個(gè)可分配數(shù)據(jù)塊開始,順序分配存儲單元,寫入數(shù) 據(jù);物理存儲介質(zhì)集中的第一物理存儲介質(zhì)的第一個(gè)可分配存儲單元被分配 使用后,繼續(xù)從同一物理存儲介質(zhì)集中的第二物理存儲介質(zhì)的第一個(gè)可分配 存儲單元分配空間;依次從第三、第四...物理存儲介質(zhì)的第一個(gè)可分配存 儲單元分配空間,直到最后一個(gè)物理存儲介質(zhì)的第一個(gè)可分配存儲單元被分 配使用。再從第一物理存儲介質(zhì)的第二個(gè)可分配存儲單元開始分配空間,循 環(huán)至最后一個(gè)物理存儲介質(zhì)的第二個(gè)可分配存儲單元被分配使用。依此分配 每一個(gè)物理存儲介質(zhì)的第三個(gè)、第四個(gè)...可分配存儲單元,循環(huán)至物理存 儲介質(zhì)的全部數(shù)據(jù)塊空間被分配使用完畢。
參見圖8,數(shù)據(jù)"A"、 "B"、 "C"、 "D"、 "E"先后寫入虛擬存儲介質(zhì)1 的F0000001、虛擬存儲介質(zhì)2的FF000001、虛擬存儲介質(zhì)1的F000000F、 虛擬存儲介質(zhì)2的FF000002數(shù)據(jù)塊,和虛擬存儲介質(zhì)2的FF000003數(shù)據(jù)塊 中。虛擬存儲介質(zhì)1接收到將數(shù)據(jù)"A"寫入地址F0000001的指令,虛擬存 儲控制器的IO子模塊判斷所述指令是寫數(shù)據(jù)指令,進(jìn)一步判斷所述指令中的 數(shù)據(jù)地址是未分配的存儲單元,IO控制子模塊根據(jù)容量并行分配原則,定位 物理存儲介質(zhì)集中的物理存儲介質(zhì)1的10000001數(shù)據(jù)塊為下一個(gè)可分配數(shù)據(jù)
塊,分配新的虛擬存儲介質(zhì)地址記錄單元,將虛擬存儲介質(zhì)1設(shè)備標(biāo)識、所
述指令中的地址F0000001、所定位的物理存儲介質(zhì)1設(shè)備標(biāo)識和數(shù)據(jù)塊地址 10000001寫入新分配的虛擬存儲介質(zhì)地址記錄單元中,將所述指令中的數(shù)據(jù)
"A"寫入物理存儲介質(zhì)1的地址為10000001的數(shù)據(jù)塊中,完成所述指令。
虛擬存儲介質(zhì)2接收到寫入數(shù)據(jù)"B"的指令,10控制子模塊根據(jù)容量 并行分配原則,判斷下一個(gè)可分配的存儲單元為物理存儲介質(zhì)2上地址為 10000001的數(shù)據(jù)塊,因此,將虛擬存儲介質(zhì)2設(shè)備標(biāo)識、所述指令中的地址 FF000001、所定位的物理存儲介質(zhì)2設(shè)備標(biāo)識和數(shù)據(jù)塊地址10000001寫入新 分配的虛擬存儲介質(zhì)地址記錄單元中,將所述指令中的數(shù)據(jù)"B"寫入物理存 儲介質(zhì)2的地址為10000001的數(shù)據(jù)塊中,完成所述指令。
根據(jù)容量并行分配原則,10控制子模塊繼續(xù)將數(shù)據(jù)"C"、 "D"、 "E"寫 入到物理存儲介質(zhì)3的地址為10000001的數(shù)據(jù)塊,物理存儲介質(zhì)1的地址為 10000002的數(shù)據(jù)塊,和物理存儲介質(zhì)2的地址為10000002的數(shù)據(jù)塊中,并 將相關(guān)信息記錄在虛擬存儲介質(zhì)地址列表的記錄單元中。
容量并行分配原則,是根據(jù)數(shù)據(jù)寫入順序,并行分配物理存儲介質(zhì)集中 每一個(gè)物理存儲介質(zhì)存儲單元的原則。容量并行分配原則可以有效地提高數(shù) 據(jù)讀寫效率。
根據(jù)容量并行分配原則,連續(xù)寫入同一虛擬存儲介質(zhì)連續(xù)數(shù)據(jù)塊的數(shù)據(jù), 將存儲于連續(xù)的、并行排列的、不同的物理存儲介質(zhì)上,具有相同數(shù)據(jù)塊地 址的存儲單元中。
容量選擇分配原則,是將虛擬存儲介質(zhì)與物理存儲介質(zhì)選擇性的對應(yīng)分 配原則。 一個(gè)虛擬存儲介質(zhì)可以對應(yīng)物理存儲介質(zhì)中的一個(gè)或多個(gè)物理存儲 介質(zhì),對應(yīng)于一個(gè)虛擬存儲介質(zhì)的物理存儲介質(zhì)的容量分配遵循容量串行分 配原則。
遵循容量選擇分配原則的一個(gè)物理存儲介質(zhì)的故障,只影響與此物理存 儲介質(zhì)對應(yīng)的虛擬存儲介質(zhì)的數(shù)據(jù)的可使用性。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明 的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種存儲介質(zhì)處理方法,其特征在于,包括步驟A,設(shè)置物理存儲介質(zhì)集的虛擬地址對照表,記錄物理存儲介質(zhì)集、物理存儲介質(zhì)及虛擬存儲介質(zhì)之間的對應(yīng)關(guān)系;步驟B,將物理存儲介質(zhì)的設(shè)備標(biāo)識添加到虛擬地址對照表的相應(yīng)單元;步驟C,創(chuàng)建與物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì)的設(shè)備對象,并向虛擬SCSI端口驅(qū)動模塊注冊,所述虛擬存儲介質(zhì)的設(shè)備標(biāo)識記錄于虛擬地址對照表的相應(yīng)單元;步驟D,虛擬SCSI端口驅(qū)動模塊向操作系統(tǒng)注冊虛擬存儲介質(zhì)的設(shè)備對象。
2. 根據(jù)權(quán)利要求1所述的存儲介質(zhì)處理方法,其特征在于,所述虛擬地址對照表包括物理存儲介質(zhì)集標(biāo)識記錄單元,用于記錄物理存儲介質(zhì)集標(biāo)識;物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的物理存儲介質(zhì)的設(shè)備標(biāo)識或數(shù)據(jù)塊地址;及虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的 虛擬存儲介質(zhì)的設(shè)備標(biāo)識。
3. 根據(jù)權(quán)利要求2所述的存儲介質(zhì)處理方法,其特征在于,所述步驟B中,將物理存儲介質(zhì)設(shè)備標(biāo)識或數(shù)據(jù)塊地址添加到物理存儲介質(zhì)設(shè)備標(biāo)識記 錄單元,并初始化所述物理存儲介質(zhì)。
4. 根據(jù)權(quán)利要求2所述的存儲介質(zhì)處理方法,其特征在于,所述步驟C具體包括步驟Cl,根據(jù)創(chuàng)建虛擬存儲介質(zhì)指令中的物理存儲介質(zhì)集標(biāo)識定位虛擬 地址對照表的虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元;步驟C2,創(chuàng)建虛擬存儲介質(zhì)的設(shè)備標(biāo)識并記錄在所述虛擬存儲介質(zhì)設(shè)備 標(biāo)識記錄單元中,并記錄虛擬存儲介質(zhì)的容量;步驟C3,創(chuàng)建所述容量的虛擬存儲介質(zhì)的設(shè)備對象,并向虛擬SCSI端 口驅(qū)動模塊注冊。
5. 根據(jù)權(quán)利要求4所述的存儲介質(zhì)處理方法,其特征在于,所述步驟D 具體包括步驟Dl,虛擬SCSI端口驅(qū)動接收到操作系統(tǒng)的掃描SCSI端口指令后向 虛擬存儲管理子模塊發(fā)出詢問請求;步驟D2,虛擬存儲管理子模塊定位虛擬地址對照表中的虛擬存儲介質(zhì)設(shè) 備標(biāo)識記錄單元;步驟D3,獲取虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元中的虛擬存儲介質(zhì)的設(shè)備 標(biāo)識,在相同設(shè)備標(biāo)識的設(shè)備對象不存在時(shí),建立對應(yīng)虛擬存儲介質(zhì)的設(shè)備 對象,并注冊到操作系統(tǒng)。
6. 根據(jù)權(quán)利要求1、 2、 3、 4或5所述的存儲介質(zhì)處理方法,其特征在 于,虛擬地址對照表設(shè)置于物理存儲介質(zhì)。
7. 根據(jù)權(quán)利要求1、 2、 3、 4或5所述的存儲介質(zhì)處理方法,其特征在 于,物理存儲介質(zhì)包括本地磁盤、網(wǎng)絡(luò)共享磁盤或存儲局域網(wǎng)環(huán)境下的網(wǎng)絡(luò) 連接磁盤。
8. 根據(jù)權(quán)利要求2、 3、 4或5所述的存儲介質(zhì)處理方法,其特征在于, 所述虛擬地址對照表的單元通過標(biāo)志位或地址指針區(qū)分。
9. 一種數(shù)據(jù)讀寫操作方法,用于根據(jù)指令實(shí)現(xiàn)對權(quán)利要求1創(chuàng)建的虛擬存儲介質(zhì)的設(shè)備對象的訪問,其特征在于,虛擬地址對照表包括虛擬存儲介 質(zhì)地址記錄單元,記錄有虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系, 所述方法包括步驟E,根據(jù)虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系將數(shù)據(jù)寫 指令中的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后完成數(shù)據(jù)寫操作; 和/或步驟F,根據(jù)虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系將數(shù)據(jù)讀指令中的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后完成數(shù)據(jù)讀操作。
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)讀寫操作方法,其特征在于,所述步驟E 具體包括步驟El,判斷所述寫指令中的數(shù)據(jù)塊地址是否為已分配的存儲單元,如果是,執(zhí)行步驟E2;否則,執(zhí)行步驟E3; 歩驟E2,分配新的物理存儲單元,并更新虛擬存儲介質(zhì)和物理存儲介質(zhì) 間的地址對應(yīng)關(guān)系,進(jìn)入步驟E3;步驟E3,根據(jù)虛擬地址對照表中的虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系,將所述寫指令中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址, 并將數(shù)據(jù)寫入到物理存儲介質(zhì)的數(shù)據(jù)塊中。
11. 根據(jù)權(quán)利要求IO所述的數(shù)據(jù)讀寫操作方法,其特征在于,所述步驟E2具體包括步驟E21,根據(jù)設(shè)置的物理存儲介質(zhì)分配原則,定位下一個(gè)可分配物理存儲介質(zhì)的數(shù)據(jù)塊地址;步驟E22,將指令中的虛擬存儲介質(zhì)設(shè)備標(biāo)識、虛擬存儲介質(zhì)數(shù)據(jù)塊所 在的存儲單元的起始地址、物理存儲介質(zhì)設(shè)備標(biāo)識、物理存儲介質(zhì)可分配存 儲單元的起始地址記錄在對應(yīng)的虛擬存儲介質(zhì)地址記錄單元中,進(jìn)入步驟 E3。
12. 根據(jù)權(quán)利要求11所述的數(shù)據(jù)讀寫操作方法,其特征在于,步驟E21 中物理存儲介質(zhì)分配原則包括串行分配原則、并行分配原則和選擇分配原則。
13. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)讀寫操作方法,其特征在于,所述步驟F具體包括步驟Fl,判斷所述讀指令中的數(shù)據(jù)塊地址是否為已分配的存儲單元,如 果是,執(zhí)行步驟F2;否則結(jié)束讀取操作;步驟F2,根據(jù)虛擬地址對照表中的虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地 址對應(yīng)關(guān)系,將讀指令中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后, 定位物理存儲介質(zhì)的數(shù)據(jù)塊并讀取相應(yīng)數(shù)據(jù)。
14. 根據(jù)權(quán)利要求10或13所述的數(shù)據(jù)讀寫操作方法,其特征在于,指令 中虛擬存儲介質(zhì)設(shè)備標(biāo)識與虛擬存儲介質(zhì)地址記錄單元中的虛擬存儲介質(zhì)設(shè) 備標(biāo)識一致,且指令中的數(shù)據(jù)地址在以所讀取的數(shù)據(jù)塊地址為起始地址的已 分配存儲單元中,則判斷數(shù)據(jù)塊地址是否為已分配的存儲單元。
15. 根據(jù)權(quán)利要求10或13所述的數(shù)據(jù)讀寫操作方法,其特征在于,將指令中的數(shù)據(jù)地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址具體包括在虛擬存儲介質(zhì)地址記錄單元中定位具有相同虛擬存儲介質(zhì)設(shè)備標(biāo)識和 相同虛擬存儲介質(zhì)存儲單元的起始地址的記錄單元;獲取所定位的記錄單元中的物理存儲介質(zhì)設(shè)備標(biāo)識和物理存儲介質(zhì)存儲 單元的起始地址。
16. —種存儲介質(zhì)處理系統(tǒng),包括用于存儲數(shù)據(jù)的物理存儲介質(zhì),其特征在于,還包括虛擬存儲控制器,用于設(shè)置物理存儲介質(zhì)集的虛擬地址對照表,并將物 理存儲介質(zhì)的設(shè)備標(biāo)識添加到虛擬地址對照表的相應(yīng)單元后創(chuàng)建與物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì);虛擬SCSI端口驅(qū)動模塊,向操作系統(tǒng)注冊為SCSI端口設(shè)備,用于為所 述虛擬存儲介質(zhì)建立設(shè)備對象,并用于將所述設(shè)備對象注冊到操作系統(tǒng);所述虛擬地址對照表用于記錄物理存儲介質(zhì)集、物理存儲介質(zhì)及虛擬存 儲介質(zhì)之間的對應(yīng)關(guān)系。
17. 根據(jù)權(quán)利要求16所述的存儲介質(zhì)處理系統(tǒng),其特征在于,所述虛擬地址對照表包括物理存儲介質(zhì)集標(biāo)識記錄單元,用于記錄物理存儲介質(zhì)集標(biāo)識; 物理存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的物理存儲介質(zhì)的設(shè)備標(biāo)識或數(shù)據(jù)塊地址;及虛擬存儲介質(zhì)設(shè)備標(biāo)識記錄單元,用于記錄與物理存儲介質(zhì)集相對應(yīng)的虛擬存儲介質(zhì)的設(shè)備標(biāo)識。
18. 根據(jù)權(quán)利要求17所述的存儲介質(zhì)處理系統(tǒng),其特征在于,所述虛擬 地址對照表的單元通過標(biāo)志位或地址指針區(qū)分。
19. 根據(jù)權(quán)利要求16所述的存儲介質(zhì)處理系統(tǒng),其特征在于,物理存儲 介質(zhì)包括本地磁盤、網(wǎng)絡(luò)共享磁盤或存儲局域網(wǎng)環(huán)境下的網(wǎng)絡(luò)連接磁盤。
20. 根據(jù)權(quán)利要求16所述的存儲介質(zhì)處理系統(tǒng),其特征在于,虛擬地址對照表設(shè)置于物理存儲介質(zhì)。
21. —種數(shù)據(jù)讀寫操作系統(tǒng),用于根據(jù)指令實(shí)現(xiàn)對權(quán)利要求16的虛擬存 儲介質(zhì)的設(shè)備對象的訪問,其特征在于,包括虛擬存儲控制器,用于根據(jù)虛擬地址對照表將數(shù)據(jù)讀寫指令中的虛擬存 儲介質(zhì)的數(shù)據(jù)塊地址轉(zhuǎn)換為物理存儲介質(zhì)的數(shù)據(jù)塊地址后實(shí)現(xiàn)數(shù)據(jù)讀寫操 作;虛擬存儲介質(zhì)和物理存儲介質(zhì)間的地址對應(yīng)關(guān)系保存于虛擬地址對照表 的虛擬存儲介質(zhì)地址記錄單元。
全文摘要
本發(fā)明提供一種存儲介質(zhì)處理方法、系統(tǒng)及數(shù)據(jù)讀寫操作方法、系統(tǒng),其中該存儲介質(zhì)處理方法包括步驟A,設(shè)置物理存儲介質(zhì)集的虛擬地址對照表,記錄物理存儲介質(zhì)集、物理存儲介質(zhì)及虛擬存儲介質(zhì)之間的對應(yīng)關(guān)系;步驟B,將物理存儲介質(zhì)的設(shè)備標(biāo)識添加到虛擬地址對照表的相應(yīng)單元;步驟C,創(chuàng)建與物理存儲介質(zhì)集對應(yīng)的虛擬存儲介質(zhì)的設(shè)備對象,并向虛擬SCSI端口驅(qū)動模塊注冊,所述虛擬存儲介質(zhì)的設(shè)備標(biāo)識記錄于虛擬地址對照表的相應(yīng)單元;步驟D,虛擬SCSI端口驅(qū)動模塊向操作系統(tǒng)注冊虛擬存儲介質(zhì)的設(shè)備對象。本發(fā)明在物理存儲介質(zhì)的高效使用和存儲熱擴(kuò)容方面具有的優(yōu)勢,減少了存儲投入、延長了再投入周期,簡化了存儲管理。
文檔編號G06F12/08GK101105737SQ20061010179
公開日2008年1月16日 申請日期2006年7月11日 優(yōu)先權(quán)日2006年7月11日
發(fā)明者任永堅(jiān), 燁 陳 申請人:任永堅(jiān);陳 燁