TWI735542B - 一種虛擬機器的資料儲存方法和裝置 - Google Patents

一種虛擬機器的資料儲存方法和裝置 Download PDF

Info

Publication number
TWI735542B
TWI735542B TW106105608A TW106105608A TWI735542B TW I735542 B TWI735542 B TW I735542B TW 106105608 A TW106105608 A TW 106105608A TW 106105608 A TW106105608 A TW 106105608A TW I735542 B TWI735542 B TW I735542B
Authority
TW
Taiwan
Prior art keywords
storage
storage device
data
write
write request
Prior art date
Application number
TW106105608A
Other languages
English (en)
Other versions
TW201737054A (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 TW201737054A publication Critical patent/TW201737054A/zh
Application granted granted Critical
Publication of TWI735542B publication Critical patent/TWI735542B/zh

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明實施例提供了一種虛擬機器的資料儲存方法和裝置,該方法包括:在宿主機中接收虛擬機器發送的原資料的寫請求;檢測所述寫請求的請求類型;當所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中。本發明實施例避免直接持久化至第二儲存設備,大大減少了儲存的I/O路徑,減少的時間和設備資源的消耗,提升了虛擬機器環境下分散式儲存的寫性能。

Description

一種虛擬機器的資料儲存方法和裝置
本發明涉及電腦處理的技術領域,特別是涉及一種虛擬機器的資料儲存方法和一種虛擬機器的資料儲存裝置。
在雲端計算的IaaS(Infrastructure as a Service,基礎設施即服務)中,雲端運營商提供託管的物理機、虛擬機器及其他設施,供不同的使用者根據自己的實際需要進行使用。
虛擬機器(Virtual Machine)服務是IaaS的核心服務之一,是指系統虛擬機器,即可以進行類比的、具有完整硬體系統功能的,運行在一個完全隔離環境中的完整電腦系統。
在雲端計算中,對於儲存服務的I/O(input/output,輸入/輸出)等要求比較高,並且為了避免硬體錯誤導致的使用者服務中斷或者資料丟失,通常應用分散式檔案系統進行鏡像備份及儲存使用者資料。
在虛擬機器的環境下,若後端應用分散式檔案系統儲存資料,使用者每次在虛擬機器的使用者態觸發的資料的 寫請求,都需要先從虛擬機器的內核態傳送到宿主機的內核態,然後再將寫請求傳送到宿主機的使用者態,再將資料以多副本方式寫到不同的分散式檔案系統中。
分散式檔案系統收到資料,在處理完寫請求之後,沿上述I/O路徑反向返回給虛擬機器的使用者態,最終完成使用者寫請求。
這種資料的寫方式,儲存的I/O路徑較長,使得每次寫資料,都會消耗較多的時間和設備資源,導致虛擬機器環境下分散式儲存的寫性能比較差。
鑒於上述問題,提出了本發明實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種虛擬機器的資料儲存方法和相應的一種虛擬機器的資料儲存裝置。
為了解決上述問題,本發明實施例公開了一種虛擬機器的資料儲存方法,包括:在宿主機中接收虛擬機器發送的原資料的寫請求;檢測所述寫請求的請求類型;當所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中。
可選地,還包括:判斷所述第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則將所述原資料發送至第二儲存設備進行儲 存;若否,則對儲存在所述第一儲存設備的所述原資料標記為髒資料。
可選地,還包括:在設定的時間將儲存在所述第一儲存設備的髒資料發送至第二儲存設備進行儲存;當儲存成功時,取消所述髒資料的標記,以識別為原資料。
可選地,還包括:當所述請求類型為第二寫請求時,讀取儲存在所述第一儲存設備的全部髒資料;將讀取的髒資料發送至第二儲存設備進行儲存;當儲存成功時,取消所述髒資料的標記,以識別為原資料。
可選地,還包括:當所述請求類型為第三寫請求時,將所述原資料儲存至第一儲存設備中;將所述原資料發送至第二儲存設備進行儲存。
可選地,所述在宿主機中接收虛擬機器發送的原資料的寫請求的步驟包括:由位於宿主機內核態中的塊設備後端驅動接收、由位於虛擬機器內核態中的塊設備前端驅動發送的原資料的寫請求。
可選地,所述檢測所述寫請求的請求類型的步驟包 括:由位於宿主機內核態中的塊設備後端驅動從所述寫請求中讀取請求類型標識,以識別所述寫請求的請求類型。
可選地,所述將所述原資料儲存至第一儲存設備中的步驟包括:由位於宿主機內核態的快取服務對象將所述原資料寫入位於宿主機中的第一儲存設備中;更新所述原資料的索引資訊。
可選地,所述將所述原資料發送至第二儲存設備進行儲存的步驟包括:由所述快取服務對象將所述原資料發送至位於宿主機使用者態的儲存客戶端;由所述儲存客戶端發送所述原資料至位於宿主機之外的第二儲存設備進行儲存。
可選地,所述在設定的時間將儲存在所述第一儲存設備的髒資料發送至第二儲存設備進行儲存的步驟包括:當超過預設的休眠時間,喚醒位於宿主機內核態的回寫執行緒;由所述回寫執行緒按照所述索引資訊讀取部分儲存在所述第一儲存設備的髒資料;由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;由所述儲存客戶端發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存; 當儲存成功時,計算休眠時間;對所述回寫執行緒進行休眠。
可選地,所述讀取儲存在所述第一儲存設備的全部髒資料的步驟包括:由所述快取服務對象喚醒位於宿主機內核態的回寫執行緒;由所述回寫執行緒按照所述索引資訊讀取儲存在所述第一儲存設備的全部髒資料。
可選地,所述將讀取的髒資料發送至第二儲存設備進行儲存的步驟包括:由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;由所述儲存客戶端發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存。
可選地,所述當儲存成功時,取消所述髒資料的標記,以識別為原資料的步驟包括:當所述回寫執行緒接收到所述儲存客戶端返回的儲存成功的消息時,取消所述髒資料的標記,以識別為原資料。
本發明實施例還公開了一種虛擬機器的資料儲存裝置,包括:寫請求接收模組,用於在宿主機中接收虛擬機器發送的原資料的寫請求;請求類型檢測模組,用於檢測所述寫請求的請求類 型;第一快速儲存模組,用於在所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中。
可選地,還包括:資料量判斷模組,用於判斷所述第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則調用第一持久化儲存模組,若否,則調用髒資料標記模組;第一持久化儲存模組,用於將所述原資料發送至第二儲存設備進行儲存;髒資料標記模組,用於對儲存在所述第一儲存設備的所述原資料標記為髒資料。
可選地,還包括:第二持久化儲存模組,用於在設定的時間將儲存在所述第一儲存設備的髒資料發送至第二儲存設備進行儲存;第一髒資料取消標記模組,用於在儲存成功時,取消所述髒資料的標記,以識別為原資料。
可選地,還包括:髒資料讀取模組,用於在所述請求類型為第二寫請求時,讀取儲存在所述第一儲存設備的全部髒資料;第三持久化儲存模組,用於將讀取的髒資料發送至第二儲存設備進行儲存;第二髒資料取消標記模組,用於在儲存成功時,取消所述髒資料的標記,以識別為原資料。
可選地,還包括: 第二快速儲存模組,用於在所述請求類型為第三寫請求時,將所述原資料儲存至第一儲存設備中;第四持久化儲存模組,用於將所述原資料發送至第二儲存設備進行儲存。
可選地,所述寫請求接收模組包括:驅動接收子模組,用於由位於宿主機內核態中的塊設備後端驅動接收、由位於虛擬機器內核態中的塊設備前端驅動發送的原資料的寫請求;可選地,所述請求類型檢測模組包括:驅動檢測子模組,用於由位於宿主機內核態中的塊設備後端驅動從所述寫請求中讀取請求類型標識,以識別所述寫請求的請求類型;可選地,所述第一快速儲存模組包括:第一快取服務寫資料子模組,用於由位於宿主機內核態的快取服務對象將所述原資料寫入位於宿主機中的第一儲存設備中;第一索引資訊更新子模組,用於更新所述原資料的索引資訊。
可選地,所述第二快速儲存模組包括:第二快取服務寫資料子模組,用於由位於宿主機內核態的快取服務對象將所述原資料寫入位於宿主機中的第一儲存設備中;第二索引資訊更新子模組,用於更新所述原資料的索引資訊。
可選地,所述第一持久化儲存模組包括:第一儲存客戶端發送子模組,用於由所述快取服務對象將所述原資料發送至位於宿主機使用者態的儲存客戶端;第一儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述原資料至位於宿主機之外的第二儲存設備進行儲存;可選地,所述第四持久化儲存模組包括:第二儲存客戶端發送子模組,用於由所述快取服務對象將所述原資料發送至位於宿主機使用者態的儲存客戶端;第二儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述原資料至位於宿主機之外的第二儲存設備進行儲存;可選地,所述第二持久化儲存模組包括:第一回寫執行緒喚醒子模組,用於在超過預設的休眠時間,喚醒位於宿主機內核態的回寫執行緒;部分髒資料讀取子模組,用於由所述回寫執行緒按照所述索引資訊讀取部分儲存在所述第一儲存設備的髒資料;第三儲存客戶端發送子模組,用於由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;第三儲存客戶端儲存子模組,用於由所述儲存客戶端 發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存;休眠時間計算子模組,用於在儲存成功時,計算休眠時間;休眠子模組,用於對所述回寫執行緒進行休眠。
可選地,所述髒資料讀取模組包括:第二回寫執行緒喚醒子模組,用於由所述快取服務對象喚醒位於宿主機內核態的回寫執行緒;全部髒資料讀取子模組,用於由所述回寫執行緒按照所述索引資訊讀取儲存在所述第一儲存設備的全部髒資料;可選地,所述第三持久化儲存模組包括:第四儲存客戶端發送子模組,用於由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;第四儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存。
可選地,所述第一髒資料取消標記模組包括:第一標記取消子模組,用於在所述回寫執行緒接收到所述儲存客戶端返回的儲存成功的消息時,取消所述髒資料的標記,以識別為原資料。
可選地,所述第二髒資料取消標記模組包括:第二標記取消子模組,用於在所述回寫執行緒接收到 所述儲存客戶端返回的儲存成功的消息時,取消所述髒資料的標記,以識別為原資料。
本發明實施例包括以下優點:本發明實施例劃分不同請求類型的寫請求,按照不同的請求類型的寫請求進行不同類型的寫操作,對於虛擬機器發送的普通寫請求,則由宿主機儲存至第一儲存設備,避免直接持久化至第二儲存設備,大大減少了儲存的I/O路徑,減少的時間和設備資源的消耗,提升了虛擬機器環境下分散式儲存的寫性能。
本發明實施例對於普通寫請求,寫入到第一儲存設備意味著寫操作就已經完成,可以返回寫操作的結果。
如果此時出現宕機,這部分資料將會丟失,但是,由於檔案系統的中繼資料並沒有更新,因此,並不會導致檔案系統的不一致,保證資料的一致性要求能夠實現。
本發明實施例考慮到普通寫請求過多的時候可能導致快速快取設備中存在大量髒資料的情況,對快速快取設備中的髒資料的資料量(大小或數量)進行了限制。
若髒資料的資料量超過預設的臨界值,表示存在較多的髒資料,所有超過該臨界值的寫請求將會直接發給第二儲存設備進行儲存,減少在第一儲存設備所在宿主機宕機時導致的資料丟失。
本發明實施例實現了對刷新快取寫請求之前所有寫請求的處理,保證之前所有的資料都已經寫入到第二儲存設備(如分散式檔案系統)才返回,實現了中繼資料更新之 後的一致性要求。
本發明實施例對於帶強制訪問單元標誌的寫請求,通過直接將該原資料發送至第二儲存設備(如分散式檔案系統),實現了資料的一致性要求。
101、102、103、301、302、303、304、305、306、307、308、401、402、403、404、405501、502、503、504‧‧‧步驟
200‧‧‧宿主機
201‧‧‧塊設備後端驅動
202‧‧‧快取服務
203‧‧‧第一儲存設備
204‧‧‧回寫執行緒
205‧‧‧Blktap
206‧‧‧儲存客戶端
210‧‧‧虛擬機器
211‧‧‧塊設備前端驅動
220‧‧‧第二儲存設備
230‧‧‧網路
601‧‧‧寫請求接收模組
602‧‧‧請求類型檢測模組
603‧‧‧第一快速儲存模組
圖1是本發明的一種虛擬機器的資料儲存方法實施例1的步驟流程圖;圖2是本發明實施例的一種虛擬機器和宿主機的結構方塊圖;圖3是本發明的一種虛擬機器的資料儲存方法實施例2的步驟流程圖;圖4是本發明的一種虛擬機器的資料儲存方法實施例3的步驟流程圖;圖5是本發明的一種虛擬機器的資料儲存方法實施例4的步驟流程圖;圖6是本發明的一種虛擬機器的資料儲存裝置實施例的結構方塊圖。
為使本發明的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本發明作進一步詳細的說明。
參照圖1,示出了本發明的一種虛擬機器的資料儲存 方法實施例1的步驟流程圖,具體可以包括如下步驟:
步驟101,在宿主機中接收虛擬機器發送的原資料的寫請求;一般而言,虛擬機器技術通過在物理設備(又稱宿主機)上添加一層虛擬機器監控程序(Virtual Machine Monitor,VMM),從而實現虛擬化,如虛擬化處理器、虛擬記憶體管理器(Memory Management Unit,MMU)和虛擬I/O系統等等。
在同一個物理設備中,可以產生多個不同的虛擬機器,分別運行多個不同或相同的作業系統。
虛擬機器監控程序又稱為監管程式(Hypervisor),從應用程式的角度看,程式運行在虛擬機器上同運行在宿主機上是一樣的。
在實際應用中,虛擬機器可以包括Hyper-V,Xen,KVM(Kernel-based Virtual Machine),Vmware等等。
為使本領域技術人員更好地理解本發明實施例,在本說明書中,將Xen作為虛擬機器的一種示例進行說明。
Xen屬於硬體虛擬化技術的一種實現方案,本質上是一種虛擬機器監控器,可以運行在多個平臺上,比如IA-32,x86-64和ARM。
Xen VMM允許多個虛擬系統併發地運行在同一個硬體環境上,對虛擬系統運行情況、硬體資源和其他電腦資源進行管理和分配。
Xen Hypervisor是Xen系統中最重要的部分之一,運 行在虛擬系統和物理平臺中,是最靠近實體層的也是具有最高的優先順序的部分。Hypervisor負責調度在它之上運行的虛擬系統。
Xen中最開始運行的第一個虛擬系統,通常稱為dom0,是一個擁有特權的系統,對其他虛擬系統的管理需要在這個系統中進行。dom0還得到VMM的授權,可以直接對硬體進行訪問。
dom0的作業系統一般是修改過的作業系統,被修改的作業系統可以是Linux、NetBSD和Solaris。
不過,隨著硬體技術的發展,未修改過的作業系統也可以在一些硬體技術輔助下直接運行在Xen平臺上,這些作業系統包括Intel VT-x和AMD-V,主要是針對CPU(Central Processing Unit,中央處理器)特權級進行了修改。
為了有效地管理和控制程式執行,宿主機和虛擬機器的作業系統一般都設置有特權級,因此在硬體上對特權級做了很多支持,就Intel x86架構的CPU來說,一共有0~3四個特權級,0級最高,3級最低,硬體上在執行每條指令時都會對指令所具有的特權級做相應的檢查。
從特權級的調度而言,當應用程式運行在3級特權級上時,可以稱之為運行在客戶態,因為這是最低特權級,是普通的使用者進程運行的特權級,大部分使用者直接面對的程式都是運行在使用者態;反之,當應用程式運行在級特權級上時,就可以稱之為運行在內核態。
在本發明實施例中,如圖2所示,塊設備(blockdevice)驅動可以分為塊設備前端驅動211和塊設備後端驅動201,塊設備前端驅動部署在虛擬機器210的內核態中,塊設備後端驅動201部署在宿主機200的內核態中。
當然,塊設備前端驅動211也可以在虛擬機器210的使用者態中,塊設備後端驅動201也可以部署在宿主機的客戶態中,本發明實施例對此不加以限制。
其中,塊設備是指一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,使用緩衝區來存放暫時的資料,待檢測到指定的條件後,從快取一次性寫入設備或者從設備一次性讀到緩衝區。
塊設備的應用在Linux中是一個完整的子系統,在Linux中,驅動對塊設備的I/O操作,會向塊設備發出一個請求,在驅動中用request結構體描述。對於一些磁片設備而言請求的速度很慢,這時候可以使用佇列的機制把這些I/O請求添加到佇列中,在驅動中用request_queue結構體描述。
在具體實現中,客戶在虛擬機器中的一些寫操作,可以觸發原資料的寫請求,虛擬機器也可以自動觸發原資料的寫請求(request)。
一般而言,每個寫操作在後端可以對應2個以上的寫請求,用於避免單點問題(如寫資料失敗)導致的服務不可用。
在本發明實施例中,劃分不同請求類型的寫請求,對寫請求引入POSIX(可移植作業系統介面)語義,實現了符合POSIX語義的資料一致性要求,並對資料的寫流程進行修改,按照不同的請求類型的寫請求進行不同類型的寫操作。
因此,塊設備前端驅動211可以在原資料的寫請求中,寫入請求類型的標識(即識別寫請求的類型的資訊),如在operation參數中添加請求類型的標識,傳送至宿主機200內核態中的塊設備前端驅動211。
相對而言,即由位於宿主機200內核態中的塊設備後端驅動201接收、由位於虛擬機器210內核態中的塊設備前端驅動211發送的原資料的寫請求。
進一步而言,在Xen中,塊設備前端驅動211可以通過I/O環將寫請求傳送至塊設備後端驅動201,即塊設備後端驅動201可以通過I/O環接收塊設備前端驅動211發送的寫請求。
I/O環工作方式以生產者/消費者為基礎,拓撲模型為環形結構。前端驅動(如塊設備前端驅動211)需要轉發I/O請求時,將請求依次寫入I/O環中,後端驅動(如塊設備後端驅動201)讀取請求並將操作結果寫入I/O環,最後由前端驅動讀取結果。前端驅動是I/O請求的生產者和操作結果的消費者,而後端驅動則是I/O請求的消費者和操作結果的生產者。
步驟102,檢測所述寫請求的請求類型; 在具體實現中,如圖2所示,可以由位於宿主機200內核態中的塊設備後端驅動201從所述寫請求中讀取請求類型標識,如operation參數,以識別寫請求的請求類型。
步驟103,當所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中。
在本發明實施例中,可以設置第一寫請求,該第一寫請求又稱之為普通寫請求,請求類型標識可以是BLKIF_OP_WRITE。
普通寫請求可以由write函數(用於寫檔描述符)、fwrite函數(用於寫資料塊)等操作觸發,通常並非對檔案系統的中繼資料(如索引資料(記錄檔對應在塊設備上的偏移和大小),目錄資料等)進行更新。
需要說明的是,分散式儲存通常要求單台物理設備宕機並不影響資料的一致性。
本發明實施例對於普通寫請求,寫入到第一儲存設備意味著寫操作就已經完成,可以返回寫操作的結果。
如果此時出現宕機,這部分資料將會丟失,但是,由於檔案系統的中繼資料並沒有更新,因此,並不會導致檔案系統的不一致,保證資料的一致性要求能夠實現。
在具體實現中,如圖2所示,可以由位於宿主機200內核態的快取服務對象202將原資料寫入位於宿主機202中的第一儲存設備203中,以及,更新原資料的索引資訊。
在本發明實施例中,第一儲存設備為臨時儲存介質(如固態硬碟、記憶體等),並非持久化儲存介質(如磁片),其可以部署在宿主機中的,但是從架構上來說,也可以部署在虛擬機器中。
整體上而言,第一儲存設備離虛擬機器越近,網路延遲越低,儲存性能就越優,因此,第一儲存設備又稱快速儲存設備。
此外,在索引資訊中,記錄了原資料在第一儲存設備中的偏移、大小及在第二儲存設備中的偏移等資訊,若儲存在第一儲存設備成功時,則可以更新相關的資訊,如第一儲存設備中的偏移、大小等。
本發明實施例劃分不同請求類型的寫請求,按照不同的請求類型的寫請求進行不同類型的寫操作,對於虛擬機器發送的普通寫請求,則由宿主機儲存至第一儲存設備,避免直接持久化至第二儲存設備,大大減少了儲存的I/O路徑,減少的時間和設備資源的消耗,提升了虛擬機器環境下分散式儲存的寫性能。
參照圖3,示出了本發明的一種虛擬機器的資料儲存方法實施例2的步驟流程圖,具體可以包括如下步驟:
步驟301,在宿主機中接收虛擬機器發送的原資料的寫請求;
步驟302,檢測所述寫請求的請求類型;
步驟303,當所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中;
步驟304,判斷所述第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則執行步驟305,若否,則執行步驟306;髒資料,可以指未持久化至第二儲存設備(持久化儲存介質,如磁片)的原資料,在索引資訊中,具有一個髒資料標誌位元對該髒資料進行標識。
本發明實施例考慮到普通寫請求過多的時候可能導致快速快取設備中存在大量髒資料的情況,對快速快取設備中的髒資料的資料量(大小或數量)進行了限制。
若髒資料的資料量超過預設的臨界值,表示存在較多的髒資料,所有超過該臨界值的寫請求將會直接發給第二儲存設備進行儲存,減少在第一儲存設備所在宿主機宕機時導致的資料丟失。
步驟305,將所述原資料發送至第二儲存設備進行儲存;若髒資料的資料量超過預設的臨界值,則表示第一儲存設備中儲存的髒資料的資料量較大,持久化壓力較大,則可以直接發送至第二儲存設備進行儲存。
在具體實現中,如圖2所示,可以由快取服務對象202將原資料,通過Xen提供的Blktap介面205(使用者級別的磁片I/O介面)等方式,發送至位於宿主機200使用者態的儲存客戶端206;由儲存客戶端206通過網路220等方式,發送原資料至位於宿主機200之外的第二儲存設備230進行儲存。
由於分散式檔案系統不論是在資料的儲存容量、可擴展性方面,還是在可靠性、可用性等方面都有比較大的優勢,因此,第二儲存設備多為分散式檔案系統,包括NFS(Network File System)、Coda、AFS(Andrew File System)、Sprite File System,HDFS(Hadoop Distributed File System)、盤古系統等等。
以HDFS為例,HDFS主要是由中繼資料節點Namenode(master)、從中繼資料節點(Secondary namenode)和一系列的資料節點Datanode(worders)構成。
中繼資料節點Namenode負責管理HDFS的命名控制項和中繼資料,它將所有資料夾和檔中繼資料儲存在一個目錄樹中,這些資訊自成在硬碟上保存為命名空間鏡像(namespace)和修改日誌(edit log)檔。其中還保存著一個檔由哪些塊所組成,以這些塊的分佈,但是這些資訊並不直接存在硬碟上,而是系統啟動時從各個節點收集起來的。
資料節點(Datanode)是系統中真正儲存資料地方,客戶端(client)或中繼資料節點(Namenode)可以向資料節點(Datanode)請求讀取或寫入資料,它隔一定的時間就向中繼資料節點(Namenode)彙報一次它儲存的資料資訊。
從中繼資料節點(Secondary namenode)週期性地將中繼資料節點(Namenode)的資料檔案跟修改日誌合 併,以防止日誌檔過大。
當客戶端(client)在HDFS系統中進行寫操作時,HDFS系統會首先將客戶端的操作記錄在修改日誌(edit log)中。
中繼資料節點(Namenode)在記憶體中保存檔的中繼資料資訊,在記錄修改日誌(edit log)之後,修改記憶體中的資料結構,並且在每次寫操作成功之前,HDFS系統都會對修改日誌進行同步。
步驟306,對儲存在所述第一儲存設備的所述原資料標記為髒資料;在具體實現中,可以在原資料的索引資訊中,添加一髒資料標誌位元,以標識該原資料為髒資料。
步驟307,在設定的時間將儲存在所述第一儲存設備的髒資料發送至第二儲存設備進行儲存;在本發明實施例中,可以通過PID(比例-積分-導數)控制演算法等方式控制回寫速率,持續將儲存在第一儲存設備的髒資料持久化至第二儲存設備中。
在具體實現中,如圖2所示,當超過預設的休眠時間,喚醒位於宿主機200內核態的回寫執行緒204,該回寫執行緒204為非同步執行緒。
需要說明的是,該回寫執行緒204也可以部署在宿主機的客戶態,本發明實施例對此不加以限制。
由回寫執行緒204按照索引資訊(如偏移)讀取儲存在第一儲存設備203的髒資料,以及,由回寫執行緒204 將讀取的髒資料,通過Xen提供的Blktap介面205(使用者級別的磁片I/O介面)等方式,發送至位於宿主機200使用者態的儲存客戶端206。
由儲存客戶端206通過網路220,發送髒資料至位於宿主機200之外的第二儲存設備230(如分散式檔案系統)進行儲存。
當儲存成功時,通過當前髒資料的增量、髒資料的資料量以及當前回寫速度等因素計算下一次回寫的休眠時間,並對回寫執行緒204進行休眠(delay),直至到達該休眠時間。
步驟308,當儲存成功時,取消所述髒資料的標記,以識別為原資料。
若髒資料儲存成功,則可以取消該髒資料的標記,例如,在索引資訊中取消該髒資料的髒資料標誌位元,以識別為原資料。
在具體實現中,如圖2所示,當回寫執行緒204接收到儲存客戶端206返回的儲存成功的消息時,取消髒資料的標記,以識別為原資料。
參照圖4,示出了本發明的一種虛擬機器的資料儲存方法實施例3的步驟流程圖,具體可以包括如下步驟:
步驟401,在宿主機中接收虛擬機器發送的原資料的寫請求;
步驟402,檢測所述寫請求的請求類型;
步驟403,當所述請求類型為第二寫請求時,讀取儲 存在所述第一儲存設備的全部髒資料;在本發明實施例中,可以設置第二寫請求,該第二寫請求又稱為刷新快取寫請求,請求類型標識可以是BLKIF_OP_FLUSH_DISKCACHE。
刷新快取寫請求可以由sync(同步寫,沒有寫到物理設備就不會返回)、fsync(負責將一個檔描述符打開的檔寫到物理設備,而且是真正的同步寫,沒有寫完成就不會返回,而且寫的時候將檔本身的一些中繼資料都會更新到物理設備上去)、或者以O_SYNC(該描述符會對普通檔的寫操作產生影響,若設置了該描述符,則對該檔的寫操作會等到資料被寫到磁片上才算結束)打開物理設備進行相關寫操作時等操作觸發,通常非對檔案系統的中繼資料進行更新。
需要說明的是,分散式儲存通常要求單台物理設備宕機並不影響資料的一致性。
對於一個刷新快取寫請求,由於通常都是對中繼資料操作的寫請求,因此,通常要求在該寫請求處理完時之前所有的寫請求都已經完成。
本發明實施例實現了對刷新快取寫請求之前所有寫請求的處理,保證之前所有的資料都已經寫入到第二儲存設備(如分散式檔案系統)才返回,實現了中繼資料更新之後的一致性要求。
在具體實現中,如圖2所示,可以由快取服務對象202喚醒位於宿主機200內核態的回寫執行緒204。
由回寫執行緒204按照索引資訊(如偏移)讀取儲存在第一儲存設備203的全部髒資料。
需要說明的是,在檢測到刷新快取寫請求之後,可以將回寫執行緒的休眠時間直接設置為0返回,這樣在寫完當前的髒資料之後並不會睡眠,而是會繼續回寫後續的髒資料。
步驟404,將讀取的髒資料發送至第二儲存設備進行儲存;在具體實現中,如圖2所示,可以由回寫執行緒204將讀取的髒資料,通過Xen提供的Blktap介面205(使用者級別的磁片I/O介面)等方式,發送至位於宿主機200使用者態的儲存客戶端206;由儲存客戶端206通過網路220,發送髒資料至位於宿主機300之外的第二儲存設備230(如分散式檔案系統)進行儲存;
步驟405,當儲存成功時,取消所述髒資料的標記,以識別為原資料。
若髒資料儲存成功,則可以取消該髒資料的標記,例如,在索引資訊中取消該髒資料的髒資料標誌位元,以識別為原資料。
在具體實現中,如圖2所示,當回寫執行緒204接收到儲存客戶端206返回的儲存成功的消息時,取消髒資料的標記,以識別為原資料。
參照圖5,示出了本發明的一種虛擬機器的資料儲存 方法實施例4的步驟流程圖,具體可以包括如下步驟:
步驟501,在宿主機中接收虛擬機器發送的原資料的寫請求;
步驟502,檢測所述寫請求的請求類型;
步驟503,當所述請求類型為第三寫請求時,將所述原資料儲存至第一儲存設備中;在具體實現中,如圖2所示,可以由位於宿主機200內核態的快取服務對象202將原資料寫入位於宿主機202中的第一儲存設備203中,以及,更新原資料的索引資訊。
步驟504,將所述原資料發送至第二儲存設備進行儲存。
在本發明實施例中,可以設置第三寫請求,該第三寫請求又稱為帶強制訪問單元標誌的寫請求,請求類型標識可以是BLKIF_OP_WRITE_BARRIER。
帶強制訪問單元標誌的寫請求,由虛擬機器的內核添加,用於對特定資料必須落盤(持久化至第二儲存設備)這類需求進行滿足。
在一個示例中,使用者態調用write寫資料時,可以指定是否帶O_DSYNC標誌,如果帶該標誌,那麼意味著該寫請求是帶強制訪問單元標誌的寫請求,否則就是普通寫請求。
此時,保證之前所有資料都已經落盤,那麼可以調用fsync(),系統會有一個刷新快取寫請求產生。
需要說明的是,分散式儲存通常要求單台物理設備宕機並不影響資料的一致性。
本發明實施例對於帶強制訪問單元標誌的寫請求,通過直接將該原資料發送至第二儲存設備(如分散式檔案系統),實現了資料的一致性要求。
在具體實現中,如圖2所示,可以由快取服務對象202將原資料,通過Xen提供的Blktap介面205(使用者級別的磁片I/O介面)等方式,發送至位於宿主機200使用者態的儲存客戶端206;由儲存客戶端206通過網路220等方式,發送原資料至位於宿主機200之外的第二儲存設備230進行儲存。
需要說明的是,對於方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例並不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所涉及的動作並不一定是本發明實施例所必須的。
參照圖6,示出了本發明的一種虛擬機器的資料儲存裝置實施例的結構方塊圖,具體可以包括如下模組:寫請求接收模組601,用於在宿主機中接收虛擬機器發送的原資料的寫請求;請求類型檢測模組602,用於檢測所述寫請求的請求類型; 第一快速儲存模組603,用於在所述請求類型為第一寫請求時,將所述原資料儲存至第一儲存設備中。
在本發明的一個實施例中,該裝置還可以包括如下模組:資料量判斷模組,用於判斷所述第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則調用第一持久化儲存模組,若否,則調用髒資料標記模組;第一持久化儲存模組,用於將所述原資料發送至第二儲存設備進行儲存;髒資料標記模組,用於對儲存在所述第一儲存設備的所述原資料標記為髒資料。
在本發明的一個實施例中,該裝置還可以包括如下模組:第二持久化儲存模組,用於在設定的時間將儲存在所述第一儲存設備的髒資料發送至第二儲存設備進行儲存;第一髒資料取消標記模組,用於在儲存成功時,取消所述髒資料的標記,以識別為原資料。
在本發明的一個實施例中,該裝置還可以包括如下模組:髒資料讀取模組,用於在所述請求類型為第二寫請求時,讀取儲存在所述第一儲存設備的全部髒資料;第三持久化儲存模組,用於將讀取的髒資料發送至第二儲存設備進行儲存;第二髒資料取消標記模組,用於在儲存成功時,取消 所述髒資料的標記,以識別為原資料。
在本發明的一個實施例中,該裝置還可以包括如下模組:第二快速儲存模組,用於在所述請求類型為第三寫請求時,將所述原資料儲存至第一儲存設備中;第四持久化儲存模組,用於將所述原資料發送至第二儲存設備進行儲存。
在本發明的一個實施例中,所述寫請求接收模組601可以包括如下子模組:驅動接收子模組,用於由位於宿主機內核態中的塊設備後端驅動接收、由位於虛擬機器內核態中的塊設備前端驅動發送的原資料的寫請求;在本發明的一個實施例中,所述請求類型檢測模組602可以包括如下子模組:驅動檢測子模組,用於由位於宿主機內核態中的塊設備後端驅動從所述寫請求中讀取請求類型標識,以識別所述寫請求的請求類型;在本發明的一個實施例中,所述第一快速儲存模組603可以包括如下子模組:第一快取服務寫資料子模組,用於由位於宿主機內核態的快取服務對象將所述原資料寫入位於宿主機中的第一儲存設備中;第一索引資訊更新子模組,用於更新所述原資料的索引資訊; 在本發明的一個實施例中,所述第二快速儲存模組可以包括如下子模組:第二快取服務寫資料子模組,用於由位於宿主機內核態的快取服務對象將所述原資料寫入位於宿主機中的第一儲存設備中;第二索引資訊更新子模組,用於更新所述原資料的索引資訊。
在本發明的一個實施例中,所述第一持久化儲存模組可以包括如下子模組:第一儲存客戶端發送子模組,用於由所述快取服務對象將所述原資料發送至位於宿主機使用者態的儲存客戶端;第一儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述原資料至位於宿主機之外的第二儲存設備進行儲存;在本發明的一個實施例中,所述第四持久化儲存模組可以包括如下子模組:第二儲存客戶端發送子模組,用於由所述快取服務對象將所述原資料發送至位於宿主機使用者態的儲存客戶端;第二儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述原資料至位於宿主機之外的第二儲存設備進行儲存。
在本發明的一個實施例中,所述第二持久化儲存模組 可以包括如下子模組:第一回寫執行緒喚醒子模組,用於在超過預設的休眠時間,喚醒位於宿主機內核態的回寫執行緒;部分髒資料讀取子模組,用於由所述回寫執行緒按照所述索引資訊讀取部分儲存在所述第一儲存設備的髒資料;第三儲存客戶端發送子模組,用於由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;第三儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存;休眠時間計算子模組,用於在儲存成功時,計算休眠時間;休眠子模組,用於對所述回寫執行緒進行休眠。
在本發明的一個實施例中,所述髒資料讀取模組可以包括如下子模組:第二回寫執行緒喚醒子模組,用於由所述快取服務對象喚醒位於宿主機內核態的回寫執行緒;全部髒資料讀取子模組,用於由所述回寫執行緒按照所述索引資訊讀取儲存在所述第一儲存設備的全部髒資料;在本發明的一個實施例中,所述第三持久化儲存模組可以包括如下子模組: 第四儲存客戶端發送子模組,用於由所述回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;第四儲存客戶端儲存子模組,用於由所述儲存客戶端發送所述髒資料至位於宿主機之外的第二儲存設備進行儲存。
在本發明的一個實施例中,所述第一髒資料取消標記模組可以包括如下子模組:第一標記取消子模組,用於在所述回寫執行緒接收到所述儲存客戶端返回的儲存成功的消息時,取消所述髒資料的標記,以識別為原資料。
在本發明的一個實施例中,所述第二髒資料取消標記模組可以包括如下子模組:第二標記取消子模組,用於在所述回寫執行緒接收到所述儲存客戶端返回的儲存成功的消息時,取消所述髒資料的標記,以識別為原資料。
對於裝置實施例而言,由於其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本發明實施例的實施例可提供為方法、裝置、或電腦程式產品。因此,本發明實 施例可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明實施例可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存介質(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。
在一個典型的配置中,所述電腦設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和記憶體。記憶體可能包括電腦可讀介質中的非揮發性性記憶體,隨機存取記憶體(RAM)和/或非易失性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是電腦可讀介質的示例。電腦可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存介質的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式設計唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁片儲存或其他磁性儲存設備或任何其他非傳輸介質,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,電腦可讀介質不包括非持續性的電腦可讀媒體(transitory media),如調製的資料信號和載波。
本發明實施例是參照根據本發明實施例的方法、終端設備(系統)、和電腦程式產品的流程圖和/或方塊圖來描述的。應理解可由電腦程式指令實現流程圖和/或方塊圖中的每一流程和/或方塊、以及流程圖和/或方塊圖中的流程和/或方塊的結合。可提供這些電腦程式指令到通用電腦、專用電腦、嵌入式處理機或其他可程式設計資料處理終端設備的處理器以產生一個機器,使得通過電腦或其他可程式設計資料處理終端設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的裝置。
這些電腦程式指令也可儲存在能引導電腦或其他可程式設計資料處理終端設備以特定方式工作的電腦可讀記憶體中,使得儲存在該電腦可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。
這些電腦程式指令也可裝載到電腦或其他可程式設計資料處理終端設備上,使得在電腦或其他可程式設計終端設備上執行一系列操作步驟以產生電腦實現的處理,從而在電腦或其他可程式設計終端設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。
儘管已描述了本發明實施例的較佳實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附申請專利範圍意 欲解釋為包括較佳實施例以及落入本發明實施例範圍的所有變更和修改。
最後,還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,並不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發明所提供的一種虛擬機器的資料儲存方法和一種虛擬機器的資料儲存裝置,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。

Claims (13)

  1. 一種虛擬機器的資料儲存方法,其包括:在宿主機中接收虛擬機器發送的原資料的寫請求;檢測該寫請求的請求類型;當該請求類型為第一寫請求時,將該原資料儲存至第一儲存設備中;其中,該第一儲存設備部署在宿主機或虛擬機器中;所述第一寫請求為普通寫請求。
  2. 根據申請專利範圍第1項所述的方法,其中,還包括:判斷該第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則將該原資料發送至第二儲存設備進行儲存;若否,則對儲存在該第一儲存設備的該原資料標記為髒資料。
  3. 根據申請專利範圍第2項所述的方法,其中,還包括:在設定的時間將儲存在該第一儲存設備的髒資料發送至第二儲存設備進行儲存;當儲存成功時,取消該髒資料的標記,以識別為原資料。
  4. 根據申請專利範圍第1項所述的方法,其中,還包括:當該請求類型為第二寫請求時,讀取儲存在該第一儲存設備的全部髒資料;所述第二寫請求為刷新快取寫請 求;將讀取的髒資料發送至第二儲存設備進行儲存;當儲存成功時,取消該髒資料的標記,以識別為原資料。
  5. 根據申請專利範圍第1項所述的方法,其中,還包括:當該請求類型為第三寫請求時,將該原資料儲存至第一儲存設備中;所述第三寫請求為帶強制訪問單元標誌的寫請求;將該原資料發送至第二儲存設備進行儲存。
  6. 根據申請專利範圍第1項所述的方法,其中,所述在宿主機中接收虛擬機器發送的原資料的寫請求的步驟包括:由位於宿主機內核態中的塊設備後端驅動接收、由位於虛擬機器內核態中的塊設備前端驅動發送的原資料的寫請求;所述檢測該寫請求的請求類型的步驟包括:由位於宿主機內核態中的塊設備後端驅動從該寫請求中讀取請求類型標識,以識別該寫請求的請求類型;所述將該原資料儲存至第一儲存設備中的步驟包括:由位於宿主機內核態的快取服務對象將該原資料寫入位於宿主機中的第一儲存設備中;更新該原資料的索引資訊。
  7. 根據申請專利範圍第3項所述的方法,其中, 所述將該原資料發送至第二儲存設備進行儲存的步驟包括:由該快取服務對象將該原資料發送至位於宿主機使用者態的儲存客戶端;由該儲存客戶端發送該原資料至位於宿主機之外的第二儲存設備進行儲存;該在設定的時間將儲存在該第一儲存設備的髒資料發送至第二儲存設備進行儲存的步驟包括:當超過預設的休眠時間,喚醒位於宿主機內核態的回寫執行緒;由該回寫執行緒按照該索引資訊讀取部分儲存在該第一儲存設備的髒資料;由該回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;由該儲存客戶端發送該髒資料至位於宿主機之外的第二儲存設備進行儲存;當儲存成功時,計算休眠時間;對該回寫執行緒進行休眠。
  8. 根據申請專利範圍第4項所述的方法,其中,所述讀取儲存在該第一儲存設備的全部髒資料的步驟包括:由該快取服務對象喚醒位於宿主機內核態的回寫執行緒;由該回寫執行緒按照該索引資訊讀取儲存在該第一儲 存設備的全部髒資料;該將讀取的髒資料發送至第二儲存設備進行儲存的步驟包括:由該回寫執行緒將讀取的髒資料發送至位於宿主機使用者態的儲存客戶端;由該儲存客戶端發送該髒資料至位於宿主機之外的第二儲存設備進行儲存;該當儲存成功時,取消該髒資料的標記,以識別為原資料的步驟包括:當該回寫執行緒接收到該儲存客戶端返回的儲存成功的消息時,取消該髒資料的標記,以識別為原資料。
  9. 一種虛擬機器的資料儲存裝置,其包括:寫請求接收模組,用於在宿主機中接收虛擬機器發送的原資料的寫請求;請求類型檢測模組,用於檢測該寫請求的請求類型;第一快速儲存模組,用於在該請求類型為第一寫請求時,將該原資料儲存至第一儲存設備中;其中,該第一儲存設備部署在宿主機或虛擬機器中;所述第一寫請求為普通寫請求。
  10. 根據申請專利範圍第9項所述的裝置,其中,還包括:資料量判斷模組,用於判斷該第一儲存設備中髒資料的資料量是否超過預設的臨界值;若是,則調用第一持久化儲存模組,若否,則調用髒資料標記模組; 第一持久化儲存模組,用於將該原資料發送至第二儲存設備進行儲存;髒資料標記模組,用於對儲存在該第一儲存設備的該原資料標記為髒資料。
  11. 根據申請專利範圍第10項所述的裝置,其中,還包括:第二持久化儲存模組,用於在設定的時間將儲存在該第一儲存設備的髒資料發送至第二儲存設備進行儲存;第一髒資料取消標記模組,用於在儲存成功時,取消該髒資料的標記,以識別為原資料。
  12. 根據申請專利範圍第9項所述的裝置,其中,還包括:髒資料讀取模組,用於在該請求類型為第二寫請求時,讀取儲存在該第一儲存設備的全部髒資料;所述第二寫請求為刷新快取寫請求;第三持久化儲存模組,用於將讀取的髒資料發送至第二儲存設備進行儲存;第二髒資料取消標記模組,用於在儲存成功時,取消該髒資料的標記,以識別為原資料。
  13. 根據申請專利範圍第9項所述的裝置,其中,還包括:第二快速儲存模組,用於在該請求類型為第三寫請求時,將該原資料儲存至第一儲存設備中;所述第三寫請求為帶強制訪問單元標誌的寫請求; 第四持久化儲存模組,用於將該原資料發送至第二儲存設備進行儲存。
TW106105608A 2016-03-29 2017-02-20 一種虛擬機器的資料儲存方法和裝置 TWI735542B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610188053.X 2016-03-29
CN201610188053.XA CN107239319B (zh) 2016-03-29 2016-03-29 一种虚拟机的数据存储方法和装置

Publications (2)

Publication Number Publication Date
TW201737054A TW201737054A (zh) 2017-10-16
TWI735542B true TWI735542B (zh) 2021-08-11

Family

ID=59962577

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106105608A TWI735542B (zh) 2016-03-29 2017-02-20 一種虛擬機器的資料儲存方法和裝置

Country Status (3)

Country Link
CN (1) CN107239319B (zh)
TW (1) TWI735542B (zh)
WO (1) WO2017167056A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389857B (zh) * 2018-04-20 2023-04-21 伊姆西Ip控股有限责任公司 数据备份的方法、设备和非瞬态计算机存储介质
CN110851416B (zh) * 2018-08-03 2023-10-27 阿里巴巴集团控股有限公司 数据存储性能分析方法和装置、宿主机确定方法和装置
CN109947584A (zh) * 2019-02-26 2019-06-28 启迪云计算有限公司 一种基于云计算分布式块存储的degrade读写方法
US11860897B2 (en) 2019-06-07 2024-01-02 Samsung Electronics Co., Ltd. Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations
CN110955488A (zh) * 2019-09-10 2020-04-03 中兴通讯股份有限公司 一种持久性内存的虚拟化方法及系统
CN111339046B (zh) * 2020-02-26 2023-09-19 中国工商银行股份有限公司 针对文件的数据写入、读取和删除方法及装置
CN113625955B (zh) * 2021-06-30 2023-12-22 济南浪潮数据技术有限公司 一种分布式存储系统的脏数据处理方法、装置及介质
CN113849238B (zh) * 2021-09-29 2024-02-09 浪潮电子信息产业股份有限公司 数据通信方法、装置、电子设备及可读存储介质
CN114297172B (zh) * 2022-01-04 2022-07-12 北京乐讯科技有限公司 一种基于云原生的分布式文件系统
CN115016740B (zh) * 2022-07-14 2022-11-18 杭州优云科技有限公司 一种数据恢复方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103389884A (zh) * 2013-07-29 2013-11-13 华为技术有限公司 处理输入/输出请求的方法、宿主机、服务器和虚拟机
CN104035887A (zh) * 2014-05-22 2014-09-10 中国科学院计算技术研究所 一种基于精简配置系统的块设备缓存装置及其方法
TW201518931A (zh) * 2013-09-24 2015-05-16 Toshiba Kk 資訊處理裝置及半導體裝置
CN105376269A (zh) * 2014-08-11 2016-03-02 中国电信股份有限公司 虚拟机存储系统及其实现方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
CN102117308B (zh) * 2010-01-06 2012-11-14 卓望数码技术(深圳)有限公司 一种数据处理方法和数据处理系统
US8671238B2 (en) * 2010-07-13 2014-03-11 Vmware, Inc. Robust live migration using shared filesystem
US9703953B2 (en) * 2010-11-29 2017-07-11 Biocatch Ltd. Method, device, and system of differentiating among users based on user classification
CN102541468B (zh) * 2011-12-12 2015-03-04 华中科技大学 虚拟化环境下的脏数据回写系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103389884A (zh) * 2013-07-29 2013-11-13 华为技术有限公司 处理输入/输出请求的方法、宿主机、服务器和虚拟机
TW201518931A (zh) * 2013-09-24 2015-05-16 Toshiba Kk 資訊處理裝置及半導體裝置
CN104035887A (zh) * 2014-05-22 2014-09-10 中国科学院计算技术研究所 一种基于精简配置系统的块设备缓存装置及其方法
CN105376269A (zh) * 2014-08-11 2016-03-02 中国电信股份有限公司 虚拟机存储系统及其实现方法和装置

Also Published As

Publication number Publication date
WO2017167056A1 (zh) 2017-10-05
CN107239319B (zh) 2021-05-28
TW201737054A (zh) 2017-10-16
CN107239319A (zh) 2017-10-10

Similar Documents

Publication Publication Date Title
TWI735542B (zh) 一種虛擬機器的資料儲存方法和裝置
US11249956B2 (en) Scalable distributed storage architecture
US10949245B2 (en) Maintaining high availability during network partitions for virtual machines stored on distributed object-based storage
JP6924820B2 (ja) ワーキングセットおよびスレッドの関連付け
US10198377B2 (en) Virtual machine state replication using DMA write records
US9495259B2 (en) Orchestrating high availability failover for virtual machines stored on distributed object-based storage
US9058195B2 (en) Virtual machines failover
US20110252208A1 (en) Express-full backup of a cluster shared virtual machine
US9069701B2 (en) Virtual machine failover
WO2019061352A1 (zh) 数据加载方法及装置
US9367414B2 (en) Persisting high availability protection state for virtual machines stored on distributed object-based storage
US20170329554A1 (en) File migration to persistent memory
US10140212B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10642783B2 (en) System and method of using in-memory replicated object to support file services wherein file server converts request to block I/O command of file handle, replicating said block I/O command across plural distributed storage module and performing said block I/O command by local storage module
US20160098302A1 (en) Resilient post-copy live migration using eviction to shared storage in a global memory architecture
WO2018094649A1 (zh) 一种虚拟机启动过程中的数据获取方法和云计算系统
US10082978B2 (en) Distributed shared log storage system having an adapter for heterogenous big data workloads
US11074202B1 (en) Efficient management of bus bandwidth for multiple drivers
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US20190258420A1 (en) Managing multi-tiered swap space
CN112748854B (zh) 对快速存储设备的优化访问
US11436112B1 (en) Remote direct memory access (RDMA)-based recovery of dirty data in remote memory