基于快速持久性存儲器的回寫儲存器高速緩存的制作方法
【專利摘要】儲存設(shè)備使用非易失性存儲器設(shè)備用于高速緩存。儲存設(shè)備以這里稱為回寫模式的模式操作。在回寫模式下,儲存設(shè)備響應(yīng)于寫入數(shù)據(jù)的請求,永久性地將數(shù)據(jù)寫入到非易失性存儲器設(shè)備中的高速緩存中,并且向請求者確認(rèn)數(shù)據(jù)被永久性地寫入到儲存設(shè)備中。確認(rèn)是在不一定將請求寫入的數(shù)據(jù)寫入到主儲存器的情況下發(fā)送的。相反,數(shù)據(jù)稍后被寫入到主儲存器。
【專利說明】基于快速持久性存儲器的回寫儲存器高速緩存
[0001]相關(guān)申請的交叉引用;權(quán)益聲明
[0002]本申請主張Bharat Chandra Baddepudi等人于2011年9月30日提交的題為 “Write-Back Storage Cache Based On Fast Persistent Memory” 的臨時專利申請N0.61/542045的優(yōu)先權(quán),其內(nèi)容通過引用合并于此。
[0003]本申請涉及Kiran Badrinarain Goyal等人于2009年12月7日提交的題為“Caching Data Between A Database Server And A Storage System” 的申請N0.12/631985,其內(nèi)容通過引用合并于此。
[0004]本申請涉及Kothanda Umamageswaran等人于2010年I月21日提交的題為“Selectively Reading Data From Cache And Primary Storage” 的申請 N0.12/691146,其內(nèi)容通過引用合并于此。
【技術(shù)領(lǐng)域】
[0005]本發(fā)明涉及數(shù)據(jù)儲存設(shè)備。
【背景技術(shù)】
[0006]在計算機技術(shù)中,數(shù)據(jù)存儲在存儲器(memory)設(shè)備中,數(shù)據(jù)可以從存儲器設(shè)備讀取和寫入到存儲器設(shè)備中。存儲器設(shè)備可以是易失性或非易失性的。易失性存儲器設(shè)備在斷電后不儲存數(shù)據(jù),而非易失性存儲器在斷電后繼續(xù)儲存數(shù)據(jù)。當(dāng)非易失性存儲器設(shè)備又被通電時,可以讀取斷電時儲存在非易失性存儲器設(shè)備上的數(shù)據(jù)。
[0007]易失性存儲器設(shè)備的示例包括易失性隨機存取存儲器(VRAM)。非易失性存儲器設(shè)備的示例包括盤驅(qū)動器設(shè)備、閃存設(shè)備以及其主要用途是提供對一組盤驅(qū)動器或非易失性存儲器設(shè)備的共享訪問的儲存服務(wù)器。
[0008]易失性存儲器設(shè)備提供快得多但是更昂貴的訪問,而非易失性存儲器設(shè)備提供持久性,并且成本更低廉。為了提供大量數(shù)據(jù)的持久性并且平衡儲存成本和快速訪問,數(shù)據(jù)主體主要儲存在非易失性存儲器設(shè)備中,數(shù)據(jù)主體的小部分的臨時副本儲存在易失性存儲器設(shè)備中,在那里所述副本被非??觳⑶矣行实乇辉L問。用于保持儲存在更緩慢形式的儲存器中的數(shù)據(jù)的臨時副本的諸如非易失性存儲器設(shè)備中的存儲器之類的儲存器(storage)此處被稱為高速緩存(cache)。儲存在高速緩存中有其臨時副本的數(shù)據(jù)的較慢形式的儲存器此處相對于高速緩存被稱為主儲存器。
[0009]通常,高速緩存是易失性存儲器設(shè)備,主儲存器是非易失性存儲器設(shè)備。然而,可能不會總是如此。高速緩存和主儲存器可能都是易失性存儲器或可能都是非易失性存儲器。此處描述了有效率地使用用于儲存器設(shè)備中的非易失性主儲存器的非易失性高速緩存的方案。
【專利附圖】
【附圖說明】
[0010]在附圖中:[0011]圖1是描繪根據(jù)本發(fā)明一實施例的使用持久性高速緩存和主儲存器的儲存器設(shè)備的圖。
[0012]圖2是描繪根據(jù)本發(fā)明一實施例的包括持久性高速緩存元數(shù)據(jù)的持久性高速緩存設(shè)備的圖。
[0013]圖3描繪了根據(jù)本發(fā)明一實施例的在回寫操作期間執(zhí)行的操作。
[0014]圖4是可用于實施本發(fā)明的實施例的計算機系統(tǒng)。
【具體實施方式】
[0015]在下面的描述中,為了說明而闡述了許多特定細(xì)節(jié)以提供對本發(fā)明的全面理解。然而顯而易見的是,在沒有這些特定細(xì)節(jié)的情況下也可實施本發(fā)明。在另一些情況下,以框圖形式示出了已知結(jié)構(gòu)和設(shè)備,以避免不必要地模糊本發(fā)明。
[0016]一般概覽
[0017]此處描述了使用非易失性存儲器設(shè)備用于高速緩存的儲存設(shè)備。儲存設(shè)備以這里稱為回寫模式的模式操作。在回寫模式下,儲存設(shè)備通過永久性地將數(shù)據(jù)寫入到非易失性存儲器設(shè)備中的高速緩存中來對寫入數(shù)據(jù)的請求作出響應(yīng),并且向請求者確認(rèn)數(shù)據(jù)被永久性地寫入到儲存設(shè)備中。確認(rèn)被發(fā)送而不一定已經(jīng)將請求寫入的數(shù)據(jù)寫入到主儲存器。相反,數(shù)據(jù)稍后被寫入到主儲存器。
[0018]永久性地將數(shù)據(jù)寫入到非易失性高速緩存以及向請求者確認(rèn)數(shù)據(jù)已經(jīng)被永久性地寫入到儲存設(shè)備中而不一定已經(jīng)將數(shù)據(jù)寫入到主儲存器的操作此處被稱為回寫操作。
[0019]根據(jù)一實施例,儲存設(shè)備也能在寫通模式下寫入。在寫通模式下,儲存設(shè)備通過永久性地將數(shù)據(jù)寫入到主儲存器設(shè)備中,并且然后向請求者確認(rèn)數(shù)據(jù)被永久性地寫入到儲存設(shè)備中,來對寫入數(shù)據(jù)的請求作出響應(yīng)。然后,數(shù)據(jù)可以被寫入到非易失性高速緩存中。
[0020]示范性儲存設(shè)備
[0021]參考圖1,其描繪了包括持久性高速緩存設(shè)備110的儲存設(shè)備101,持久性高速緩存設(shè)備Iio包括持久性高速緩存設(shè)備110-1、110-2以及110-3。持久性高速緩存設(shè)備110中的每個都充當(dāng)用于特定的一組主儲存器設(shè)備(未標(biāo)記)的高速緩存。持久性高速緩存設(shè)備110和相應(yīng)的主儲存器設(shè)備是非易失性存儲器設(shè)備,持久性高速緩存設(shè)備110是比相應(yīng)的主儲存器設(shè)備更快形式的存儲器設(shè)備,但是僅能保持少量數(shù)據(jù)。
[0022]根據(jù)一實施例,持久性高速緩存設(shè)備110是閃存設(shè)備,相應(yīng)的主儲存器設(shè)備是盤驅(qū)動器設(shè)備。然而,這只是在一實施例中可用來實現(xiàn)儲存設(shè)備的存儲器設(shè)備的類型的一個示例。持久性高速緩存設(shè)備可以是連接到作為主儲存器設(shè)備的較大的較低速度的磁盤設(shè)備的較小的較高速度的磁盤驅(qū)動器。持久性高速緩存設(shè)備可以是連接到作為主儲存器設(shè)備的較大的較低速度的閃存設(shè)備的較小的較高速度的閃存設(shè)備。
[0023]如圖1所示,每個持久性高速緩存設(shè)備110都充當(dāng)用于三個主儲存器設(shè)備的高速緩存,但是本發(fā)明不限于持久性高速緩存設(shè)備充當(dāng)其高速緩存的任意數(shù)量的主儲存器設(shè)備,每個持久性高速緩存設(shè)備也不一定要服務(wù)于相等數(shù)量的主儲存器設(shè)備。
[0024]儲存設(shè)備客戶端102是儲存設(shè)備101的客戶端。儲存設(shè)備客戶端的一個示例是數(shù)據(jù)庫服務(wù)器,包括多節(jié)點數(shù)據(jù)庫服務(wù)器,每個節(jié)點都運行數(shù)據(jù)庫服務(wù)器的實例并且具有對儲存設(shè)備101的共享訪問。應(yīng)指出,本發(fā)明不限于數(shù)據(jù)庫服務(wù)器作為儲存設(shè)備客戶端,或任何數(shù)量的儲存設(shè)備客戶端。
[0025]根據(jù)一實施例,儲存設(shè)備101是具有一個或多個CPU和易失性存儲器的計算機系統(tǒng)。CPU根據(jù)軟件的執(zhí)行而管理儲存設(shè)備101的操作。
[0026]儲存設(shè)備101是塊模式設(shè)備。塊模式設(shè)備提供對稱為數(shù)據(jù)塊的單位的數(shù)據(jù)的客戶端訪問。數(shù)據(jù)塊是儲存設(shè)備客戶端可請求從儲存設(shè)備讀取以及向儲存設(shè)備寫入的數(shù)據(jù)的最小單位。
[0027]儲存設(shè)備101中的主儲存器設(shè)備中的數(shù)據(jù)也按數(shù)據(jù)塊來組織。數(shù)據(jù)塊與唯一地標(biāo)識數(shù)據(jù)塊以及數(shù)據(jù)塊在儲存設(shè)備內(nèi)的儲存位置的數(shù)據(jù)塊地址相關(guān)聯(lián)。數(shù)據(jù)塊的“主塊地址”是標(biāo)識數(shù)據(jù)塊在儲存設(shè)備101中的主儲存器設(shè)備內(nèi)的儲存位置的地址。儲存設(shè)備客戶端可以按主塊地址或者甚至按數(shù)據(jù)塊的主塊地址范圍來請求數(shù)據(jù)塊。
[0028]持久性高速緩存設(shè)備110中的儲存器也按數(shù)據(jù)塊來組織。來自主儲存器設(shè)備的數(shù)據(jù)塊的副本儲存在持久性高速緩存設(shè)備110中。儲存在持久性高速緩存設(shè)備110的數(shù)據(jù)塊中的主儲存器設(shè)備中的數(shù)據(jù)塊的副本此處被稱為高速緩存副本或高速緩存數(shù)據(jù)塊。在操作的任何給定時刻,持久性高速緩存設(shè)備110中的高速緩存副本的數(shù)量遠(yuǎn)少于持久性高速緩存設(shè)備110中的數(shù)據(jù)塊的數(shù)量。
[0029]高速緩存副本也具有標(biāo)識持久性高速緩存設(shè)備內(nèi)儲存高速緩存副本的儲存位置的數(shù)據(jù)塊地址(“高速緩存塊地址”)。顯然,數(shù)據(jù)塊的高速緩存副本的高速緩存塊地址不同于數(shù)據(jù)塊的主塊地址。
[0030]為了管理持久性高速緩存設(shè)備110和相應(yīng)的主儲存器設(shè)備之間的數(shù)據(jù)塊的高速緩存,準(zhǔn)確地跟蹤高速緩存副本是哪個數(shù)據(jù)塊的副本十分重要。為了此功能,儲存設(shè)備101儲存并且管理高速緩存元數(shù)據(jù)120。高速緩存元數(shù)據(jù)120將高速緩存副本的高速緩存塊地址映射到主儲存器設(shè)備中的相應(yīng)數(shù)據(jù)塊的主塊地址。
[0031]當(dāng)儲存設(shè)備客戶端請求塊模式儲存設(shè)備寫入數(shù)據(jù)塊時,客戶端接收用于確認(rèn)數(shù)據(jù)塊已經(jīng)被提交(即,被永久性地寫入)的提交確認(rèn)。于是,當(dāng)數(shù)據(jù)塊接下來被客戶端請求時,返回的數(shù)據(jù)塊應(yīng)具有最近為其發(fā)送提交確認(rèn)的版本。
[0032]在回寫模式下,在數(shù)據(jù)塊可被寫入到相應(yīng)的主儲存器設(shè)備之前,儲存設(shè)備101將客戶端請求的數(shù)據(jù)塊寫入到持久性高速緩存設(shè)備并且確認(rèn)數(shù)據(jù)塊的提交。然后,高速緩存副本可以稍后被寫入到主儲存器設(shè)備。
[0033]盡管高速緩存副本可以稍后寫入到主儲存器設(shè)備,但是在一段時間期間高速緩存副本是儲存在相應(yīng)的主儲存器設(shè)備上的數(shù)據(jù)塊版本的不同且稍后的版本。在高速緩存副本被復(fù)制到主儲存器之前已經(jīng)以任何方式被更新的高速緩存副本此處被稱為“臟的”。跟蹤高速緩存副本是臟的是非常重要的,高速緩存元數(shù)據(jù)120用于此。因此,高速緩存元數(shù)據(jù)120不僅將高速緩存副本映射到主儲存器設(shè)備中的數(shù)據(jù)塊,而且還指示高速緩存副本是臟的。在從主儲存器復(fù)制之后尚未被修改的高速緩存副本保持與主儲存器上的版本相同,因此被稱為是干凈的。對于任何特定高速緩存副本,高速緩存元數(shù)據(jù)120包括指示高速緩存副本是干凈的還是臟的的臟標(biāo)記。
[0034]高速緩存元數(shù)據(jù)120的準(zhǔn)確地將高速緩存塊地址映射到主塊地址并且正確地指定臟高速緩存副本的特性此處被稱為高速緩存元數(shù)據(jù)連貫性。由于儲存設(shè)備101可能意外斷電和/或發(fā)生故障,因此有可能臟的高速緩存副本保留在持久性高速緩存設(shè)備110中。臟的高速緩存副本可能是數(shù)據(jù)塊的最近提交版本,能夠準(zhǔn)確地確定和恢復(fù)臟的高速緩存副本從而有效的數(shù)據(jù)塊保持在儲存設(shè)備101內(nèi)并且響應(yīng)于隨后的客戶端對數(shù)據(jù)塊的讀取請求而被返回是重要的。為此,在儲存設(shè)備發(fā)生故障的情況下高速緩存元數(shù)據(jù)連貫性仍能持續(xù)是重要的。
[0035]為了保持高速緩存元數(shù)據(jù)連貫性,與持久性高速緩存設(shè)備的高速緩存數(shù)據(jù)塊相關(guān)的高速緩存元數(shù)據(jù)儲存在持久性高速緩存設(shè)備中。當(dāng)數(shù)據(jù)塊響應(yīng)于來自儲存設(shè)備客戶端的數(shù)據(jù)塊寫入請求而被寫入時,高速緩存元數(shù)據(jù)被更新以維持高速緩存元數(shù)據(jù)連貫性。為了有效率地并且最終地更新高速緩存元數(shù)據(jù)以有效率地處理數(shù)據(jù)塊寫入請求,希望減少保持高速緩存元數(shù)據(jù)連貫性所需的對持久性高速緩存設(shè)備的寫入次數(shù)。此處描述了用于以減少所需寫操作的方式更新持久性高速緩存元數(shù)據(jù)的技術(shù)。
[0036]示范的持久性高速緩存
[0037]圖2是示出儲存高速緩存元數(shù)據(jù)的持久性高速緩存設(shè)備的圖。參考圖2,它示出了持久性高速緩存設(shè)備110-1。持久性高速緩存設(shè)備110-1的一部分儲存高速緩存數(shù)據(jù)塊220,另一部分儲存高速緩存元數(shù)據(jù)210,其也儲存在數(shù)據(jù)塊中。高速緩存元數(shù)據(jù)210將高速緩存數(shù)據(jù)塊220中的高速緩存副本的高速緩存塊地址映射到儲存在主儲存器設(shè)備中的對應(yīng)數(shù)據(jù)塊的主塊地址。對于每個映射的高速緩存數(shù)據(jù)塊,高速緩存元數(shù)據(jù)包括臟標(biāo)記和塊校驗值。塊校驗值是從數(shù)據(jù)塊的內(nèi)容導(dǎo)出的。塊校驗值可以是根據(jù)數(shù)據(jù)塊的內(nèi)容計算出的校驗和值,或者甚至可以僅是來自數(shù)據(jù)塊內(nèi)容的比特數(shù)。儲存在持久性高速緩存設(shè)備上的數(shù)據(jù)塊的持久性高速緩存元數(shù)據(jù)可以駐留在相同的持久性高速緩存設(shè)備上,或者可以駐留在未用于儲存高速緩存副本的不同的持久性高速緩存設(shè)備或非易失性存儲器設(shè)備上。儲存在特定的非易失性存儲器設(shè)備上的持久性高速緩存元數(shù)據(jù)可以對應(yīng)于儲存在多個非易失性存儲器設(shè)備上的高速緩存副本。
[0038]示范性回寫操作
[0039]圖3描繪了在回寫操作期間執(zhí)行的過程,其最小化了對高速緩存元數(shù)據(jù)210的更新。過程中的操作是響應(yīng)于從儲存設(shè)備客戶端接收到盤塊寫入請求而執(zhí)行的。該請求標(biāo)識要寫入的數(shù)據(jù)塊的主塊地址,并且包括要寫入的數(shù)據(jù)塊的內(nèi)容,其在此稱為數(shù)據(jù)塊內(nèi)容。在下面的描述中,所描述的圖3中標(biāo)記了的特定操作在括號中表示。
[0040]參考圖3,針對要寫入的數(shù)據(jù)塊,生成塊校驗值(305)。接下來,判斷數(shù)據(jù)塊的高速緩存副本是否已經(jīng)在持久性高速緩存設(shè)備中(310)。判斷是通過判斷主塊地址是否通過高速緩存元數(shù)據(jù)210被映射到高速緩存塊地址而作出的。
[0041]可能有各種原因使得在持久性高速緩存設(shè)備中已經(jīng)有數(shù)據(jù)塊的高速緩存副本。例如,高速緩存數(shù)據(jù)塊可能響應(yīng)于數(shù)據(jù)塊寫入請求而已經(jīng)寫入到持久性高速緩存設(shè)備,從未復(fù)制到主儲存器和/或從未在持久性高速緩存的高速緩存管理期間被替換。寫通操作可能已經(jīng)將數(shù)據(jù)塊寫入到主儲存器并且然后用數(shù)據(jù)塊填充持久性高速緩存設(shè)備。最終,將高速緩存副本寫入到盤中。例如,通過高速緩存管理策略的執(zhí)行,儲存設(shè)備101可能由于各種原因而將高速緩存副本寫入到主儲存器設(shè)備。當(dāng)高速緩存副本被選擇作為受害者用于替代時,將高速緩存副本寫入到主儲存器中。當(dāng)高速緩存副本已經(jīng)駐留在持久性高速緩存中達(dá)閾值時間長度時,高速緩存副本可以被寫入到持久性儲存器。
[0042]如果數(shù)據(jù)塊的高速緩存副本已經(jīng)在持久性高速緩存設(shè)備中,則用數(shù)據(jù)塊寫入請求中的數(shù)據(jù)塊內(nèi)容來覆寫高速緩存副本(315)。
[0043]接下來,判斷高速緩存塊是否已經(jīng)是臟的(320)。如果塊已經(jīng)是臟的,則過程結(jié)束。跳過對高速緩存元數(shù)據(jù)210的更新的該特征被稱為僅第一次寫入更新(first-write onlyupdating)。否則,更新高速緩存元數(shù)據(jù)以設(shè)置臟標(biāo)記,塊校驗值被設(shè)置為在操作305中計算的值(325)。結(jié)果,高速緩存元數(shù)據(jù)指定高速緩存數(shù)據(jù)塊是它和主儲存器上的版本之間的最新版本。
[0044]如果判斷是數(shù)據(jù)塊的高速緩存副本沒有已經(jīng)駐留在持久性高速緩存設(shè)備中(330),那么根據(jù)受害者選擇標(biāo)準(zhǔn),選擇用于替換的受害者高速緩存副本。根據(jù)一實施例,在回寫模式下,受害者選擇標(biāo)準(zhǔn)要求受害者具有與在操作305中為要寫入的數(shù)據(jù)塊確定的塊校驗值不匹配的塊校驗值。由于稍后將說明的理由,選擇帶有非匹配塊校驗值的受害者。另夕卜,受害者應(yīng)是干凈的高速緩存副本,以避免需要向主儲存器寫入受害者。
[0045]要替換的高速緩存副本被數(shù)據(jù)塊寫入請求中的數(shù)據(jù)塊內(nèi)容覆寫(335)。接下來,更新高速緩存元數(shù)據(jù),以把要寫入的數(shù)據(jù)塊的主塊地址映射到相應(yīng)的高速緩存塊地址,并且設(shè)置臟標(biāo)記以指出高速緩存塊是臟的,塊校驗值被設(shè)置為在操作305計算的值(340)。
[0046]在過程結(jié)束之后,向儲存設(shè)備客戶端發(fā)送提交確認(rèn)以確認(rèn)數(shù)據(jù)塊寫入請求的提交。
[0047]圖3中的某些操作不限于來自客戶端的盤塊寫入請求。例如,響應(yīng)于來自儲存設(shè)備客戶端的針對一個或多個數(shù)據(jù)塊的數(shù)據(jù)塊讀取請求,在確認(rèn)消息中返回數(shù)據(jù)塊,然后將數(shù)據(jù)塊寫入到持久性高速緩存設(shè)備中。為了將數(shù)據(jù)塊寫入到持久性高速緩存設(shè)備中,在操作330中選擇受害者,如先前針對回寫模式所描述的那樣。然后,受害者被覆寫,持久性高速緩存元數(shù)據(jù)被更新,與針對操作335和340描述的類似,除了留下設(shè)置為干凈的臟標(biāo)記之外。
[0048]如何保持連貫性以用于恢復(fù)
[0049]在儲存設(shè)備101發(fā)生故障之后,儲存在其中的數(shù)據(jù)必須被恢復(fù)。恢復(fù)需要準(zhǔn)確地判斷高速緩存塊是臟版本還是有效的干凈版本。這樣的判斷要求高速緩存元數(shù)據(jù)在故障之后是連貫的。由于故障可能在回寫操作正在被執(zhí)行時并且在它完成之前發(fā)生,因此重要的是,如果當(dāng)在此情況下發(fā)生故障時,高速緩存元數(shù)據(jù)是連貫的。當(dāng)正在執(zhí)行操作時發(fā)生這樣的故障時,如下面說明的那樣,圖3描繪的回寫寫入操作以跨越故障保持連貫性的方式來更新高速緩存元數(shù)據(jù)。
[0050]如果在針對需要覆寫選定受害者的數(shù)據(jù)塊執(zhí)行回寫操作時發(fā)生故障的話,則高速緩存副本受害者可能被部分地覆寫,并且高速緩存元數(shù)據(jù)210從未更新。留下高速緩存元數(shù)據(jù)210將受害者的高速緩存塊地址映射到受害者的對應(yīng)主塊地址,并且指定被部分覆寫的高速緩存副本是干凈的。然而,部分覆寫的受害者高速緩存塊的塊校驗值將不匹配儲存在高速緩存元數(shù)據(jù)中的受害者的塊校驗值。
[0051]在恢復(fù)期間,錯誤地指定高速緩存副本是干凈的的臟標(biāo)記可以被檢測到。對于具有指定聞速緩存副本是干凈的的臟標(biāo)記的聞速緩存副本,聞速緩存兀數(shù)據(jù)210中為該聞速緩存副本指定的塊校驗值通過將該塊校驗值與從高速緩存副本的內(nèi)容計算的塊校驗值進(jìn)行比較而得到驗證。如果塊校驗值不匹配,那么臟標(biāo)記錯誤地指定高速緩存副本是干凈的。
[0052]如果相反,故障在完全覆寫受害者高速緩存副本之后但是在更新高速緩存元數(shù)據(jù)210之前發(fā)生,那么仍留下高速緩存元數(shù)據(jù)210將受害者的高速緩存塊地址映射到受害者的對應(yīng)主塊地址,并且指定部分覆寫的高速緩存副本是干凈的。回憶一下,被選擇用于替換的受害者具有非匹配的塊校驗值。因此,被完全覆寫的高速緩存數(shù)據(jù)塊的塊校驗值將不匹配儲存在高速緩存元數(shù)據(jù)中的受害者的塊校驗值。
[0053]如果在對已經(jīng)在持久性高速緩存設(shè)備中具有高速緩存副本的數(shù)據(jù)塊執(zhí)行回寫操作時發(fā)生故障,則高速緩存副本的舊版本可能被部分或完全覆寫。然而,高速緩存元數(shù)據(jù)210已經(jīng)指定高速緩存副本是臟的,并且正確地將高速緩存副本的高速緩存塊地址映射到對應(yīng)的主塊地址。事實上,高速緩存元數(shù)據(jù)無論如何也不會已經(jīng)被更新。
[0054]在恢復(fù)期間,檢查持久性高速緩存元數(shù)據(jù)以確定哪些高速緩存數(shù)據(jù)塊要作為高速緩存副本保留在持久性高速緩存中,哪些是無效的且不會作為高速緩存副本保留。如果持久性高速緩存元數(shù)據(jù)指定數(shù)據(jù)塊是臟的,那么數(shù)據(jù)塊作為高速緩存副本保留。如果持久性高速緩存元數(shù)據(jù)指定數(shù)據(jù)塊是干凈的,那么比較持久性高速緩存元數(shù)據(jù)中指定的相應(yīng)的塊校驗值和從數(shù)據(jù)塊的內(nèi)容計算的塊校驗值。如果塊校驗值不匹配,那么數(shù)據(jù)塊不作為高速緩存副本被保留。根據(jù)一實施例,為了加快恢復(fù),在恢復(fù)期間不執(zhí)行在高速緩存元數(shù)據(jù)210中為干凈數(shù)據(jù)塊指定的塊校驗值的驗證,而是替代地當(dāng)這樣的數(shù)據(jù)塊被儲存設(shè)備客戶端請求時執(zhí)行。這避免了在恢復(fù)期間讀取許多高速緩存副本。
[0055]優(yōu)化
[0056]圖3描繪的用于執(zhí)行寫入操作的過程以多種方式優(yōu)化對高速緩存元數(shù)據(jù)210的更新。在回寫操作期間,對持久性高速緩存設(shè)備110至多作出一次寫入以更新高速緩存元數(shù)據(jù)。此外,對于針對已經(jīng)臟的高速緩存副本的回寫操作,僅第一次更新(first-time onlyupdate)特征消除了向持久性高速緩存設(shè)備的進(jìn)一步寫入。
[0057]當(dāng)儲存設(shè)備101正以回寫模式操作時,不需要所有盤塊寫入請求執(zhí)行為回寫操作。相反,只有某些類別的盤塊寫入請求需要作為回寫操作來執(zhí)行。例如,儲存設(shè)備101可以儲存數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)。數(shù)據(jù)塊寫入請求可以包括針對用戶數(shù)據(jù)(例如,儲存在表中的數(shù)據(jù))的數(shù)據(jù)塊寫入請求和針對日志文件的數(shù)據(jù)塊寫入請求。針對用戶數(shù)據(jù)的數(shù)據(jù)塊寫入請求可以在回寫模式下執(zhí)行,而針對日志文件的數(shù)據(jù)塊寫入請求在不向持久性高速緩存設(shè)備110進(jìn)行寫入的情況下被處理。此方案騰出主儲存器設(shè)備用于寫入日志文件。
[0058]如上所述,高速緩存元數(shù)據(jù)210儲存在數(shù)據(jù)塊中。對于高速緩存副本的回寫可能需要對儲存在持久性高速緩存設(shè)備中的同一數(shù)據(jù)塊中的高速緩存元數(shù)據(jù)進(jìn)行更新。當(dāng)判斷對于高速緩存副本的回寫操作需要對同一高速緩存元數(shù)據(jù)數(shù)據(jù)塊進(jìn)行更新時,高速緩存塊可以被覆寫,并且更新被批處理,從而可以使更新作為對同一數(shù)據(jù)塊的一次更新。根據(jù)一實施例,為了向持久性高速緩存設(shè)備寫入多個塊,受害者選擇標(biāo)準(zhǔn)可要求受害者的持久性高速緩存元數(shù)據(jù)在同一個數(shù)據(jù)塊中。
[0059]回寫模式具有在持久性高速緩存設(shè)備中而非在主儲存器設(shè)備中吸收寫入的優(yōu)點。然而,持久性高速緩存設(shè)備可能不如主儲存器設(shè)備那樣可靠。例如,閃存設(shè)備可能比盤驅(qū)動器設(shè)備更易遭到不可恢復(fù)的故障。數(shù)據(jù)塊的臟的和最新的版本可能不是可恢復(fù)的??赡鼙仨殘?zhí)行其他更費時的恢復(fù)模式。
[0060]根據(jù)一實施例,儲存設(shè)備101能夠以回寫模式或?qū)懲J讲僮?,?dāng)在某一種模式下有利時,自動地在回寫和寫通模式之間轉(zhuǎn)變。只有當(dāng)寫入操作的級別(“寫入操作負(fù)載”)在某一閾值水平以上的情況下,處于回寫模式可以是有利的。例如,當(dāng)寫入操作負(fù)載低于某一閾值時,由持久性高速緩存設(shè)備吸收寫入操作所提供的減輕可能是極小的,使儲存設(shè)備101面對不可恢復(fù)的故障的風(fēng)險,好處極少或沒有。然而,當(dāng)寫入操作負(fù)載超出某一閾值時,可以實現(xiàn)更多的回寫模式的好處。儲存設(shè)備101可以在寫通模式下監(jiān)測寫入操作負(fù)載。如果判斷當(dāng)在寫通模式下負(fù)載水平已經(jīng)達(dá)到某一閾值,則儲存設(shè)備101轉(zhuǎn)變到回寫模式。如果判斷當(dāng)在回寫模式下負(fù)載水平低于某一閾值,則儲存設(shè)備101轉(zhuǎn)變到寫通模式。
[0061]為了從回寫模式轉(zhuǎn)變到寫通模式,應(yīng)將臟塊寫入到主儲存器設(shè)備以“清潔”持久性高速緩存設(shè)備。在寫通模式下,持久性高速緩存設(shè)備中的高速緩存副本應(yīng)該是干凈的,因為所有寫入都首先被提交到主儲存器,然后再被傳播到持久性高速緩存設(shè)備。
[0062]主儲存器設(shè)備對于數(shù)據(jù)塊寫入操作可能不會體驗到等效的寫入操作負(fù)載。在這樣的情況下,可以將持久性高速緩存設(shè)備的較大部分分配給體驗到較重負(fù)載的主儲存器設(shè)備。可以監(jiān)測每一個主儲存器設(shè)備上的負(fù)載,以自動地在主儲存器設(shè)備之間變換持久性高速緩存設(shè)備的分配。
[0063]硬件概覽
[0064]根據(jù)一實施例,此處所描述的技術(shù)通過一個或多個專用計算設(shè)備來實現(xiàn)。專用計算設(shè)備可以被硬連線以執(zhí)行所述技術(shù),或者可以包括被永久地編程為執(zhí)行所述技術(shù)的數(shù)字電子設(shè)備,諸如一個或多個專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA),或可以包括被編程為根據(jù)固件、存儲器、其他存儲器或組合中的程序指令來執(zhí)行技術(shù)的一個或多個通用硬件處理器。這樣的專用計算設(shè)備也可以利用自定義編程來組合自定義硬連線邏輯器、ASIC或FPGA來完成所述技術(shù)。專用計算設(shè)備可以是臺式計算機系統(tǒng)、便攜式計算機系統(tǒng)、手持式設(shè)備、網(wǎng)絡(luò)設(shè)備或包括硬連線和/或程序邏輯器以實現(xiàn)所述技術(shù)的任何其他設(shè)備。
[0065]例如,圖4是示出了在其上可以實現(xiàn)本發(fā)明的實施例的計算機系統(tǒng)400的框圖。計算機系統(tǒng)400包括用于傳遞信息的總線402或其他通信機制,以及與總線402連接以用于處理信息的硬件處理器404。硬件處理器404可以是例如通用微處理器。
[0066]計算機系統(tǒng)400還包括耦合到總線402的主存儲器406,諸如隨機存取存儲器(RAM)或其他動態(tài)儲存設(shè)備,用于儲存信息和待由處理器404執(zhí)行的指令。主存儲器406還可以用于在待由處理器404執(zhí)行的指令的執(zhí)行過程中存儲臨時變量或其他中間信息。這樣的指令,當(dāng)存儲在可以被處理器404訪問的非暫時性存儲介質(zhì)中時,使計算機系統(tǒng)400稱為自定義為執(zhí)行在指令中指定的操作的專用計算機。
[0067]計算機系統(tǒng)400還包括耦合到總線402的只讀存儲器(ROM) 408或其他靜態(tài)儲存設(shè)備,以用于為處理器404存儲靜態(tài)信息和指令。提供了儲存設(shè)備410,諸如磁盤或光盤,其耦合到總線402以用于儲存信息和指令。
[0068]計算機系統(tǒng)400可以通過總線402連接到顯示器412,如陰極射線管(CRT),用于向計算機用戶顯示信息。包括字符和其他鍵的輸入設(shè)備414耦合到總線402,以便向處理器404傳遞信息和命令選擇。另一種用戶輸入設(shè)備是光標(biāo)控制裝置416,諸如鼠標(biāo)、軌跡球或光標(biāo)方向鍵,用于向處理器404傳遞方向信息和命令選擇,并且用于控制顯不器412上的光標(biāo)移動。此輸入設(shè)備通常具有沿兩個軸,即第一軸(例如X)和第二軸(例如y)的兩個自由度,其允許設(shè)備指定平面中的位置。
[0069]計算機系統(tǒng)400可以使用自定義的硬連線邏輯器、一個或多個ASIC或FPGA、固件和/或與計算機系統(tǒng)相結(jié)合導(dǎo)致或編程計算機系統(tǒng)400為專用計算機的程序邏輯器,來實現(xiàn)此處所描述的技術(shù)。根據(jù)一實施例,響應(yīng)于處理器404執(zhí)行主存儲器406中包含的一個或多個指令的一個或多個序列,由計算機系統(tǒng)400執(zhí)行此處的技術(shù)??梢詮牧硪粌Υ娼橘|(zhì)諸如儲存設(shè)備410將這樣的指令讀取到主存儲器406中。執(zhí)行主存儲器406中包含的指令序列會使處理器404執(zhí)行此處所描述的處理步驟。在替選實施例中,可以使用硬連線的電路系統(tǒng)來代替軟件指令或與軟件指令相結(jié)合。
[0070]如此處所使用的術(shù)語“儲存介質(zhì)”是指儲存數(shù)據(jù)和/或?qū)е聶C器以特定方式來操作的指令的任何非暫時性介質(zhì)。這樣的儲存介質(zhì)可以包括非易失性介質(zhì)和/或易失性介質(zhì)。非易失性介質(zhì)包括例如光盤或磁盤,諸如儲存設(shè)備410。易失性介質(zhì)包括動態(tài)存儲器,如主存儲器406。儲存介質(zhì)的常見形式包括例如軟盤、硬盤、固態(tài)驅(qū)動器、磁帶或任何其他磁數(shù)據(jù)儲存介質(zhì)、CD-ROM或任何其他光數(shù)據(jù)儲存介質(zhì)、具有孔圖案的任何物理介質(zhì)、RAM、PROM以及EPROM、FLASH-EPROM、NVRAM、任何其他存儲器芯片或盒。
[0071]儲存介質(zhì)不同于傳輸介質(zhì),但是可以和傳輸介質(zhì)一起使用。傳輸介質(zhì)參與儲存介質(zhì)之間的信息傳輸。例如、傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括構(gòu)成總線402的線路。傳輸介質(zhì)還可以呈現(xiàn)為聲波或光波的形式,如在無線電波和紅外數(shù)據(jù)通信的過程中生成的那些。
[0072]各種形式的介質(zhì)可以涉及向處理器404傳送一個或多個指令的一個或多個序列以供其執(zhí)行。例如,指令最初可以位于遠(yuǎn)程計算機的磁盤或固態(tài)驅(qū)動器上。遠(yuǎn)程計算機可以將指令加載到其動態(tài)存儲器中,并且使用調(diào)制解調(diào)器通過電話線路發(fā)送指令。計算機系統(tǒng)400本地的調(diào)制解調(diào)器可以通過電話線接收數(shù)據(jù),并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換為紅外信號。紅外檢測器可以接收紅外信號中攜帶的數(shù)據(jù),合適的電路可以將數(shù)據(jù)置于總線402上??偩€402向主存儲器406傳送數(shù)據(jù),處理器404從主存儲器406中檢索指令并執(zhí)行這些指令。在由處理器404執(zhí)行之前或之后,由主存儲器406接收到的指令可以可選地存儲在儲存設(shè)備410中。
[0073]計算機系統(tǒng)400還包括耦合到總線402的通信接口 418。通信接口 418提供連接到網(wǎng)絡(luò)鏈路420的雙向數(shù)據(jù)通信,而網(wǎng)絡(luò)鏈路又連接到局域網(wǎng)422。例如,通信接口 418可以是用于提供到對應(yīng)的電話線路類型的數(shù)據(jù)通信連接的綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器或調(diào)制解調(diào)器。作為另一個示例,通信接口 418可以是提供到兼容的LAN的數(shù)據(jù)通信連接的局域網(wǎng)(LAN)卡。還可以實現(xiàn)無線鏈路。在任何這樣的實現(xiàn)中,通信接口 418發(fā)送和接收攜帶了代表各種信息的數(shù)字?jǐn)?shù)據(jù)流的電的、電磁的或光的信號。
[0074]網(wǎng)絡(luò)鏈路420通常通過一個或多個網(wǎng)絡(luò)提供到其他數(shù)據(jù)設(shè)備的數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路420可以通過局域網(wǎng)422提供到主機計算機424或到由因特網(wǎng)服務(wù)提供商(ISP) 426運營的數(shù)據(jù)設(shè)備的連接。ISP426又通過世界范圍的現(xiàn)在通常被稱為“因特網(wǎng)”428的數(shù)據(jù)包數(shù)據(jù)通信網(wǎng)絡(luò),提供數(shù)據(jù)通信業(yè)務(wù)。局域網(wǎng)422和因特網(wǎng)428兩者都使用攜帶了數(shù)字?jǐn)?shù)據(jù)流的電的、電磁的或光的信號。向計算機系統(tǒng)400以及從計算機系統(tǒng)400傳送數(shù)字?jǐn)?shù)據(jù)的經(jīng)過各種網(wǎng)絡(luò)的信號以及網(wǎng)絡(luò)鏈路420上的信號,經(jīng)過通信接口 418的信號,是傳輸介質(zhì)的示例形式。
[0075]計算機系統(tǒng)400可以通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路420和通信接口 418,發(fā)送消息和接收數(shù)據(jù),包括程序代碼。在因特網(wǎng)的情況下,服務(wù)器430可以通過因特網(wǎng)428、ISP426、局域網(wǎng)422和通信接口 418為應(yīng)用程序傳輸被請求的代碼。
[0076]接收到的代碼可以在接收時由處理器404執(zhí)行,和/或存儲在儲存設(shè)備410或其他非易失性儲存器中,供以后執(zhí)行。
[0077]在前述的說明書中,參考可能在各實現(xiàn)之間不同的很多具體細(xì)節(jié)描述了本發(fā)明的各實施例。相應(yīng)地,說明書和附圖應(yīng)被視為說明性的,而不是限制性的。本發(fā)明的范圍以及 申請人:想要作為本發(fā)明的范圍的內(nèi)容的唯一的并且排它性的指示是本申請以特定形式發(fā)布的權(quán)利要求書(包括任何隨后校正)的書面和等價范圍。
【權(quán)利要求】
1.一種方法,包括以下步驟: 儲存設(shè)備從儲存設(shè)備客戶端接收將數(shù)據(jù)塊寫入到所述儲存設(shè)備的數(shù)據(jù)塊寫入請求; 其中,所述儲存設(shè)備包括一個或多個主儲存器設(shè)備以及一個或多個持久性高速緩存設(shè)備; 向所述一個或多個持久性高速緩存設(shè)備中的持久性高速緩存設(shè)備儲存所述數(shù)據(jù)塊,作為儲存在所述一個或多個主儲存器設(shè)備中的數(shù)據(jù)塊版本的高速緩存副本; 響應(yīng)于將所述數(shù)據(jù)塊儲存到所述持久性高速緩存設(shè)備,向所述儲存設(shè)備客戶端發(fā)送確認(rèn)以確認(rèn)所述數(shù)據(jù)塊的寫入的提交;以及 在發(fā)送所述確認(rèn)之后,所述儲存設(shè)備將所述數(shù)據(jù)塊儲存到所述一個或多個主儲存器設(shè)備。
2.如權(quán)利要求1所述的方法,所述步驟還包括: 在儲存所述數(shù)據(jù)塊作為高速緩存副本之后并且在發(fā)送所述確認(rèn)之前,更新儲存在所述一個或多個持久性高速緩存設(shè)備中的持久性高速緩存元數(shù)據(jù),從而: 將所述數(shù)據(jù)塊的高速緩存塊地址映射到所述數(shù)據(jù)塊的主塊地址; 與所述聞速緩存副本相關(guān)聯(lián)地儲存指定所述聞速緩存副本是臟的的臟標(biāo)記; 與所述高速緩存副本相關(guān)聯(lián)地儲存從所述高速緩存副本的內(nèi)容計算的塊校驗值。
3.如權(quán)利要求2所述的方法,所述步驟還包括: 在發(fā)送所述確認(rèn)之后并且在向所述一個或多個主儲存器設(shè)備儲存所述數(shù)據(jù)塊之前,所述儲存設(shè)備從儲存設(shè)備客戶端接收將所述數(shù)據(jù)塊寫入到所述儲存設(shè)備的另一數(shù)據(jù)塊寫入請求,所述請求指定所述數(shù)據(jù)塊的數(shù)據(jù)塊內(nèi)容; 用所述數(shù)據(jù)塊內(nèi)容覆寫所述高速緩存副本; 響應(yīng)于覆寫所述高速緩存副本,向所述儲存設(shè)備客戶端發(fā)送另一確認(rèn)以確認(rèn)所述數(shù)據(jù)塊的提交;以及 其中,發(fā)送所述另一確認(rèn)是在不更新所述持久性高速緩存元數(shù)據(jù)以反映所述高速緩存副本的覆寫的情況下執(zhí)行的。
4.如權(quán)利要求1所述的方法,其中,所述一個或多個持久性高速緩存設(shè)備是閃存設(shè)備,所述一個或多個主儲存器設(shè)備是盤驅(qū)動器設(shè)備。
5.如權(quán)利要求1所述的方法,所述步驟還包括: 當(dāng)所述儲存設(shè)備以回寫模式操作時,監(jiān)測所述一個或多個主儲存器設(shè)備的寫操作負(fù)載;以及 基于所述寫操作負(fù)載,確定要從回寫模式轉(zhuǎn)變到寫通模式。
6.如權(quán)利要求1所述的方法,所述步驟還包括: 所述儲存設(shè)備從儲存設(shè)備客戶端接收將相應(yīng)的數(shù)據(jù)塊寫入到所述儲存設(shè)備的多個數(shù)據(jù)塊寫入請求,所述多個塊寫入請求中的各個特定的數(shù)據(jù)塊寫入請求請求寫入不同的數(shù)據(jù)塊; 針對所述多個塊寫入請求中的各個特定的數(shù)據(jù)塊寫入請求,向所述一個或多個持久性高速緩存設(shè)備中的所述持久性高速緩存設(shè)備儲存相應(yīng)的數(shù)據(jù)塊,作為儲存在所述一個或多個主儲存器設(shè)備中的相應(yīng)的數(shù)據(jù)塊版本的高速緩存副本; 對儲存持久性高速緩存元數(shù)據(jù)的數(shù)據(jù)塊執(zhí)行一次寫入,以更新所述持久性高速緩存元數(shù)據(jù)從而反映針對所述多個數(shù)據(jù)塊寫入請求中的全部請求的相應(yīng)的數(shù)據(jù)塊寫入; 僅在執(zhí)行對儲存所述持久性高速緩存元數(shù)據(jù)的數(shù)據(jù)塊的所述一次寫入之后,針對所述多個塊寫入請求中的每個特定的數(shù)據(jù)塊寫入請求,向相應(yīng)的儲存設(shè)備客戶端發(fā)送確認(rèn)以確認(rèn)相應(yīng)數(shù)據(jù)塊的提交。
7.如權(quán)利要求1所述的方法,還包括以下步驟: 所述儲存設(shè)備從儲存設(shè)備客戶端接收讀取儲存在所述一個或多個主儲存器設(shè)備中的另一數(shù)據(jù)塊的數(shù)據(jù)塊請求; 向所述一個或多個持久性高速緩存設(shè)備中的持久性高速緩存設(shè)備儲存所述另一數(shù)據(jù)塊,作為所述另一數(shù)據(jù)塊的高速緩存副本;以及 更新儲存在所述一個或多個持久性高速緩存設(shè)備中的持久性高速緩存元數(shù)據(jù),從而: 將所述數(shù)據(jù)塊的高速緩存塊地址映射到所述數(shù)據(jù)塊的主塊地址;以及 與所述高速緩存副本相關(guān)聯(lián)地儲存從所述高速緩存副本的內(nèi)容計算的塊校驗值。
8.一種方法,包括以下步驟: 儲存設(shè)備從儲存設(shè)備客戶端接收將數(shù)據(jù)塊寫入到所述儲存設(shè)備的數(shù)據(jù)塊寫入請求; 其中,所述儲存設(shè)備包括一個或多個主儲存器設(shè)備以及一個或多個持久性高速緩存設(shè)備; 選擇儲存在所述一個或多個持久性高速緩存設(shè)備中的要用所述數(shù)據(jù)塊替換的受害者聞速緩存副本; 其中,所述持久性高速緩存元數(shù)據(jù): 將所述受害者的高速緩存塊地址映射到所述受害者是其高速緩存副本的數(shù)據(jù)塊的主塊地址; 包含指定所述受害者是干凈的的臟標(biāo)記; 將塊校驗值與所述受害者相關(guān)聯(lián); 用所述數(shù)據(jù)塊的內(nèi)容覆寫所述持久性高速緩存設(shè)備中的所述受害者; 在更新所述持久性高速緩存元數(shù)據(jù)以反映所述受害者的覆寫之前,遭遇儲存設(shè)備故障;以及 所述儲存設(shè)備執(zhí)行恢復(fù),其中,執(zhí)行恢復(fù)包括: 基于代替所述受害者儲存在所述持久性儲存設(shè)備中的所述數(shù)據(jù)塊的內(nèi)容,生成塊校驗值, 在(1)基于代替所述受害者儲存的所述數(shù)據(jù)塊的內(nèi)容生成的所述塊校驗值和(2)通過所述持久性高速緩存元數(shù)據(jù)與所述受害者相關(guān)聯(lián)的所述塊校驗值之間進(jìn)行比較,以及基于所述比較,檢測所述持久性高速緩存元數(shù)據(jù)包含錯誤的臟標(biāo)記,所述錯誤的臟標(biāo)記指定代替所述受害者儲存的所述數(shù)據(jù)塊是干凈的。
9.一種方法,包括以下步驟: 儲存設(shè)備從儲存設(shè)備客戶端接收將數(shù)據(jù)塊寫入到所述儲存設(shè)備的數(shù)據(jù)塊寫入請求; 其中,所述儲存設(shè)備包括一個或多個主儲存器設(shè)備以及一個或多個持久性高速緩存設(shè)備; 判斷所述數(shù)據(jù)塊的高速緩存副本儲存在所述一個或多個持久性高速緩存設(shè)備中的持久性高速緩存設(shè)備中;其中,所述持久性高速緩存元數(shù)據(jù): 將所述高速緩存副本的高速緩存塊地址映射到所述高速緩存副本是其副本的數(shù)據(jù)塊的主塊地址; 包含指定所述高速緩存副本是臟的的臟標(biāo)記;以及 將塊校驗值與受害者相關(guān)聯(lián); 用所述數(shù)據(jù)塊請求中指定的所述數(shù)據(jù)塊的內(nèi)容覆寫所述持久性高速緩存設(shè)備中的所述聞速緩存副本; 向所述儲存設(shè)備客戶端發(fā)送確認(rèn)以確認(rèn)所述數(shù)據(jù)塊的寫入的提交;以及所述儲存設(shè)備執(zhí)行恢復(fù),其中執(zhí)行恢復(fù)包括基于所述臟標(biāo)記,判斷所述高速緩存副本的覆寫版本是臟的。
【文檔編號】G06F12/08GK103917963SQ201280055057
【公開日】2014年7月9日 申請日期:2012年9月28日 優(yōu)先權(quán)日:2011年9月30日
【發(fā)明者】B·C·巴德樸迪, J·R·洛伊莎, 胡維民, K·尤瑪瑪格斯瓦蘭, A·特蘇科曼, B·厄利克曼, J·W·李, 是佳, K·B·戈亞爾, S·阿亞 申請人:甲骨文國際公司