TWI752066B - 讀寫請求處理方法及裝置 - Google Patents

讀寫請求處理方法及裝置 Download PDF

Info

Publication number
TWI752066B
TWI752066B TW106125916A TW106125916A TWI752066B TW I752066 B TWI752066 B TW I752066B TW 106125916 A TW106125916 A TW 106125916A TW 106125916 A TW106125916 A TW 106125916A TW I752066 B TWI752066 B TW I752066B
Authority
TW
Taiwan
Prior art keywords
read
virtual machine
write request
write
address
Prior art date
Application number
TW106125916A
Other languages
English (en)
Other versions
TW201818262A (zh
Inventor
田世坤
Original Assignee
香港商阿里巴巴集團服務有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 香港商阿里巴巴集團服務有限公司 filed Critical 香港商阿里巴巴集團服務有限公司
Publication of TW201818262A publication Critical patent/TW201818262A/zh
Application granted granted Critical
Publication of TWI752066B publication Critical patent/TWI752066B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本案公開了一種讀寫請求處理方法及裝置。其中,該方法包括:接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;藉由位址空間向虛擬機器返回處理結果。本案實施例藉由將來自虛擬機器的IO讀寫請求對應的資料使用記憶體位址的方式進行處理的方式,從而減少了資料的拷貝環節,降低了IO潛時(Latency),進而解決了現有技術中IO潛時(latency)升高的技術問題。

Description

讀寫請求處理方法及裝置
本案係關於軟體領域,具體而言,關於一種讀寫請求處理方法及裝置。
在雲計算環境中,一個資料中心的計算資源藉由虛擬化技術切分為大量虛擬機器(Virtual Machine,簡稱為VM,VM是一台伺服器上虛擬出來的多個可以運行OS的實例),使用者在VM中靈活部署自己的應用,例如web、社交、遊戲、金融等,這些應用有的保存著重要資料,要求資料讀寫的潛時越低越好,並且能做到7*24小時不間斷服務、有足夠好的可用性。對於這些資料的保存,可以根據不同的需要選擇不同的儲存方式。例如,有的應用要求有足夠好的資料可靠性,因此,資料需要有多個冗餘備份,這樣即使單個伺服器宕機也不影響使用,這種情況下,需要將VM磁片接入到分散式儲存。又例如,有的應用要求比較高的性能,IO的潛時(IO Latency)要求的比較低,如果這些應用不需要進行冗餘備份,此時,這些應用需要接入本地RAID儲存。
資料中心內部都由一個個集群組成,每個伺服器上部 署著虛擬化平台、後端儲存(這裡的後端儲存包括上述段落中介紹的分散式儲存和RAID儲存)、業務管理監控系統等,這些系統本身也會消耗一些資源(如CPU、記憶體、網路等),並且虛擬機器磁片接入後端儲存的鏈路,也會因此變長,這些因素都導致伺服器上負載升級,讓使用者的IO潛時(latency)升高。
針對現有技術中IO潛時latency升高的問題,目前尚未提出有效的解決方案。
本案實施例提供了一種讀寫請求處理方法及裝置,以至少解決現有技術中IO潛時(latency)升高的技術問題。
根據本案實施例的一個方面,提供了一種讀寫請求處理方法,包括:接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;在向儲存儲存裝置提交IO讀寫請求之後,接收資料在儲存儲存裝置上的處理結果,其中,儲存儲存裝置為實體機中儲存資料的裝置;藉由位址空間向虛擬機器返回處理結果。
根據本案實施例的一個方面,還提供了一種基於虛擬機器的讀寫請求處理方法,包括:接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機 上部署的任意一個虛擬機器;獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料;按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果;接收後端儲存裝置處理IO讀寫所產生的請求結果;向虛擬機器返回請求結果。
根據本案的另一個實施例,還提供了一種快速處理讀寫請求的方法,包括:接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器;獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料。
根據本案的另一個實施例,還提供了一種讀寫請求處理裝置,包括:第一接收單元,用於接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取單元,用於獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;第二接收單元,用於在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;返回單元,用於藉由位址空間向虛擬機器返回處理結果。
根據本案實施例的一個方面,還提供了一種基於虛擬機器的讀寫請求處理裝置,包括:第一接收單元,用於接 收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元,用於獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料;提交單元,用於按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果;第二接收單元,用於接收後端儲存裝置處理IO讀寫所產生的請求結果;返回單元,用於向虛擬機器返回請求結果。
根據本案的另一個實施例,還提供了一種讀寫請求處理裝置,包括:接收單元,用於接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元,用於獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料。
在本案實施例中,接收來自虛擬機器的IO讀寫請求,從預先映射得到的位址空間中,根據IO讀寫請求和位址空間,獲取實體機中儲存資料的位址在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,藉由位址空間向虛擬機器返回處理結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置。
容易注意到,由於可以從預先映射得到的位址空間中獲取實體機中儲存該資料的位址,而位址空間是映射虛擬機器的磁片對應的位址空間到的,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台 的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的Latency。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO latency的效果。
由此,本案提供的上述實施例解決了現有技術中IO潛時(latency)升高的技術問題。
102a‧‧‧處理器
102b‧‧‧處理器
102n‧‧‧處理器
104‧‧‧記憶體
106‧‧‧網路介面
801‧‧‧第一接收單元
803‧‧‧獲取單元
805‧‧‧第二接收單元
807‧‧‧返回單元
809‧‧‧獲取子單元
811‧‧‧計算子單元
813‧‧‧映射單元
815‧‧‧處理單元
817‧‧‧線程分配單元
901‧‧‧第一接收單元
903‧‧‧獲取單元
905‧‧‧提交單元
907‧‧‧第二接收單元
909‧‧‧返回單元
1001‧‧‧接收單元
1003‧‧‧獲取單元
1100‧‧‧電腦終端
1101‧‧‧處理器
1103‧‧‧記憶體
此處所說明的附圖用來提供對本案的進一步理解,構成本案的一部分,本案的示意性實施例及其說明用於解釋本案,並不構成對本案的不當限定。在附圖中:圖1是根據本案實施例的一種用於實現讀寫請求處理方法的電腦終端的硬體結構方塊圖;圖2是根據本案實施例的一種可選的實體機運行VM的示意圖;圖3是根據本案實施例一的讀寫請求處理方法的流程圖;圖4是根據本案實施例一的一種可選的IO接入裝置的模組示意圖;圖5是根據本案實施例一的一種可選的讀寫請求處理方法的交互圖;圖6是根據本案實施例二的基於虛擬機器的讀寫請求處理方法的流程圖;圖7是根據本案實施例三的快速處理讀寫請求的方法 的流程圖;圖8是根據本案實施例四的一種讀寫請求處理裝置的結構方塊圖;圖9是根據本案實施例五的基於虛擬機器的讀寫請求處理裝置的結構方塊圖;圖10是根據本案實施例六的快速處理讀寫請求的裝置的結構方塊圖;以及圖11是根據本案實施例的一種電腦終端的結構方塊圖。
具體實施方式
為了使本技術領域的人員更好地理解本案方案,下面將結合本案實施例中的附圖,對本案實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本案一部分的實施例,而不是全部的實施例。基於本案中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本案保護的範圍。
需要說明的是,本案的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用於區別類似的物件,而不必用於描述特定的順序或先後次序。應該理解這樣使用的資料在適當情況下可以互換,以便這裡描述的本案的實施例能夠以除了在這裡圖示或描述的那些以外的順 序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。
以下實施例中涉及到的英文縮寫的中文含義如下:
VM:Virtual Manufacturing的簡寫,虛擬機器,將一台伺服器分割成多個虛擬機器(VM主機),一台伺服器上虛擬出來的多個可以運行OS的實例,每一個VM主機平台的運行和管理都與一台獨立主機完全相同,每一個VM均可獨立進行重啟並擁有自己的root存取權限、使用者、IP位址、記憶體、過程、檔、應用程式、系統函式程式庫以及設定檔。
Disk:磁片,儲存資料的介質。
IO:輸入/輸出(Input/Output),即讀寫請求。
IOPS:Input/Output Operations Per Second縮寫,即每秒進行讀寫操作的次數,用於資料庫等場合,衡量隨機訪問的性能。
BPS:bits per second的簡寫,位元速率,即每秒進行讀寫操作的位元組大小。
Latency:IO的時延,從發出請求到完成所花費的時間。
RAID:磁碟陣列,Redundant Arrays of independent Disks,利用陣列方式來作磁片組,任意一個磁片故障時仍可讀出資料。
實施例1
根據本案實施例,還提供了一種讀寫請求處理方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組電腦可執行指令的電腦系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的循序執行所示出或描述的步驟。
本案實施例一所提供的方法實施例可以在移動終端、電腦終端或者類似的運算裝置中執行。圖1示出了一種用於實現讀寫請求處理方法的電腦終端的硬體結構方塊圖。如圖1所示,電腦終端10可以包括一個或多個(圖中採用102a、102b,……,102n來示出)處理器102(處理器102可以包括但不限於微處理器MCU或可程式設計邏輯器件FPGA等的處理裝置)、用於儲存資料的記憶體104、以及用於通信功能的傳輸裝置。除此以外,還可以包括:顯示器、輸入/輸出介面(I/O介面)、通用序列匯流排(USB)埠(可以作為I/O介面的埠中的一個埠被包括)、網路介面、電源和/或相機。本領域普通技術人員可以理解,圖1所示的結構僅為示意,其並不對上述電子裝置的結構造成限定。例如,電腦終端10還可包括比圖1中所示更多或者更少的元件,或者具有與圖1所示不同的配置。
應當注意到的是上述一個或多個處理器102和/或其他資料處理電路在本文中通常可以被稱為“資料處理電路”。該資料處理電路可以全部或部分的體現為軟體、硬體、韌體或其他任意組合。此外,資料處理電路可為單個獨立的處理模組,或全部或部分的結合到電腦終端10中的其他元件中的任意一個內。如本案實施例中所涉及到的,該資料處理電路作為一種處理器控制(例如與介面連接的可變電阻終端路徑的選擇)。
記憶體104可用於儲存應用軟體的軟體程式以及模組,如本發明實施例中的讀寫請求處理方法對應的程式指令/資料儲存裝置,處理器102藉由運行儲存在記憶體104內的軟體程式以及模組,從而執行各種功能應用以及資料處理,即實現上述的讀寫請求處理方法。記憶體104可包括高速隨機記憶體,還可包括非易失性記憶體,如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非易失性固態記憶體。在一些實例中,記憶體104可進一步包括相對於處理器102遠端設置的記憶體,這些遠端儲存器可以藉由網路連接至電腦終端10。上述網路的實例包括但不限於互聯網、企業內部網、局域網、移動通信網及其組合。
傳輸裝置用於經由一個網路接收或者發送資料。上述的網路具體實例可包括電腦終端10的通信供應商提供的無線網路。在一個實例中,傳輸裝置包括一個網路介面卡(Network Interface Controller,NIC),其可藉由基站與其他網路設備相連從而可與互聯網進行通訊。在一個實例 中,傳輸裝置106可以為射頻(Radio Frequency,RF)模組,其用於藉由無線方式與互聯網進行通訊。
顯示器可以例如觸控式螢幕式的液晶顯示器(LCD),該液晶顯示器可使得使用者能夠與電腦終端10(或移動設備)的使用者介面進行交互。
此處需要說明的是,在一些可選實施例中,上述圖1所示的電腦終端可以包括硬體元件(包括電路)、軟體元件(包括儲存在電腦可讀介質上的電腦代碼)、或硬體元件和軟體元件兩者的結合。應當指出的是,圖1僅為特定具體實例的一個實例,並且旨在示出可存在於上述電腦終端中的部件的類型。
本案實施例應用於虛擬機器,虛擬機器運行在虛擬平台上,虛擬平台上可以運行一個或多個虛擬機器。虛擬機器VM可以藉由軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整電腦系統。虛擬系統藉由生成現有作業系統的全新虛擬鏡像,它具有真實作業系統完全一樣的功能,進入虛擬系統後,所有操作都是在這個全新的獨立的虛擬系統裡面進行,可以獨立安裝運行軟體,保存資料,擁有自己的獨立桌面,不會對實體機上的真正的系統產生任何影響。並且,虛擬機器中的作業系統還可以與還具有能夠在實體機上的作業系統進行靈活切換。虛擬機器中可以運行多種類的作業系統,例如,Windows系統、各種版本的Linux系統、MacOS系統。
現有的虛擬平台有VMware、Virtual Box和Virtual PC,它們都能在作業系統為Windows系統的實體機上虛擬出多個虛擬機器。現有的虛擬平台還有Xen、OpenVZ、KVM。其中,Xen是半虛擬化技術,相當於自己運行了一個內核的實例,可以自由的載入內核模組,虛擬的記憶體和IO,穩定而且可預測。Xen計算分為Xen+pv和Xen+hvm,區別就是pv只支援linux,而hvm支援win系統。OpenVZ是作業系統級別的虛擬化技術,是底層作業系統上的一層應用,這意味著易於理解和低權重開銷,一般來說也意味著更優的性能,並且是OpenVZ配置起來也比較靈活。KVM和xen類似,比xen更好的一點是,kvm是完全虛擬的,所以不分pv和hvm的區別,所有的kvm類+型的虛擬技術都可以裝各種linux的發行版本和各種win的發行版本。
圖2是根據本案實施例的一種可選的實體機運行VM的示意圖,如圖2所示,實體機運行有虛擬化平台,虛擬化平台上運行了多個虛擬機器VM1……VMn,每個虛擬機器上可以有一個或多個磁片,例如,系統磁片和資料碟,每個磁片都連接前端驅動,前端驅動是虛擬機器中的磁片驅動,前端驅動藉由虛擬化平台連接後端驅動。虛擬化平台運行在實體機上,藉由IO接入裝置連接儲存裝置(或稱為後端設備)。該儲存裝置可以包括:分散式儲存裝置和/或本地磁碟陣列RAID儲存裝置。
選擇採用哪些類型的儲存裝置,可以根據不同的虛擬機器的功能來進行選擇。例如,有的虛擬機器中運行的服 務要求有足夠好的資料可靠性,此時資料需要有多個冗餘備份,這樣即使單個虛擬機器宕機也不影響使用,這種情況下,可以將VM磁片接入到分散式儲存。又例如,有的虛擬機器中運行的服務要求比較高的性能,此時IO的潛時要求比較低,如果這些服務不需要進行冗餘備份或者已經解決了冗餘備份的問題,此時,這些服務可以接入本地RAID儲存。
以下實施例中的步驟和單元可以在IO接入裝置中執行,IO接入裝置可以是一個實體機上的一個守護進程,它完成從虛擬化後端驅動中接收IO,經過相應處理後提交給後端儲存。該IO接入裝置可以是軟體實現的。在以下實施例中的方法步驟或者模組可以是IO接入裝置所執行的方法步驟或者IO接入裝置所包括的模組。
在上述運行環境下,本案實施例提供了如圖3所示的讀寫請求處理方法。圖3是根據本案實施例一的讀寫請求處理方法的流程圖,如圖3所示,該流程包括如下步驟:
步驟S302,接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中以Xen為例進行說明。在本實施例中以Xen為例的原因是,目前比較傾向於選擇Xen,因為它是對供應商和和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可 以採用相同的方式進行處理,在此不再贅述。
在一種可選的方案中,一台實體機可以虛擬出很多個VM,用戶在這些VM內部署的應用會讀取和儲存資料到VM內的磁片,VM至少會有一個系統磁片,儲存作業系統,可能有多個資料盤,資料盤儲存自己的業務資料。每個磁片的IO讀寫請求,經過VM內的前端驅動,再經過Xen虛擬化平台到達後端驅動,後端驅動將IO讀寫請求轉發給IO接入裝置。
步驟S304,獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址。
在一種可選的方案中,在接收到來自虛擬機器的IO讀寫請求之後,可以藉由將虛擬機器中的磁片對應的位址空間映射到IO接入裝置中,得到IO接入裝置可以訪問的位址空間,並根據映射的位址空間和IO讀寫請求,獲取實體機中儲存資料的位址。
步驟S306,在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置。
可選的,根據本案上述實施例,上述儲存裝置可以包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
在一種可選的方案中,可以根據配置決定此VM磁片的IO讀寫請求是提交到分散式儲存還是本地RAID儲存, 在將接收到的IO讀寫請求提交給後端儲存,後端儲存完成IO讀寫請求之後,將處理結果返回給IO接入裝置。
步驟S308,藉由位址空間向虛擬機器返回處理結果。
在一種可選的方案中,可以將接收到的請求結果封裝為回應,即上述的處理結果,並返回給虛擬機器。
由上可知,本案上述實施例一公開的方案中,接收來自虛擬機器的IO讀寫請求,獲取預先映射得到的位址空間,從根據IO讀寫請求和位址空間獲取實體機中儲存該資料的位址,向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,藉由位址空間向虛擬機器返回處理結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
容易注意到,由於可以從預先映射得到的位址空間中獲取實體機中儲存該資料的位址,而位址空間是映射虛擬機器的磁片對應的位址空間到的,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例一的方案解決了現有技術中IO潛時(latency)升高的技術問題。
根據本案上述實施例,步驟S304,獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中 儲存資料的位址,可以包括如下步驟:
步驟S3042,獲取IO讀寫請求的上下文。
步驟S3044,根據IO讀寫請求的上下文計算得到資料的位址。
在一個可選的實施例中,可以藉由映射的方式從位址空間中獲取資料的位址。可以從映射的位址空間中獲取所述IO讀寫請求的上下文,在得到IO讀寫請求的上下文之後,可以根據IO讀寫請求的上下文計算資料的位址。
此處需要說明的是,藉由映射的方式進行處理實現較為方便,例如,在某些作業系統中就提供了一些系統調用,藉由這些系統調用就可以進行映射。當然其他方式也可以使得獲得到IO讀寫請求的上下文,在此不再贅述。
根據本案上述實施例,步驟S3044,根據IO讀寫請求的上下文計算得到資料的位址包括如下步驟:
步驟S30440,根據IO讀寫請求的上下文中攜帶的IO讀寫請求的資訊以及位址空間的資訊計算資料的位址,其中,IO讀寫請求的資訊包括以下至少之一:IO讀寫請求的編號、IO讀寫請求的偏移、IO讀寫請求的大小、IO讀寫請求的相對位址;位址空間的資訊包括至少之一:位址空間的起始位址、位址空間的長度。
在一種可選的方案中,在獲得IO讀寫請求之後,可以根據IO讀寫請求的上下文計算得到所述資料的記憶體位址,然後根據該記憶體位址進行資料的處理,這樣避免了一定的拷貝從而降低了IO的潛時。可以根據IO讀寫請求的 上下文中攜帶的IO讀寫請求的資訊以及映射的位址空間的資訊計算該資料的記憶體位址,其中,該IO讀寫請求的資訊包括以下至少之一:IO讀寫請求的編號、IO讀寫請求的偏移、IO讀寫請求的大小、IO讀寫請求的相對位址。藉由IO讀寫請求的上下文攜帶的內容以及位址空間的資訊可以計算出該資料的記憶體位址。
藉由上述方案,不再需要將寫請求的資料內容從後端驅動拷貝到IO接入裝置或將讀請求的資料內容從IO接入裝置拷貝到後端驅動,從實現IO讀寫請求資料的零拷貝,降低IO的潛時(Latency)。
根據本案上述實施例,在步驟S3042,獲取IO讀寫請求的上下文之前,上述方法還包括如下步驟:
步驟S3040,在創建虛擬機器的磁片時,將磁片對應的位址空間映射到實體機中得到位址空間,其中,位址空間的資訊包括以下至少之一:該位址空間的起始位址、該位址空間的長度。
將虛擬機器的位址空間映射到IO接入裝置中可以在很多情況下進行,在一個可選的實施例中,可以在虛擬機器的磁片被創建時,藉由mmap等系統調用,將該虛擬機器的磁片對應的位址空間映射到實體機中得到映射的位址空間。當然也可以在其他情況下進行映射,該映射動作只要在獲取IO讀寫請求之前進行即可。
根據本案上述實施例,步驟S306,向儲存裝置提交IO讀寫請求包括如下步驟:
步驟S3062,根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求。
此處需要說明的是,由於一個實體機上的虛擬平台上運行有多個虛擬機器,這些虛擬機器都需要進行IO操作,而這些虛擬機器所依附的實體機上的資源是有限的。為了更好的對資源進行處理,可以考慮對虛擬機器的IO讀寫請求進行限制。對每個虛擬機器的限制條件可以是不同的,這可以根據虛擬機器上運行的服務來進行確定。即可以針對每個虛擬機器單獨制定限制條件。以上述虛擬機器為例。上述限制條件可以是外部設定的條件,如針對某一個VM磁片的IOPS、BPS設定。由於運行不同服務的虛擬機器由於服務的重要性不同,還可以為每個虛擬機器制定一個優先順序,對於優先順序高的虛擬機器中的IO讀寫請求,可以不進行限制,或者可以限制的較少,即可以針對不同的優先順序制定不同的限制條件。
可選的,根據本案上述實施例,上述限制條件可以包括以下至少之一:對於虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;IO讀寫請求的優先順序;虛擬機器的優先順序。
步驟S3064,在判斷結果為允許的情況下,向儲存裝置提交IO讀寫請求。
在一種可選的方案中,可以根據預先設置的限制條件 判斷是否允許就該虛擬機器的IO讀寫請求向儲存裝置提交,在判斷結果為允許的情況下,IO接入裝置才向儲存裝置提交所述IO讀寫請求。例如,在接收到來自虛擬機器的IO讀寫請求之後,可以計算請求個數或請求位元組數是否超出當前時間片允許的範圍,如果未超出,則確定允許向儲存裝置提交IO讀寫請求,IO接入裝置可以向儲存裝置提交IO讀寫請求。
藉由上述方案,藉由根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求,可以防止某些VM磁片佔用太多資源。
根據本案上述實施例,步驟S306,向儲存裝置提交IO讀寫請求包括如下步驟:
步驟S3066,在判斷結果為不允許的情況下,在預定時間後向儲存裝置提交IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向儲存裝置提交IO讀寫請求。
具體的,上述預定時間可以是根據計算得到的IO讀寫請求需要等待的時間。
在一種可選的方案中,如果限制條件不允許提交IO讀寫請求,此時,可以拒絕該IO讀寫請求,並提示現在受到了資源的限制。或者,作為一個相對友好的處理方式,可以在預定時間後再向儲存裝置提交該IO讀寫請求。當再次提交的時候,可以不再判斷該IO讀寫請求是否符合預先設置的限制條件。或者,再次提交的時候依然根據預先設置 的限制條件再次判斷是否允許提交該IO讀寫請求,如果不允許則繼續等待預定時間後再提交。例如,在接收到來自虛擬機器的IO讀寫請求之後,可以計算請求個數或請求位元組數是否超出當前時間片允許的範圍,如果超出,則計算此請求需要等待的時間,將請求放到等待佇列,並在預定時間後,將IO從等待佇列取出,然後提交給後端儲存請求提交與回檔模組,從而將一塊磁片所能搶佔的IO性能限定在設定的IOPS、BPS以下。
根據本案上述實施例,上述方法還可以包括如下步驟:
步驟S310,在創建所述虛擬機器的磁片過程中,從執行線程池中為來自虛擬機器的IO讀寫請求分配執行線程,其中,在執行線程上執行讀寫請求處理方法以處理虛擬機器的磁片的所有IO讀寫請求,執行線程池中包括至少一個執行線程,實體機中的所有虛擬機器的磁片的IO讀寫請求均從執行線程池中分配執行線程進行處理。
可選的,根據本案上述實施例,一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛擬機器的磁片的IO讀寫請求。
此處需要說明的是,運行在實體機上的虛擬機器其本質上還是要使用該實體機上的資源,實體機上可能不僅僅運行有虛擬化平台,還可能運行其他服務或者其他應用。為了更好的為實體機上的虛擬機器提供資源,可以為來自虛擬機器的IO讀寫請求分配執行線程。
在一個可選的實施方式中,可以為實體機上運行的所有虛擬機器的IO讀寫請求分配一個執行線程池,該執行線程池中包括至少一個執行線程,實體機中的所有虛擬機器的磁片的IO讀寫請求均在該執行線程池中處理。IO接入裝置可以從執行線程池中為虛擬機器的磁片分配執行線程,其中,在該執行線程上執行本實施例的讀寫請求處理方法處理該虛擬機器的磁片的所有IO讀寫請求。
根據本案上述實施例,步驟S310,在執行線程上執行讀寫請求處理方法可以包括如下步驟:
步驟S3102,在執行線程上運行事件迴圈。
步驟S3104,藉由事件觸發的方式在執行線程上執行讀寫請求處理方法。
在一種可選的方案中,在執行線程上執行IO讀寫請求的處理的方式有很多種,例如可以藉由事件觸發的方式來進行執行,例如,可以在執行線程上運行事件迴圈,然後,藉由事件觸發的方式在該執行線程上執行本實施例的讀寫請求處理方法。
藉由執行線程池的方式實現了資源的共用,如果結合IO讀寫請求的限制條件,可以提高資源的利用率,實現對資源的管理。
下面結合圖4和圖5詳細介紹本案的一種較佳實施例。
圖4是根據本案實施例一的一種可選的接入設備的模組示意圖,如圖5所示,可以是與VM和後端儲存連接的接入裝置,該接入裝置可以包含以下幾個模組: VM磁片IO讀寫請求感知與回應模組(簡稱為模組1):實現從實體機後端驅動中感知請求已經到達,並在請求完成後回應VM;IO讀寫請求映射模組(簡稱為模組2):實現IO讀寫請求上下文和IO資料部分的記憶體映射,從而直接拿到儲存資料的記憶體位址,而不必再拷貝資料;流控模組(簡稱為模組3):實現單個磁片、多個磁片的IO流控,實現讀寫IOPS、讀寫BPS的流控上限;後端儲存請求提交與回檔模組(簡稱為模組4):實現給後端儲存的請求提交,以及後端儲存完成請求的後續處理。
公共執行線程池模組(簡稱為模組5):給上述所有模組提供共用的執行線程資源。
公共執行線程池模組是本接入裝置的核心資源,其它模組的處理邏輯都在這個執行線程池上執行,它有多個執行線程,數量可以配置,每個執行線程上運行一個epoll事件迴圈,任何一個事件到來,epoll都會感知到,並執行事件對應的回檔處理邏輯,這些事件包括VM磁片IO到達接入模組的通知、流控模組定時任務、後端儲存完成IO、內部條件等待事件等等。一個VM磁片的IO讀寫請求的所有階段始終在一個執行線程上處理,不會切換執行線程,一個執行線程可以同時處理多個VM磁片的IO讀寫請求,互不阻塞互不干擾,一個實體機上所有VM的磁片IO都在這組執行線程池中處理,從而共用CPU資源。
圖5是根據本案實施例一的一種可選的接入裝置處理單個磁片的IO讀寫請求的流程圖,如圖5所示,該流程包括如下步驟:
步驟S51,虛擬機器將IO讀寫請求發送給IO接入裝置。
步驟S52,IO接入裝置的模組1在感知到IO讀寫請求之後,解析該請求。
可選的,VM磁片IO讀寫請求感知與回應模組是接入裝置的入口,VM的磁片在創建的時候,接入裝置會從公共執行線程池中分配一個執行線程,並將請求到達的處理回檔邏輯註冊到此執行線程的epoll事件迴圈上。VM中的應用讀寫磁片時,IO讀寫請求會經過Xen前後端驅動到達實體機,並觸發接入裝置的epoll事件,從而觸發請求處理邏輯執行,VM磁片IO讀寫請求感知與回應模組將IO讀寫請求解析並拿到IO的長度、偏移、操作、編號、相對位址等,然後交給記憶體映射模組。
步驟S53,IO接入裝置的模組2映射該IO讀寫請求的資料的記憶體位址。
可選的,當VM磁片IO讀寫請求感知與回應模組將請求提交過來時,IO讀寫請求映射模組先從映射的位址空間中拿到請求的上下文,包括請求編號、偏移、大小、請求資料的相對位址等,根據請求的編號、相對位址以及位址空間的起始位址,計算得到儲存這個請求資料的記憶體位址。
步驟S54,IO接入裝置的模組3進行流控限速,在超速的時候設置定時任務。
可選的,流控模組可以維護時間片、當前已經提交給後端的IO個數與位元組數、被限制IO的等待佇列等資訊,收到IO讀寫請求映射模組提交的請求後,計算請求個數或請求位元組數是否超出當前時間片允許的範圍,如果超出,則計算此請求需要等待的時間,將請求放到等待佇列,並在公共執行線程池模組執行線程池中當前執行線程裡註冊一個定時任務;定時任務時間到了以後在當前執行線程將IO從等待佇列取出,然後提交給後端儲存請求提交與回檔模組,從而將一塊磁片所能搶佔的IO性能限定在設定的IOPS、BPS以下。流控模組可以防止某些VM磁片佔用太多資源,並且它只使用公共執行線程池模組的執行線程資源,不再需要其它CPU、執行線程資源。
步驟S55,IO接入裝置的模組4將IO讀寫請求提交到後端儲存。
步驟S56,後端儲存完成IO,返回回應結果給IO接入裝置。
步驟S57,IO接入裝置的模組4接收回應結果,模組1封裝該IO讀寫請求結構。
步驟S58,IO接入裝置將封裝好的回應結果返回給虛擬機器。
可選的,後端儲存提交與回檔模組接收流控模組提交的IO讀寫請求,並提交給後端儲存,後端儲存完成IO後, 會觸發此磁片所在執行線程的事件迴圈,這個執行線程也是請求提交的執行線程,事件處理邏輯會請請求的結果給VM磁片IO讀寫請求感知與回應模組,VM磁片IO讀寫請求感知與回應模組將請求結果封裝為回應返回給前後端驅動。
在原有Xen虛擬化平台和儲存平台軟體中,IO在前後端處理後還需要藉由一個用戶態進程處理,才提交給接入裝置,提交、回應過程還需要將請求拷貝兩次,並且每個磁片都會創建一個獨立的進程,IO處理會有執行線程切換並且無法實現執行線程池資源。本接入裝置去除了這些獨立進程,從而縮短了IO鏈路,藉由記憶體映射實現了資料的零拷貝,並實現多個磁片共用同一組執行線程池資源從而降低資源消耗提高性能,並在這組執行線程池裡實現IO流控,防止少數磁片搶佔太多資源。
在本案上述較佳的實施例中,提出一種縮短IO鏈路、更加節省資源的虛擬機器磁片接入後端儲存的裝置,並且實現資料零拷貝;能在共用CPU、執行線程池等資源的情況下接入多個VM的磁片IO,降低管理資源消耗,降低IO潛時(latency);並且還能實現流控限速模組,防止某些設備搶佔太多CPU、執行線程資源,影響其它VM的IO性能,並且流控限速也共用IO處理的執行線程池。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本案並不受所描述的動作順序的限制, 因為依據本案,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所涉及的動作和模組並不一定是本案所必須的。
藉由以上的實施方式的描述,本領域的技術人員可以清楚地瞭解到根據上述實施例的方法可借助軟體加必需的通用硬體平台的方式來實現,當然也可以藉由硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本案的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒體(如ROM/RAM、磁碟、光碟)中,包括若干指令用以使得一台終端設備(可以是手機,電腦,伺服器,或者網路設備等)執行本案各個實施例所述的方法。
實施例2
根據本案實施例,還提供了一種基於虛擬機器的讀寫請求處理方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組電腦可執行指令的電腦系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的循序執行所示出或描述的步驟。
本案實施例提供了如圖6所示的基於虛擬機器的讀寫請求處理方法。圖6是根據本案實施例二的基於虛擬機器的讀寫請求處理方法的流程圖,如圖6所示,該流程包括 如下步驟:
步驟S602,接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中以Xen為例進行說明。在本實施例中以Xen為例的原因是,目前比較傾向於選擇Xen,因為它是對供應商和和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可以採用相同的方式進行處理,在此不再贅述。
在一種可選的方案中,一台實體機可以虛擬出很多個VM,用戶在這些VM內部署的應用會讀取和儲存資料到VM內的磁片,VM至少會有一個系統磁片,儲存作業系統,可能有多個資料盤,資料盤儲存自己的業務資料。每個磁片的IO讀寫請求,經過VM內的前端驅動,再經過Xen虛擬化平台到達後端驅動,後端驅動將IO讀寫請求轉發給IO接入裝置,IO接入裝置的IO請求感知與回應模組感知到IO讀寫請求。
步驟S604,獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料。
在一種可選的方案中,在接收到來自虛擬機器的IO讀寫請求之後,可以藉由IO請求映射模組將虛擬機器中的磁片對應的位址空間映射到IO接入裝置中,得到IO接入裝置 可以訪問的位址空間,並根據映射的位址空間和IO讀寫請求,獲取實體機中儲存資料的位址。
步驟S606,按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果。
可選的,根據本案上述實施例,上述後端儲存裝置可以包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
步驟S608,接收後端儲存裝置處理IO讀寫所產生的請求結果。
在一種可選的方案中,可以根據配置決定此VM磁片的IO讀寫請求是提交到分散式儲存還是本地RAID儲存,藉由後端儲存提交與回檔模組將接收到的IO讀寫請求提交給後端儲存,後端儲存完成IO讀寫請求之後,將處理結果返回給IO接入裝置。
步驟S610,向虛擬機器返回請求結果。
在一種可選的方案中,可以藉由IO請求感知與回應模組將接收到的請求結果封裝為回應返回給虛擬機器。
由上可知,本案上述實施例二公開的方案中,接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,獲取所述IO讀寫請求所要請求的資料的映射位址,向儲存裝置提交IO讀寫請求之後,按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果,並向虛擬機器返回請求結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
容易注意到,由於可以根據IO讀寫請求所要請求的資料的映射位址,獲取實體機中儲存該資料的位址,而不需要獲取到該資料的具體內容,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例二的方案解決了現有技術中IO潛時(latency)升高的技術問題。
根據本案上述實施例,在步驟S602,接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求之前,上述方法還可以包括如下步驟:
步驟S600,在虛擬機器中創建虛擬磁片之後,映射得到虛擬磁片對應的位址空間,並從執行線程池中分配一個執行線程,其中,執行線程用於在讀寫虛擬磁片時運行IO讀寫請求所觸發的事件。
在一個可選的實施例中,可以藉由映射的方式從位址空間中獲取資料的位址,可以在虛擬機器的磁片被創建時,藉由mmap等系統調用,將該虛擬機器的磁片對應的位址空間映射到實體機中得到映射的位址空間。當然也可以在其他情況下進行映射,該映射動作只要在獲取IO讀寫請求之前進行即可。並且,可以為實體機上運行的所有虛擬機器的IO讀寫請求分配一個執行線程池,該執行線程池 中包括至少一個執行線程,實體機中的所有虛擬機器的磁片的IO讀寫請求均在該執行線程池中處理。
此處需要說明的是,藉由映射的方式進行處理實現較為方便,例如,在某些作業系統中就提供了一些系統調用,藉由這些系統調用就可以進行映射。當然其他方式也可以使得獲得到IO讀寫請求的上下文,在此不再贅述。
根據本案上述實施例,步驟S604,獲取IO讀寫請求所要請求的資料的映射位址可以包括如下步驟:
步驟S6042,映射得到虛擬磁片對應的位址空間的起始位址和長度。
步驟S6044,讀取IO讀寫請求的資訊,資訊至少包括:請求編號、請求的相對位址。
步驟S6046,根據IO讀寫請求的相對位址和位址空間的起始位址,計算得到儲存IO讀寫請求所要請求的資料的記憶體位址。
步驟S6048,按照計算得到的記憶體位址生成映射位址。
在一種可選的方案中,在接收到IO讀寫請求之後,可以從映射的位址空間中讀取IO讀寫請求的資訊,可以根據IO讀寫請求的編號、相對位址和位址空間的起始位址,計算得到資料的記憶體位址,然後根據該記憶體位址生成映射位址,這樣避免了一定的拷貝從而降低了IO的潛時。
藉由上述方案,不再需要將寫請求的資料內容從後端驅動拷貝到IO接入裝置或將讀請求的資料內容從IO接入裝 置拷貝到後端驅動,從實現IO讀寫請求資料的零拷貝,降低IO的潛時(Latency)。
根據本案上述實施例,在步驟S604,獲取IO讀寫請求所要請求的資料的映射位址之後,上述方法還包括如下步驟:
步驟S612,計算IO讀寫請求的請求量是否超過預設值。
具體的,上述預設值可以是外部設定的值,例如,可以是針對某一個VM磁片的IOPS、BPS設定。
步驟S614,如果超出,則將IO讀寫請求放入等待佇列。
步驟S616,如果檢測到定時時間到達,則從等待佇列中讀取IO讀寫請求;其中,定時時間為在執行線程池中註冊的定時任務所限定的時長。
此處需要說明的是,由於一個實體機上的虛擬平台上運行有多個虛擬機器,這些虛擬機器都需要進行IO操作,而這些虛擬機器所依附的實體機上的資源是有限的。為了更好的對資源進行處理,可以考慮對虛擬機器的IO讀寫請求進行限制。對每個虛擬機器的限制條件可以是不同的,這可以根據虛擬機器上運行的服務來進行確定。即可以針對每個虛擬機器單獨制定限制條件。
在一種可選的方案中,在獲取到資料的映射位址之後,可以計算請求個數或請求位元組數是否超出當前時間片允許的範圍,如果超出,則計算此請求需要等待的時 間,將請求放到等待佇列,並在預定時間後,將IO從等待佇列取出,然後提交給後端儲存請求提交與回檔模組,從而將一塊磁片所能搶佔的IO性能限定在設定的IOPS、BPS以下。
藉由上述方案,藉由根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求,可以防止某些VM磁片佔用太多資源。
實施例3
根據本案實施例,還提供了一種快速處理讀寫請求的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組電腦可執行指令的電腦系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的循序執行所示出或描述的步驟。
本案實施例提供了如圖7所示的基於虛擬機器的讀寫請求處理方法。圖7是根據本案實施例三的快速處理讀寫請求的方法的流程圖,如圖7所示,該流程包括如下步驟:
步驟S702,接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中以Xen為例進行說明。在本實施例中以Xen為例的原因 是,目前比較傾向於選擇Xen,因為它是對供應商和和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可以採用相同的方式進行處理,在此不再贅述。
在一種可選的方案中,一台實體機可以虛擬出很多個VM,用戶在這些VM內部署的應用會讀取和儲存資料到VM內的磁片,VM至少會有一個系統磁片,儲存作業系統,可能有多個資料盤,資料盤儲存自己的業務資料。每個磁片的IO讀寫請求,經過VM內的前端驅動,再經過Xen虛擬化平台到達後端驅動,後端驅動將IO讀寫請求轉發給IO接入裝置,IO接入裝置的IO請求感知與回應模組感知到IO讀寫請求。
步驟S704,獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料。
在一種可選的方案中,在接收到來自虛擬機器的IO讀寫請求之後,可以藉由IO請求映射模組將虛擬機器中的磁片對應的位址空間映射到IO接入裝置中,得到IO接入裝置可以訪問的位址空間,並根據映射的位址空間和IO讀寫請求,獲取實體機中儲存資料的位址。
由上可知,本案上述實施例三公開的方案中,接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,獲取所述IO讀寫請求所要請求的資料的映射位址。
容易注意到,由於可以根據IO讀寫請求所要請求的資料的映射位址,獲取實體機中儲存該資料的位址,而不需 要獲取到該資料的具體內容,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的Latency。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例三的方案解決了現有技術中IO潛時(latency)升高的技術問題。
根據本案上述實施例,在步驟S704,獲取所述IO讀寫請求所要請求的資料的映射位址之後,上述方法還可以包括:
步驟S706,按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果。
可選的,根據本案上述實施例,上述後端儲存裝置可以包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
步驟S708,接收後端儲存裝置處理IO讀寫所產生的請求結果。
在一種可選的方案中,可以根據配置決定此VM磁片的IO讀寫請求是提交到分散式儲存還是本地RAID儲存,藉由後端儲存提交與回檔模組將接收到的IO讀寫請求提交給後端儲存,後端儲存完成IO讀寫請求之後,將處理結果返回給IO接入裝置。
步驟S710,向虛擬機器返回請求結果。
在一種可選的方案中,可以藉由IO請求感知與回應模組將接收到的請求結果封裝為回應返回給虛擬機器。
藉由上述步驟S706至步驟S710,按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果,接收後端儲存裝置處理IO讀寫所產生的請求結果,向虛擬機器返回請求結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
實施例4
根據本實施例,還提供了一種用於實施讀寫請求處理方法的讀寫請求處理裝置。
圖8是根據本案實施例四的一種讀寫請求處理裝置的結構方塊方塊圖,如圖8所示,該裝置800包括如下單元:第一接收單元801,獲取單元803,第二接收單元805和返回單元807。
其中,第一接收單元801用於接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取單元803用於獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;第二接收單元805用於在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;返回單元807用於藉由位址空間向虛擬機器返回處理結果。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中以Xen為例進行說明。在本實施例中以Xen為例的原因是,目前比較傾向於選擇Xen,因為它是對供應商和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可以採用相同的方式進行處理,在此不再贅述。
可選的,根據本案上述實施例,上述儲存裝置可以包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
此處需要說明的是,上述第一接收單元801,獲取單元803,第二接收單元805和返回單元807對應於實施例一中的步驟S302至步驟S308,四個單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
由上可知,本案上述實施例四公開的方案中,接收來自虛擬機器的IO讀寫請求,獲取預先映射得到的位址空間,從根據IO讀寫請求和位址空間獲取實體機中儲存該資料的位址,向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,藉由位址空間向虛擬機器返回處理結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
容易注意到,由於可以從預先映射得到的位址空間中獲取實體機中儲存該資料的位址,而位址空間是映射虛擬 機器的磁片對應的位址空間到的,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例四的方案解決了現有技術中IO潛時(latency)升高的技術問題。
根據本案上述實施例,如圖8所示,獲取單元803包括如下子單元:獲取子單元809和計算子單元811。
其中,獲取子單元809用於獲取IO讀寫請求的上下文;計算子單元811用於根據IO讀寫請求的上下文計算得到資料的位址。
此處需要說明的是,藉由映射的方式進行處理實現較為方便,例如,在某些作業系統中就提供了一些系統調用,藉由這些系統調用就可以進行映射。當然其他方式也可以使得獲得到IO讀寫請求的上下文,在此不再贅述。
此處還需要說明的是,上述獲取子單元809和計算子單元811對應於實施例一中的步驟S3042至步驟S3044,兩個單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
根據本案上述實施例,計算子單元811還用於根據IO 讀寫請求的上下文中攜帶的IO讀寫請求的資訊以及位址空間的資訊計算資料的位址,其中,IO讀寫請求的資訊包括以下至少之一:IO讀寫請求的編號、IO讀寫請求的偏移、IO讀寫請求的大小、IO讀寫請求的相對位址;位址空間的資訊包括至少之一:位址空間的起始位址、位址空間的長度。
此處還需要說明的是,上述計算子單元811對應於實施例一中的步驟S3044,該單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
藉由上述方案,不再需要將寫請求的資料內容從後端驅動拷貝到IO接入裝置或將讀請求的資料內容從IO接入裝置拷貝到後端驅動,從實現IO讀寫請求資料的零拷貝,降低IO的潛時(Latency)。
根據本案上述實施例,如圖8所示,上述裝置800還包括如下單元:映射單元813。
其中,映射單元813用於在創建虛擬機器的磁片時,將磁片對應的位址空間映射到實體機中得到位址空間,其中,位址空間的資訊包括以下至少之一:該位址空間的起始位址、該位址空間的長度。
此處需要說明的是,上述映射單元813對應於實施例一中的步驟S3040,該單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需 要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
根據本案上述實施例,如圖8所示,上述裝置800還包括如下單元:處理單元815。
其中,處理單元815用於根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求,並在判斷結果為允許的情況下,向儲存裝置提交IO讀寫請求。
此處需要說明的是,由於一個實體機上的虛擬平台上運行有多個虛擬機器,這些虛擬機器都需要進行IO操作,而這些虛擬機器所依附的實體機上的資源是有限的。為了更好的對資源進行處理,可以考慮對虛擬機器的IO讀寫請求進行限制。對每個虛擬機器的限制條件可以是不同的,這可以根據虛擬機器上運行的服務來進行確定。即可以針對每個虛擬機器單獨制定限制條件。以上述虛擬機器為例。上述限制條件可以是外部設定的條件,如針對某一個VM磁片的IOPS、BPS設定。由於運行不同服務的虛擬機器由於服務的重要性不同,還可以為每個虛擬機器制定一個優先順序,對於優先順序高的虛擬機器中的IO讀寫請求,可以不進行限制,或者可以限制的較少,即可以針對不同的優先順序制定不同的限制條件。
可選的,根據本案上述實施例,上述限制條件可以包括以下至少之一:對於虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的 處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;IO讀寫請求的優先順序;虛擬機器的優先順序。
此處還需要說明的是,上述處理單元815對應於實施例一中的步驟S3062至步驟S3064,該單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
藉由上述方案,藉由根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求,可以防止某些VM磁片佔用太多資源。
根據本案上述實施例,處理單元815用於在判斷結果為不允許的情況下,在預定時間後向儲存裝置提交IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向儲存裝置提交IO讀寫請求。
具體的,上述預定時間可以是根據計算得到的IO讀寫請求需要等待的時間。
此處需要說明的是,上述處理單元815對應於實施例一中的步驟S3066,該單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
根據本案上述實施例,如圖8所示,上述裝置800還包括如下單元:執行線程分配單元817。
其中,執行線程分配單元817用於在創建所述虛擬機 器的磁片過程中,從執行線程池中為來自虛擬機器的IO讀寫請求分配執行線程,其中,在執行線程上執行讀寫請求處理方法以處理虛擬機器的磁片的所有IO讀寫請求,執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從執行線程池中分配執行線程進行處理。
可選的,根據本案上述實施例,一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛擬機器的磁片的IO讀寫請求。
此處需要說明的是,運行在實體機上的虛擬機器其本質上還是要使用該實體機上的資源,實體機上可能不僅僅運行有虛擬化平台,還可能運行其他服務或者其他應用。為了更好的為實體機上的虛擬機器提供資源。
此處需要說明的是,上述執行線程分配單元817對應於實施例一中的步驟S310,該單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例一所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
根據本案上述實施例,上述讀寫請求處理裝置中的單元藉由事件觸發的方式在執行線程上執行,其中,在執行線程上運行有事件迴圈。
在一種可選的方案中,在執行線程上執行IO讀寫請求的處理的方式有很多種,例如可以藉由事件觸發的方式來進行執行,例如,可以在執行線程上運行事件迴圈,然後,藉由事件觸發的方式在該執行線程上執行本實施例的 讀寫請求處理方法。
藉由執行線程池的方式實現了資源的共用,如果結合IO讀寫請求的限制條件,可以提高資源的利用率,實現對資源的管理。
實施例5
根據本案實施例,還提供了一種基於虛擬機器的讀寫請求處理裝置實施例。
本案實施例提供了如圖8所示的基於虛擬機器的讀寫請求處理裝置。圖9是根據本案實施例五的基於虛擬機器的讀寫請求處理裝置的結構方塊方塊圖,如圖9所示,該裝置900包括:第一接收單元901,獲取單元903,提交單元905,第二接收單元907和返回單元909。
第一接收單元901,用於接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元903,用於獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料;提交單元905,用於按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果;第二接收單元807,用於接收後端儲存裝置處理IO讀寫所產生的請求結果;返回單元909,用於向虛擬機器返回請求結果。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中 以Xen為例進行說明。在本實施例中以Xen為例的原因是,目前比較傾向於選擇Xen,因為它是對供應商和和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可以採用相同的方式進行處理,在此不再贅述。
可選的,根據本案上述實施例,上述後端儲存裝置可以包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
此處還需要說明的是,上述第一接收單元901,獲取單元903,提交單元905,第二接收單元907和返回單元909對應於實施例二中的步驟S602至步驟S610,五個單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例二所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
由上可知,本案上述實施例四公開的方案中,接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,獲取所述IO讀寫請求所要請求的資料的映射位址,向儲存裝置提交IO讀寫請求之後,按照映射位址提交IO讀寫請求至實體機中的後端儲存裝置,得到請求結果,並向虛擬機器返回請求結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
容易注意到,由於可以根據IO讀寫請求所要請求的資料的映射位址,獲取實體機中儲存該資料的位址,而不需要獲取到該資料的具體內容,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資 料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例四的方案解決了現有技術中IO潛時(latency)升高的技術問題。
實施例6
根據本案實施例,還提供了一種用於實施快速處理讀寫請求的快速處理讀寫請求的裝置。
本案實施例提供了如圖10所示的快速處理讀寫請求的裝置。圖10是根據本案實施例六的快速處理讀寫請求的裝置的結構方塊方塊圖,如圖10所示,該裝置包括1000:接收單元1001和獲取單元1003。
接收單元,用於接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元,用於獲取IO讀寫請求所要請求的資料的映射位址,其中,映射位址用於將IO讀寫請求映射至實體機中後端儲存裝置的資料。
具體的,上述虛擬化平台可以是VMware、Virtual Box、Virtual PC、Xen、OpenVZ、KVM,在本實施例中以Xen為例進行說明。在本實施例中以Xen為例的原因是,目前比較傾向於選擇Xen,因為它是對供應商和和客戶來說都是可以接受的折衷方案。其他虛擬化平台上也可 以採用相同的方式進行處理,在此不再贅述。
此處還需要說明的是,上述接收單元1001和獲取單元1003對應於實施例三中的步驟S702至步驟S704,兩個單元與對應的步驟所實現的實例和應用場景相同,但不限於上述實施例三所公開的內容。需要說明的是,上述單元作為裝置的一部分可以運行在實施例一提供的電腦終端10中。
由上可知,本案上述實施例六公開的方案中,接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,獲取所述IO讀寫請求所要請求的資料的映射位址。
容易注意到,由於可以根據IO讀寫請求所要請求的資料的映射位址,獲取實體機中儲存該資料的位址,而不需要獲取到該資料的具體內容,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例六的方案解決了現有技術中IO潛時(latency)升高的技術問題。
實施例7
本案的實施例可以提供一種電腦終端或者稱為計算設備,該電腦終端可以是電腦終端群中的任意一個電腦終端設備。可選地,在本實施例中,上述電腦終端也可以替換 為移動終端等終端設備。
可選地,在本實施例中,上述電腦終端可以位於電腦網路的多個網路設備中的至少一個網路設備。
在本實施例中,上述電腦終端可以執行以下方法中以下步驟的程式碼:接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;藉由位址空間向虛擬機器返回處理結果。
可選地,圖11是根據本案實施例的一種電腦終端的結構方塊方塊圖。如圖11所示,該電腦終端1100可以包括:一個或多個(圖中僅示出一個)處理器1101、記憶體1103。
其中,記憶體可用於儲存軟體程式以及單元,如本案實施例中的讀寫請求處理方法和裝置對應的程式指令/單元,處理器藉由運行儲存在記憶體內的軟體程式以及單元,從而執行各種功能應用以及資料處理,即實現上述的讀寫請求處理方法。記憶體可包括高速隨機記憶體,還可以包括非易失性記憶體,如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非易失性固態記憶體。在一些實例中,記憶體可進一步包括相對於於處理器遠端設置的記憶 體,這些遠端儲存器可以藉由網路連接至終端。上述網路的實例包括但不限於互聯網、企業內部網、局域網、移動通信網及其組合。
處理器可以藉由傳輸裝置調用記憶體儲存的資訊及應用程式,以執行下述步驟:接收來自虛擬機器的IO讀寫請求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;藉由位址空間向虛擬機器返回處理結果。
可選的,上述處理器還可以執行如下步驟的程式碼:獲取IO讀寫請求的上下文;根據IO讀寫請求的上下文計算得到資料的位址。
可選的,上述處理器還可以執行如下步驟的程式碼:根據IO讀寫請求的上下文中攜帶的IO讀寫請求的資訊以及位址空間的資訊計算資料的位址,其中,IO讀寫請求的資訊包括以下至少之一:IO讀寫請求的編號、IO讀寫請求的偏移、IO讀寫請求的大小、IO讀寫請求的相對位址;位址空間的資訊包括至少之一:位址空間的起始位址、位址空間的長度。
可選的,上述處理器還可以執行如下步驟的程式碼:在獲取IO讀寫請求的上下文之前,在創建虛擬機器的磁片 時,將磁片對應的位址空間映射到實體機中得到位址空間,其中,位址空間的資訊包括以下至少之一:該位址空間的起始位址、該位址空間的長度。
可選的,上述處理器還可以執行如下步驟的程式碼:根據預先設置的限制條件判斷是否允許向儲存裝置提交IO讀寫請求;在判斷結果為允許的情況下,向儲存裝置提交IO讀寫請求。
可選的,上述處理器還可以執行如下步驟的程式碼:在判斷結果為不允許的情況下,在預定時間後向儲存裝置提交IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向儲存裝置提交IO讀寫請求。
可選的,上述處理器還可以執行如下步驟的程式碼:限制條件包括以下至少之一:對於虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;IO讀寫請求的優先順序;虛擬機器的優先順序。
可選的,上述處理器還可以執行如下步驟的程式碼:在創建所述虛擬機器的磁片過程中,從執行線程池中為來自虛擬機器的IO讀寫請求分配執行線程,其中,在執行線程上執行讀寫請求處理方法以處理虛擬機器的磁片的所有IO讀寫請求,執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從執行線程池中分配執行 線程進行處理。
可選的,上述處理器還可以執行如下步驟的程式碼:一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛擬機器的磁片的IO讀寫請求。
可選的,上述處理器還可以執行如下步驟的程式碼:在執行線程上運行事件迴圈;藉由事件觸發的方式在執行線程上執行讀寫請求處理方法。
採用本案實施例,接收來自虛擬機器的IO讀寫請求,獲取預先映射得到的位址空間,從根據IO讀寫請求和位址空間獲取實體機中儲存該資料的位址,向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,藉由位址空間向虛擬機器返回處理結果,從而實現將虛擬機器發出的讀寫請求發送給儲存裝置的目的。
容易注意到,由於可以從預先映射得到的位址空間中獲取實體機中儲存該資料的位址,而位址空間是映射虛擬機器的磁片對應的位址空間到的,可以減少從虛擬化平台向IO接入裝置的拷貝或者減少從IO接入裝置向虛擬化平台的資料拷貝,藉由減少資料的拷貝環節,從而降低了IO的潛時(Latency)。因此,藉由本案實施例所提供的方案,可以達到縮短IO鏈路,實現資料零拷貝,降低IO潛時(latency)的效果。
由此,本案提供的上述實施例一的方案解決了現有技術中IO潛時(latency)升高的技術問題。
本領域普通技術人員可以理解,圖11所示的結構僅為示意,電腦終端也可以是智慧手機(如Android手機、iOS手機等)、平板電腦、掌上型電腦以及移動互聯網設備(Mobile Internet Devices,MID)、PAD等終端設備。圖11其並不對上述電子裝置的結構造成限定。例如,電腦終端1100還可包括比圖11中所示更多或者更少的元件(如網路介面、顯示裝置等),或者具有與圖11所示不同的配置。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以藉由程式來指令終端設備相關的硬體來完成,該程式可以儲存於一電腦可讀儲存媒體中,儲存媒體可以包括:快閃記憶體盤、唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁片或光碟等。
實施例8
本案的實施例還提供了一種儲存媒體。可選地,在本實施例中,上述儲存媒體可以用於保存上述實施例一所提供的方法所執行的程式碼。
可選地,在本實施例中,上述儲存媒體可以位於電腦網路中電腦終端群中的任意一個電腦終端中,或者位於移動終端群中的任意一個移動終端中。
可選地,在本實施例中,儲存媒體被設置為儲存用於執行以下步驟的程式碼:接收來自虛擬機器的IO讀寫請 求,其中,IO讀寫請求用於請求讀和/或寫虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據IO讀寫請求和位址空間獲取實體機中儲存資料的位址,其中,位址空間是映射得到的虛擬機器的磁片的位址;在向儲存裝置提交IO讀寫請求之後,接收資料在儲存裝置上的處理結果,其中,儲存裝置為實體機中儲存資料的裝置;藉由位址空間向虛擬機器返回處理結果。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:獲取IO讀寫請求的上下文;根據IO讀寫請求的上下文計算得到資料的位址。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:根據IO讀寫請求的上下文中攜帶的IO讀寫請求的資訊以及位址空間的資訊計算資料的位址,其中,IO讀寫請求的資訊包括以下至少之一:IO讀寫請求的編號、IO讀寫請求的偏移、IO讀寫請求的大小、IO讀寫請求的相對位址;位址空間的資訊包括至少之一:位址空間的起始位址、位址空間的長度。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:在獲取IO讀寫請求的上下文之前,在創建虛擬機器的磁片時,將磁片對應的位址空間映射到實體機中得到位址空間,其中,位址空間的資訊包括以下至少之一:該位址空間的起始位址、該位址空間的長度。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:根據預先設置的限制條件判斷是否允許向儲存 裝置提交IO讀寫請求;在判斷結果為允許的情況下,向儲存裝置提交IO讀寫請求。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:在判斷結果為不允許的情況下,在預定時間後向儲存裝置提交IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向儲存裝置提交IO讀寫請求。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:限制條件包括以下至少之一:對於虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;IO讀寫請求的優先順序;虛擬機器的優先順序。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:在創建所述虛擬機器的磁片過程中,從執行線程池中為來自虛擬機器的IO讀寫請求分配執行線程,其中,在執行線程上執行讀寫請求處理方法以處理虛擬機器的磁片的所有IO讀寫請求,執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從執行線程池中分配執行線程進行處理。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛 擬機器的磁片的IO讀寫請求。
可選地,儲存媒體還被設置為儲存用於執行以下步驟的程式碼:在執行線程上運行事件迴圈;藉由事件觸發的方式在執行線程上執行讀寫請求處理方法。
上述本案實施例序號僅僅為了描述,不代表實施例的優劣。
在本案的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本案所提供的幾個實施例中,應該理解到,所揭露的技術內容,可藉由其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是藉由一些介面,單元或模組的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是實體上分開的,作為單元顯示的部件可以是或者也可以不是實體單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本案各個實施例中的各功能單元可以集成在 一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以儲存在一個電腦可讀取儲存媒體中。基於這樣的理解,本案的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可為個人電腦、伺服器或者網路設備等)執行本案各個實施例所述方法的全部或部分步驟。而前述的儲存媒體包括:隨身碟、唯讀記憶體(ROM,Read-Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以儲存程式碼的媒體。
以上所述僅是本案的較佳實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本案原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本案的保護範圍。

Claims (26)

  1. 一種讀寫請求處理方法,包括:接收來自虛擬機器的IO讀寫請求,其中,所述IO讀寫請求用於請求讀和/或寫所述虛擬機器的任意一個磁片中的資料;獲取預先映射得到的位址空間,並根據所述IO讀寫請求和所述位址空間獲取實體機中儲存所述資料的位址,其中,所述位址空間是映射得到的所述虛擬機器的磁片的位址;在向儲存裝置提交所述IO讀寫請求之後,接收所述資料在所述儲存裝置上的處理結果,其中,所述儲存裝置為實體機中儲存所述資料的裝置;藉由所述位址空間向所述虛擬機器返回所述處理結果;在接收來自所述虛擬機的IO讀取請求之前,所述方法包括:將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;向所述儲存裝置提交所述IO讀寫請求包括:根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求;在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛 擬機單獨制定所述限制條件;所述方法還包括:在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫請求處理方法以處理所述虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  2. 如申請專利範圍第1項所述的方法,其中,獲取預先映射得到的位址空間,並根據所述IO讀寫請求和所述位址空間獲取實體機中儲存所述資料的位址,包括:獲取所述IO讀寫請求的上下文;根據所述IO讀寫請求的上下文計算得到所述資料的位址。
  3. 如申請專利範圍第2項所述的方法,其中,根據所述IO讀寫請求的上下文計算得到所述資料的位址包括:根據所述IO讀寫請求的上下文中攜帶的所述IO讀寫請求的資訊以及所述位址空間的資訊計算所述資料的位址,其中,所述IO讀寫請求的資訊包括以下至少之一:所述IO讀寫請求的編號、所述IO讀寫請求的偏移、所述IO讀寫請求的大小、所述IO讀寫請求的相對位址;所述位址空間的資訊包括至少之一:所述位址空間的起始位址、所述位址空間的長度。
  4. 如申請專利範圍第2或3項所述的方法,其中,在獲取所述IO讀寫請求的上下文之前,所述方法還包括:在創建所述虛擬機器的磁片時,將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間,其中,所述位址空間的資訊包括以下至少之一:該位址空間的起始位址、該位址空間的長度。
  5. 如申請專利範圍第1項所述的方法,其中,向所述儲存裝置提交所述IO讀寫請求包括:在判斷結果為不允許的情況下,在預定時間後向所述儲存裝置提交所述IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向所述儲存裝置提交所述IO讀寫請求。
  6. 如申請專利範圍第1或5項所述的方法,其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料的量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  7. 如申請專利範圍第1項所述的方法,其中,一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛擬機器的磁片的IO讀寫請求。
  8. 如申請專利範圍第1項所述的方法,其中,在所述執行線程上執行所述讀寫請求處理方法包括:在所述執行線程上運行事件迴圈;藉由事件觸發的方式在所述執行線程上執行所述讀寫請求處理方法。
  9. 如申請專利範圍第1項所述的方法,其中,所述儲存裝置包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
  10. 一種基於虛擬機器的讀寫請求處理方法,包括:接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,所述虛擬機器為實體機上部署的任意一個虛擬機器;獲取所述IO讀寫請求所要請求的資料的映射位址,其中,所述映射位址用於將所述IO讀寫請求映射至所述實體機中後端儲存裝置的所述資料;按照所述映射位址提交所述IO讀寫請求至所述實體機中的後端儲存裝置,得到請求結果;接收所述後端儲存裝置處理所述IO讀寫所產生的請求結果;向所述虛擬機器返回所述請求結果;在接收來自所述虛擬機的IO讀取請求之前,所述方法包括:將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;所述方法還包括:根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求;在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛擬機單獨制定所述限制條件;所述方法還包括:在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫請求處理方法以處理所述 虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  11. 如申請專利範圍第10項所述的方法,其中,在讀寫所述虛擬機器上的虛擬磁片時產生IO讀寫請求之前,所述方法還包括:在所述虛擬機器中創建所述虛擬磁片之後,映射得到所述虛擬磁片對應的位址空間,並從執行線程池中分配一個執行線程,其中,所述執行線程用於在讀寫所述虛擬磁片時運行所述IO讀寫請求所觸發的事件。
  12. 如申請專利範圍第11項所述的方法,其中,獲取所述IO讀寫請求所要請求的資料的映射位址,包括:映射得到所述虛擬磁片對應的位址空間的起始位址和長度; 讀取所述IO讀寫請求的資訊,所述資訊至少包括:請求編號、請求的相對位址;根據所述IO讀寫請求的相對位址和所述位址空間的起始位址,計算得到儲存所述IO讀寫請求所要請求的資料的記憶體位址;按照計算得到的記憶體位址生成所述映射位址。
  13. 如申請專利範圍第11項所述的方法,其中,在獲取所述IO讀寫請求所要請求的資料的映射位址之後,所述方法還包括:計算所述IO讀寫請求的請求量是否超過預設值;如果超出,則將所述IO讀寫請求放入等待佇列;如果檢測到定時時間到達,則從所述等待佇列中讀取所述IO讀寫請求;其中,所述定時時間為在所述執行線程池中註冊的定時任務所限定的時長。
  14. 如申請專利範圍第10至13項中任一項所述的方法,其中,所述後端儲存裝置設備包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
  15. 一種快速處理讀寫請求的方法,其中包括:接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,所述虛擬機器為實體機上部署的任意一個虛擬 機器;獲取所述IO讀寫請求所要請求的資料的映射位址,其中,所述映射位址用於將所述IO讀寫請求映射至所述實體機中後端儲存裝置的所述資料;在接收來自所述虛擬機的IO讀取請求之前,所述方法包括:將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;所述方法還包括:根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求;在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛擬機單獨制定所述限制條件;所述方法還包括:在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫請求處理方法以處理所述虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理 的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  16. 如申請專利範圍第15項所述的方法,其中,在獲取所述IO讀寫請求所要請求的資料的映射位址之後,所述方法還包括:按照所述映射位址提交所述IO讀寫請求至所述實體機中的後端儲存裝置,得到請求結果;接收所述後端儲存裝置處理所述IO讀寫所產生的請求結果;向所述虛擬機器返回所述請求結果。
  17. 一種讀寫請求處理裝置,其中,所述裝置包括:第一接收單元,用於接收來自虛擬機器的IO讀寫請求,其中,所述IO讀寫請求用於請求讀和/或寫所述虛擬機器的任意一個磁片中的資料;獲取單元,用於獲取預先映射得到的位址空間,並根據所述IO讀寫請求和所述位址空間獲取實體機中儲存所述資料的位址,其中,所述位址空間是映射得到的所述虛擬機器的磁片的位址;第二接收單元,用於在向儲存裝置提交所述IO讀寫請求之後,接收所述資料在所述儲存裝置上的處理結果,其中,所述儲存裝置為實體機中儲存所述資料的裝置; 返回單元,用於藉由所述位址空間向所述虛擬機器返回所述處理結果;所述裝置還包括:映射單元,用於在接收來自所述虛擬機的IO讀寫請求之前,將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;所述裝置還包括:處理單元,用於根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求,並在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛擬機單獨制定所述限制條件;所述裝置還包括:執行線程分配單元,用於在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫請求處理方法以處理所述虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理 的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  18. 如申請專利範圍第17項所述的裝置,其中,所述獲取單元包括:獲取子單元,用於獲取所述IO讀寫請求的上下文;計算子單元,用於根據所述IO讀寫請求的上下文計算得到所述資料的位址。
  19. 如申請專利範圍第18項所述的裝置,其中,所述計算子單元用於根據所述IO讀寫請求的上下文中攜帶的所述IO讀寫請求的資訊以及所述位址空間的資訊計算所述資料的位址,其中,所述IO讀寫請求的資訊包括以下至少之一:所述IO讀寫請求的編號、所述IO讀寫請求的偏移、所述IO讀寫請求的大小、所述IO讀寫請求的相對位址;所述位址空間的資訊包括至少之一:所述位址空間的起始位址、所述位址空間的長度。
  20. 如申請專利範圍第18或19項所述的裝置,其中,所述裝置還包括:映射單元,用於在創建所述虛擬機器的磁片時,將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間,其中,所述位址空間的資訊包括以下至少之一:該 位址空間的起始位址、該位址空間的長度。
  21. 如申請專利範圍第17項所述的裝置,其中,所述處理單元,還用於在判斷結果為不允許的情況下,在預定時間後向所述儲存裝置提交所述IO讀寫請求;或者,在預定時間後根據預先設置的限制條件再次判斷是否允許向所述儲存裝置提交所述IO讀寫請求。。
  22. 如申請專利範圍第17項所述的裝置,其中,一個虛擬機器的磁片的IO讀寫請求的所有處理均在一個執行線程上,一個執行線程能夠同時處理多個虛擬機器的磁片的IO讀寫請求。
  23. 如申請專利範圍第17項所述的裝置,其中,所述讀寫請求處理裝置中的單元藉由事件觸發的方式在所述執行線程上執行,其中,在所述執行線程上運行有事件迴圈。
  24. 如申請專利範圍第17項所述的裝置,其中,所述儲存裝置包括以下至少之一:分散式儲存裝置、本地磁碟陣列RAID儲存裝置。
  25. 一種基於虛擬機器的讀寫請求處理裝置,包括: 第一接收單元,用於接收讀寫所述虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,所述虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元,用於獲取所述IO讀寫請求所要請求的資料的映射位址,其中,所述映射位址用於將所述IO讀寫請求映射至所述實體機中後端儲存裝置的所述資料;提交單元,用於按照所述映射位址提交所述IO讀寫請求至所述實體機中的後端儲存裝置,得到請求結果;第二接收單元,用於接收所述後端儲存裝置處理所述IO讀寫所產生的請求結果;返回單元,用於向所述虛擬機器返回所述請求結果;所述裝置還包括:映射單元,用於在接收來自所述虛擬機的IO讀寫請求之前,將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;所述裝置還包括:處理單元,用於根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求,並在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛擬機單獨制定所述限制條件;所述裝置還包括:執行線程分配單元,用於在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫 請求處理方法以處理所述虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
  26. 一種快速處理讀寫請求的裝置,包括:接收單元,用於接收讀寫虛擬機器上的虛擬磁片時產生的IO讀寫請求,其中,所述虛擬機器為實體機上部署的任意一個虛擬機器;獲取單元,用於獲取所述IO讀寫請求所要請求的資料的映射位址,其中,所述映射位址用於將所述IO讀寫請求映射至所述實體機中後端儲存裝置的所述資料;所述裝置還包括:映射單元,用於在接收來自所述虛擬機的IO讀寫請求之前,將所述磁片對應的位址空間映射到所述實體機中得到所述位址空間;所述裝置還包括: 處理單元,用於根據預先設置的限制條件判斷是否允許向所述儲存裝置提交所述IO讀寫請求,並在判斷結果為允許的情況下,向所述儲存裝置提交所述IO讀寫請求;其中,所述實體機包括多個虛擬機,針對所述每個虛擬機單獨制定所述限制條件;所述裝置還包括:執行線程分配單元,用於在創建所述虛擬機器的磁片過程中,從執行線程池中為來自所述虛擬機器的IO讀寫請求分配執行線程,其中,在所述執行線程上執行所述讀寫請求處理方法以處理所述虛擬機器的磁片的所有IO讀寫請求,所述執行線程池中包括至少一個執行線程,所有虛擬機器的磁片的IO讀寫請求均從所述執行線程池中分配執行線程進行處理,所述多個虛擬機的磁片的IO讀寫請求通過一個執行線程處理;其中,所述限制條件包括以下至少之一:對於所述虛擬機器的磁片,在第一預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;對於所有虛擬機器的磁片,在第二預定時長內的處理的IO讀寫請求個數和/或處理的資料量不超過臨限值;所述IO讀寫請求的優先順序;所述虛擬機器的優先順序。
TW106125916A 2016-11-01 2017-08-01 讀寫請求處理方法及裝置 TWI752066B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610942888.XA CN108008911A (zh) 2016-11-01 2016-11-01 读写请求处理方法及装置
CN201610942888.X 2016-11-01
??201610942888.X 2016-11-01

Publications (2)

Publication Number Publication Date
TW201818262A TW201818262A (zh) 2018-05-16
TWI752066B true TWI752066B (zh) 2022-01-11

Family

ID=62021357

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106125916A TWI752066B (zh) 2016-11-01 2017-08-01 讀寫請求處理方法及裝置

Country Status (4)

Country Link
US (1) US20180121366A1 (zh)
CN (1) CN108008911A (zh)
TW (1) TWI752066B (zh)
WO (1) WO2018085421A1 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
CN110737608B (zh) * 2018-07-03 2024-03-15 阿里巴巴集团控股有限公司 一种数据操作方法、装置及系统
CN110688057B (zh) * 2018-07-05 2023-05-23 阿里巴巴集团控股有限公司 一种分布式存储方法及装置
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
CN110740099B (zh) * 2018-07-18 2023-03-31 阿里巴巴集团控股有限公司 一种数据流控方法和装置
CN110865769B (zh) * 2018-08-28 2023-06-20 阿里巴巴集团控股有限公司 处理读/写请求的方法、网络存储系统及电子设备
CN109344054A (zh) * 2018-09-03 2019-02-15 郑州云海信息技术有限公司 一种软件测试数据统计方法及系统
CN109375874B (zh) * 2018-09-28 2021-12-21 深信服科技股份有限公司 一种分布式存储的调用方法、装置及设备
CN109597712B (zh) * 2018-11-27 2021-04-23 杭州宏杉科技股份有限公司 空间分配方法及装置
CN109582685B (zh) * 2018-12-03 2023-01-10 武芮 一种记录上下文请求执行过程的方法及装置
CN111367627B (zh) * 2018-12-26 2024-02-13 三六零科技集团有限公司 一种读写磁盘任务的处理方法和装置
TWI687808B (zh) * 2019-01-25 2020-03-11 睿寬智能科技有限公司 減少寫入效能變化並防止io阻塞的方法
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN110221867A (zh) * 2019-05-31 2019-09-10 湖北三江航天万峰科技发展有限公司 一种xp系统下脉冲i/o功能卡通信驱动系统及方法
CN110286858B (zh) * 2019-06-26 2024-07-05 北京奇艺世纪科技有限公司 一种数据处理方法及相关设备
CN112148206A (zh) * 2019-06-28 2020-12-29 北京金山云网络技术有限公司 一种数据读写方法、装置、电子设备及介质
CN110888865A (zh) * 2019-12-04 2020-03-17 北京明略软件系统有限公司 一种基于单向链表的数据处理方法及装置
CN111209263A (zh) * 2020-01-14 2020-05-29 中国建设银行股份有限公司 数据存储方法、装置、设备及存储介质
CN111367472A (zh) * 2020-02-28 2020-07-03 北京百度网讯科技有限公司 虚拟化方法和装置
US11012512B1 (en) * 2020-05-20 2021-05-18 EMC IP Holding Company LLC Host device with automated write throttling responsive to storage system write pressure condition
CN113849428A (zh) * 2020-06-28 2021-12-28 华为技术有限公司 共享内存权限配置方法,内存单元和系统
CN113849119B (zh) * 2020-08-28 2024-07-16 京东科技控股股份有限公司 存储方法、存储装置和计算机可读存储介质
CN112947867B (zh) * 2021-04-06 2024-08-20 苏州菲瑞斯信息技术有限公司 全闪存阵列高性能存储系统及电子设备
US11550511B2 (en) 2021-05-21 2023-01-10 EMC IP Holding Company LLC Write pressure throttling based on service level objectives
US12067254B2 (en) 2021-05-21 2024-08-20 Samsung Electronics Co., Ltd. Low latency SSD read architecture with multi-level error correction codes (ECC)
CN113253938B (zh) * 2021-06-10 2021-11-05 北京世纪好未来教育科技有限公司 数据处理方法、装置、设备、存储介质及计算机程序产品
US20220405124A1 (en) * 2021-06-17 2022-12-22 Adobe Inc. Computing Device Control of a Job Execution Environment
CN113360287B (zh) * 2021-06-21 2022-09-23 上海哔哩哔哩科技有限公司 数据处理方法及装置
CN113487026B (zh) * 2021-07-05 2024-05-03 江苏号百科技有限公司 一种图计算中io节点高效读取数据的方法及系统
CN114265558B (zh) * 2021-12-23 2023-06-27 苏州优鲜信网络生活服务科技有限公司 一种具有数据通道的多线程集单系统及数据存储装置
CN114296961B (zh) * 2021-12-27 2024-08-23 中国民航信息网络股份有限公司 一种网络服务快速切换方法和相关装置
US12001679B2 (en) 2022-03-31 2024-06-04 Dell Products L.P. Storage system configured to collaborate with host device to provide fine-grained throttling of input-output operations
CN115098033A (zh) * 2022-07-04 2022-09-23 阿里巴巴(中国)有限公司 操作干扰表的处理方法和装置
US11934659B1 (en) 2022-09-28 2024-03-19 Dell Products L.P. Host background copy process with rate adjustment utilizing input-output processing pressure feedback from storage system
CN115858410B (zh) * 2023-02-16 2023-05-23 浪潮电子信息产业股份有限公司 一种io处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467408A (zh) * 2010-11-12 2012-05-23 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
TW201342064A (zh) * 2011-12-22 2013-10-16 Intel Corp 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術
TW201416881A (zh) * 2013-12-09 2014-05-01 Annethen Technology Co Ltd 分散式記憶體磁碟群集儲存系統運作方法
US20150234617A1 (en) * 2014-02-18 2015-08-20 University Of Florida Research Foundation, Inc. Method and apparatus for virtual machine live storage migration in heterogeneous storage environment

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7836212B2 (en) * 2006-07-20 2010-11-16 Oracle America, Inc. Reflecting bandwidth and priority in network attached storage I/O
JP4665040B2 (ja) * 2009-04-28 2011-04-06 株式会社東芝 計算機およびアクセス制御方法
US8239655B2 (en) * 2010-01-18 2012-08-07 Vmware, Inc. Virtual target addressing during direct data access via VF of IO storage adapter
US8719817B2 (en) * 2010-03-25 2014-05-06 Vmware, Inc. Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management
CN102541468B (zh) * 2011-12-12 2015-03-04 华中科技大学 虚拟化环境下的脏数据回写系统
CN104104705B (zh) * 2013-04-11 2018-02-02 阿里巴巴集团控股有限公司 分布式存储系统的接入方法和设备
US9245140B2 (en) * 2013-11-15 2016-01-26 Kabushiki Kaisha Toshiba Secure data encryption in shared storage using namespaces
CN104506540B (zh) * 2014-12-29 2018-03-27 成都极驰科技有限公司 虚拟主机的读写请求处理方法及系统、宿主机

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467408A (zh) * 2010-11-12 2012-05-23 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
TW201342064A (zh) * 2011-12-22 2013-10-16 Intel Corp 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術
TW201416881A (zh) * 2013-12-09 2014-05-01 Annethen Technology Co Ltd 分散式記憶體磁碟群集儲存系統運作方法
US20150234617A1 (en) * 2014-02-18 2015-08-20 University Of Florida Research Foundation, Inc. Method and apparatus for virtual machine live storage migration in heterogeneous storage environment

Also Published As

Publication number Publication date
WO2018085421A1 (en) 2018-05-11
TW201818262A (zh) 2018-05-16
CN108008911A (zh) 2018-05-08
US20180121366A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
TWI752066B (zh) 讀寫請求處理方法及裝置
US11221975B2 (en) Management of shared resources in a software-defined storage environment
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
US9110702B2 (en) Virtual machine migration techniques
US10936535B2 (en) Providing remote, reliant and high performance PCI express device in cloud computing environments
EP3457288B1 (en) Computer system and storage access device
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US9081612B2 (en) Virtual machine control method and virtual machine
US10768827B2 (en) Performance throttling of virtual drives
US9176764B1 (en) Managing memory in virtualized environments
US10133504B2 (en) Dynamic partitioning of processing hardware
US20130174151A1 (en) Information processing apparatus and method of controlling virtual machine
US11016817B2 (en) Multi root I/O virtualization system
US8990520B1 (en) Global memory as non-volatile random access memory for guest operating systems
CN115202827A (zh) 处理虚拟化中断的方法、中断控制器、电子设备和芯片
US10852954B1 (en) Running an enterprise storage subsystem as a virtual machine
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
US10963284B2 (en) Associating storage system performance objectives with virtual machines
US9110731B1 (en) Hard allocation of resources partitioning
US10963165B2 (en) Applying virtual machine performance objectives on a storage system
US20240020158A1 (en) Lcs resource device presentation system
US20240020159A1 (en) Lcs resource device utilization system
US10983820B2 (en) Fast provisioning of storage blocks in thin provisioned volumes for supporting large numbers of short-lived applications
CN118672725A (zh) 存储控制器以及操作包括存储控制器的电子系统的方法
CN114564440A (zh) 一种片上系统、芯片及电子设备