[相關(guān)申請]
本申請享有以日本專利申請2016-31993號(申請日:2016年2月23日)為基礎(chǔ)申請的優(yōu)先權(quán)。本申請通過參照該基礎(chǔ)申請而包含基礎(chǔ)申請的全部內(nèi)容。
本實施方式概括來講涉及一種存儲裝置及存儲系統(tǒng)。
背景技術(shù):
近年來,已知一種將鍵(key)及與該鍵相對應(yīng)的值(value)存儲在存儲媒體中的存儲裝置及包含該存儲裝置的存儲系統(tǒng)。
技術(shù)實現(xiàn)要素:
本實施方式提供一種能夠使讀取高速緩存處理效率化的存儲裝置及存儲系統(tǒng)。
實施方式的存儲裝置包括:存儲媒體;控制器,以向所述存儲媒體寫入與鍵對應(yīng)的值并讀取與已寫入到所述存儲媒體的鍵對應(yīng)的值的方式進行控制;第1存儲器,存儲由所述控制器從所述存儲媒體讀取的值;及第1信息,是構(gòu)成所述鍵的構(gòu)成信息,且表示構(gòu)成所述值的單位的數(shù)量;且所述控制器在從所述存儲媒體讀取所述值時執(zhí)行第1判定,該第1判定是對所述第1信息所表示的構(gòu)成所述值的單位的數(shù)量與所讀取的構(gòu)成所述值的單位的數(shù)量是否一致進行判定;在滿足所述第1判定的判定條件的情況下,使讀取的所述值作為高速緩存數(shù)據(jù)而存儲在所述第1存儲器中,在不滿足所述第1判定的判定條件的情況下,不使讀取的所述值作為高速緩存數(shù)據(jù)存儲在所述第1存儲器中,而反復(fù)實施所述第1判定直到將讀取請求所涉及的值讀取為止。
附圖說明
圖1是表示第1實施方式的存儲系統(tǒng)的框圖。
圖2是用來說明存儲在存儲媒體中的值及鍵的圖。
圖3是表示圖1中的管理表t1的圖。
圖4是表示圖1中的鍵管理信息的一例的圖。
圖5是表示第1實施方式的存儲系統(tǒng)的讀取(讀取高速緩存)處理的流程圖。
圖6是用來說明第1實施方式的存儲系統(tǒng)的讀取(讀取高速緩存)處理的圖。
圖7是表示讀取處理后的緩沖存儲器的存儲空間的圖。
圖8是表示讀取高速緩存處理后的緩沖存儲器的存儲空間的圖。
圖9是用來說明比較例的存儲系統(tǒng)的讀取高速緩存處理的概略圖。
圖10是表示變化例1的存儲系統(tǒng)的讀取(讀取高速緩存)處理的流程圖。
圖11是用來說明變化例1的存儲系統(tǒng)的讀取(讀取高速緩存)處理的圖。
圖12是表示讀取高速緩存處理1及讀取處理后的緩沖存儲器的存儲空間的圖。
圖13是表示讀取高速緩存處理2之后的緩沖存儲器的存儲空間的圖。
圖14是表示第2實施方式的存儲系統(tǒng)的框圖。
圖15是表示第3實施方式的存儲系統(tǒng)的框圖。
圖16是表示第3實施方式的存儲系統(tǒng)的put(寫入)動作的框圖。
圖17是表示第3實施方式的存儲系統(tǒng)的get(讀取)動作的框圖。
具體實施方式
以下,參照附圖對發(fā)明的實施方式進行說明。在該說明中,遍及全部附圖,對共通的部分標(biāo)注共通的參照符號。
(第1實施方式)
[1.構(gòu)成]
1-1.存儲系統(tǒng)
使用圖1對第1實施方式的存儲系統(tǒng)1a進行說明。存儲系統(tǒng)1a包含作為存儲媒體的磁盤10,且是以外部的存儲裝置訪問用戶端(以下,稱為“用戶端”)300能夠使用api(applicationprogramminginterface,應(yīng)用編程接口)230經(jīng)由ip(internetprotocol,互聯(lián)網(wǎng)協(xié)議)等網(wǎng)絡(luò)301而加以訪問的方式構(gòu)成。此處,所謂api是指一種接口,該接口對用來由外部(此處為用戶端300)的程序調(diào)出并利用某處理器(此處為cpu(centralprocessingunit,中央處理器)210)的程序的功能等的順序及數(shù)據(jù)形式等進行了規(guī)定。例如,用戶端300可以使用api230,按照所規(guī)定的既定順序(例如,指定用來調(diào)出cpu210的通用性讀取功能的指令),而向存儲系統(tǒng)1a提出讀取請求。接收到讀取請求的存儲系統(tǒng)1a按照來自用戶端300的讀取請求,而回傳讀取數(shù)據(jù)。如此,用戶端300能夠按照api230所規(guī)定的既定順序從cpu210調(diào)出共通利用的通用性功能,并利用該功能。從而,用戶端300無需從頭編寫用來利用該通用性功能的復(fù)雜程序等,只要用戶端300知道用來利用讀取請求等通用性功能的簡單命令,便能夠訪問存儲系統(tǒng)1a。
而且,存儲系統(tǒng)1a將鍵k及與該鍵k相對應(yīng)的值v存儲在磁盤10中。
如圖2所示,值v是被用戶端300提出寫入請求或讀取請求等的信息。作為一例,值v是從用戶端300發(fā)送來的動畫數(shù)據(jù)、圖像數(shù)據(jù)、及文本數(shù)據(jù)等用戶數(shù)據(jù)。
如圖2所示,鍵k是值v以外的信息,且是關(guān)聯(lián)于與鍵k對應(yīng)的值v而具有意義的信息。作為一例,鍵k包含id信息、構(gòu)成塊數(shù)、組織名、文件名、文件形式等。id信息是識別所對應(yīng)的值v的固有的識別信息。構(gòu)成塊數(shù)是表示構(gòu)成值v的塊的數(shù)量的信息。組織名例如為hdd1等。文件名例如為file_a等。id信息例如為2150333等。構(gòu)成塊數(shù)例如為1等。文件形式例如為文本文件形式、圖像文件形式、動畫文件形式、及語音文件形式等。另外,構(gòu)成鍵k的信息(構(gòu)成信息)并不限于所述信息。關(guān)于所述構(gòu)成信息的詳細(xì)內(nèi)容,將使用圖4在下文敘述。
在所述說明這樣的存儲系統(tǒng)(kv(key-value,鍵值)型存儲系統(tǒng))1a中,作為任意尺寸的識別信息的鍵k、及與該鍵k相對應(yīng)的任意尺寸的值v存儲在存儲裝置100中。根據(jù)所述構(gòu)成,若用戶端300指定鍵k,則能夠put(寫入)、get(讀取)、及delete(刪除)與鍵k相對應(yīng)的值v。關(guān)于它們的詳細(xì)內(nèi)容將在下文敘述。
回到圖1,存儲系統(tǒng)1a包括受理來自外部的用戶端300的請求的主機200、及由主機200來管理的多個存儲裝置100。
從包含存儲系統(tǒng)1a及用戶端300的整體來看,主機200是發(fā)揮用來使用戶端300與多個存儲裝置100相互進行訪問的中介作用的橋接部。主機200例如為服務(wù)器、個人計算機、或接口設(shè)備等。此處,所謂主機200是指實施用來使用戶端300與存儲裝置100相互進行訪問的控制的裝置。在第1實施方式中,主機200集中控制多個存儲裝置100,而響應(yīng)來自用戶端300的請求。主機200中所包含的應(yīng)用程序等能夠經(jīng)由所述api230而訪問各存儲裝置100。
主機200包含cpu(centralprocessingunit)210,該cpu210根據(jù)來自用戶端300的請求而發(fā)布讀取指令等既定指令,并經(jīng)由存儲裝置i/f(interface,接口)而控制各存儲裝置100,由此控制存儲系統(tǒng)1a整體的動作(例如,讀取、寫入等)。cup210包括kv管理部220、api230、及kv管理表240。
kv管理部220處理來自用戶端300的命令。具體來講,kv管理部220基于從用戶端300接收到的一對鍵及值(k,v),而使鍵k存儲在ssd(solidstatedrives,固態(tài)驅(qū)動器)1中,并指定表示值v的位置的lba(logicalblockaddress,邏輯塊地址)而使值v及鍵k存儲在hdd(harddiskdrive,硬盤驅(qū)動器)1或hdd2中。因此,kv管理部220會根據(jù)需要而參照kv管理表240,該kv管理表240是表示鍵k、與該鍵對應(yīng)的值v、及主機200所指定的lba的對應(yīng)關(guān)系。
kv管理表240存儲如下三者的對應(yīng)關(guān)系:寫入到各存儲裝置100中的從用戶端300發(fā)送來的全部鍵k及值v、以及主機200所指定的lba。而且,kv管理表240的內(nèi)容例如會根據(jù)通過寫入而在新的lba的磁盤10中存儲新的鍵k及值v的情況等下的需要加以更新。
在第1實施方式中,作為存儲裝置100,列舉包含作為存儲媒體的磁盤(以下,稱為“磁盤”)10的hdd1作為一例而進行說明。
hdd1包括下述頭盤組件(head-diskassembly:hda)、驅(qū)動器ic(integratedcircuit,集成電路)20、磁頭放大器集成電路(以下,稱為“磁頭放大器ic”)30、易失性存儲器70、非易失性存儲器80、緩沖存儲器(高速緩沖存儲器)90、及包含單芯片集成電路的系統(tǒng)控制器130。hdd1經(jīng)由作為設(shè)備i/f的sata(serialadvancedtechnologyattachment,串行高級技術(shù)附件)i/f或sas(serialattachedsmallcomputersystem,串行連接小型計算機系統(tǒng))i/f等而與主機200連接。hdd1將從主機200傳送來的寫入數(shù)據(jù)v寫入到磁盤10,并將從磁盤10讀取的讀取數(shù)據(jù)v傳送到主機200。
hda具有磁盤10、主軸馬達(dá)(spm)12、搭載磁頭15的臂13、及音圈馬達(dá)(vcm)14。磁盤10是利用主軸馬達(dá)12而旋轉(zhuǎn)。臂13及vcm14構(gòu)成致動器。致動器通過vcm14的驅(qū)動,而使搭載在臂13上的磁頭15移動到磁盤10上的既定位置。磁盤10及磁頭15也可以為2個以上。
磁頭15包含設(shè)置在前端部的寫入磁頭15w及讀取磁頭15r。寫入磁頭15w產(chǎn)生相對于磁盤10的表面為垂直方向的磁場,而將寫入數(shù)據(jù)寫入到磁盤10表面的磁道上。讀取磁頭15r讀取記錄在磁盤10的磁道上的數(shù)據(jù)。
驅(qū)動器ic20按照系統(tǒng)控制器130(詳細(xì)來講為下述mpu(microprocessingunit,微處理器)60)的控制,而控制spm12及vcm14的驅(qū)動。
磁頭放大器ic30具有讀取放大器及寫入驅(qū)動器。讀取放大器將利用讀取磁頭15r而讀取的讀取信號放大,并傳輸?shù)阶x/寫(r/w)信道40。寫入驅(qū)動器將與從r/w信道40輸出的寫入數(shù)據(jù)對應(yīng)的寫入電流傳輸?shù)綄懭氪蓬^15w。
易失性存儲器70是若電力供給中斷則所保存的數(shù)據(jù)丟失的半導(dǎo)體存儲器。易失性存儲器70對實施存儲系統(tǒng)1a各部中的處理及運算時所需的數(shù)據(jù)等進行存儲。例如,易失性存儲器70在下述讀取高速緩存處理時,將管理構(gòu)成各鍵k的構(gòu)成信息(構(gòu)成參數(shù))的鍵管理信息71展開。易失性存儲器70例如為sdram(synchronousdynamicrandomaccessmemory,同步動態(tài)隨機存取存儲器)等。
非易失性存儲器80是就算電力供給中斷也保持所保存的數(shù)據(jù)的半導(dǎo)體存儲器。非易失性存儲器80例如為閃速rom(flashreadonlymemory:from,閃速只讀存儲器)等。
緩沖存儲器90是臨時保存在磁盤10與主機200之間收發(fā)的讀取數(shù)據(jù)v等的半導(dǎo)體存儲器。另外,緩沖存儲器90也可以與易失性存儲器70一體而配置。緩沖存儲器90例如為dram(dynamicrandomaccessmemory,動態(tài)隨機存取存儲器)、sram(staticrandomaccessmemory,靜態(tài)隨機存取存儲器)、sdram、feram(ferroelectricrandomaccessmemory,鐵電式隨機存取存儲器)、及mram(magnetoresistiverandomaccessmemory,磁阻式隨機存取存儲器)等。
系統(tǒng)控制器(存儲器控制器)130例如是使用大規(guī)模集成電路(lsi)而實現(xiàn),該大規(guī)模集成電路是多個元件集成在單個芯片上而形成,被稱為芯片上系統(tǒng)(soc,system-on-a-chip)。系統(tǒng)控制器130包含讀/寫(r/w)信道40、硬盤控制器(hdc)50、及微處理器(mpu)60。
r/w信道40執(zhí)行讀取數(shù)據(jù)及寫入數(shù)據(jù)的信號處理。r/w信道40具有測定讀取數(shù)據(jù)的信號品質(zhì)的電路或功能。
hdc50根據(jù)來自mpu60的指示,而控制主機200與r/w信道40之間的數(shù)據(jù)傳送。hdc50包含cpu55、及表格t1。
cpu55控制hdc50的整體(此處所謂的“整體”是指除了主機200以外hdc50所控制的存儲裝置(hdd1)100的整體)的動作。表格t1是表示鍵v、值v、及l(fā)ba的對應(yīng)關(guān)系的管理表(轉(zhuǎn)換表)。關(guān)于表格t1的詳細(xì)內(nèi)容將在下文敘述。
mpu60是控制hdd1的各部而控制整體的動作的主控制器。mpu60例如經(jīng)由驅(qū)動器ic20來控制vcm14,從而執(zhí)行進行磁頭15的定位的伺服控制。
另外,hdd2的構(gòu)成與hdd1相同。而且,主機200及hdd1的構(gòu)成并不限于所述構(gòu)成。例如,并不像kv管理表240及表格t1那樣限定于表格形式,也可以為既定的函數(shù)或數(shù)式以及既定的映射形式等。配置它們的位置也不受限定。
而且,ssd1包含作為存儲媒體的nand(notand,與非)型閃速存儲器等閃速存儲器。閃速存儲器包含在字線與位線的交叉位置配置多個存儲單元而形成的存儲單元陣列。各存儲單元包含控制柵極及浮動?xùn)艠O。按照連接于字線的控制柵極的電壓控制,而控制注入到浮動?xùn)艠O的電子的有無,由此非易失性地存儲數(shù)據(jù)。對于ssd1的其他構(gòu)成的詳細(xì)說明予以省略。
1-2.表格t1
圖3是表示圖1的表格t1的圖。如圖3所示,表格t1是表示如下三者的對應(yīng)關(guān)系的管理表:寫入到存儲裝置100的磁盤10中的值v、與該值v對應(yīng)的鍵k、及由主機指定的lba(構(gòu)成值v的單位(塊/扇區(qū))的位置信息)。
在表格t1中,例如表示鍵k1、值v1、及l(fā)ba1處于相互關(guān)聯(lián)的對應(yīng)關(guān)系的情況。以下同樣地,鍵k2、值v2、及l(fā)ba2處于對應(yīng)關(guān)系。鍵k3、值v3、及l(fā)ba3處于對應(yīng)關(guān)系。鍵kn、值vn、及l(fā)ban~lban+2處于對應(yīng)關(guān)系。鍵kx、值vx、及l(fā)ban-3~lban-1處于對應(yīng)關(guān)系。鍵ky、值vy、及l(fā)ban+3處于對應(yīng)關(guān)系。鍵kz、值vz、及l(fā)ban+4~lban+7處于對應(yīng)關(guān)系。
如此,在存儲系統(tǒng)1a中,與鍵k相對應(yīng)的任意尺寸的值v存儲在磁盤10中。因此,與1個值v相對應(yīng)的lba任意,不一定是1個。例如,相對于1個值vn,對應(yīng)著3個lban~lban+2(3個塊)。而且,相對于1個值vy,對應(yīng)著1個lban+3(1個塊)。
而且,如圖2中所說明的那樣,各鍵k不僅包含識別與該鍵k相對應(yīng)的值v的id信息,而且包含關(guān)聯(lián)于所對應(yīng)的值v而具有意義的日期等其他構(gòu)成信息。
1-3.鍵管理信息
圖4是表示圖1的鍵管理信息71的圖。此處,將鍵ky的鍵管理信息71作為一例而表示。鍵ky例如包含以下構(gòu)成信息(構(gòu)成數(shù)據(jù)、構(gòu)成參數(shù))。此處,圖4所示的“構(gòu)成信息”是指構(gòu)成該鍵ky的信息,且是如上所述關(guān)聯(lián)于與該鍵ky相對應(yīng)的值vy而具有意義的信息。
如圖4所示,keyy(id信息)的值例如為“2150333”,是用來特定出所對應(yīng)的值vy的固有信息。numy(第1信息)的值例如為“1”,表示值vy的構(gòu)成塊的數(shù)量。具體來講,numy是表示構(gòu)成從主機200傳送來的寫入數(shù)據(jù)的單位的數(shù)量(塊數(shù)/扇區(qū)數(shù))的信息。換句話說,numy對應(yīng)于與鍵ky相對應(yīng)的值vy的尺寸。storagey(組織名)的值例如為“hdd1”,表示存儲值vy的存儲裝置(此處為hdd1)。filey(文件名)的值例如為“file_a”,表示存儲值vy的文件名。datay(日期)的值例如為“1127”,表示創(chuàng)建值vy的11月27日。
另外,圖4所示的構(gòu)成信息歸根到底不過是例示,并不限定于這些例子。例如,構(gòu)成信息也可以包含例如值v的尺寸、標(biāo)題、及注釋等其他值v的屬性數(shù)據(jù)。
[2.動作]
2-1.讀取(讀取高速緩存)處理
使用圖5至圖7,對存儲系統(tǒng)1a的讀取(讀取高速緩存)處理進行說明。另外,在第1實施方式中,列舉主機200從用戶端300收到作為讀取數(shù)據(jù)的值vn(以lba表示的lban~lban+2(構(gòu)成塊的數(shù)量:3))的讀取請求的情況作為一例。因此,首先,對讀取請求所涉及的讀取處理進行說明。
[讀取處理]
在圖5的步驟s11中,主機200經(jīng)由api230而從用戶端300接收指定鍵kn的讀取請求。收到讀取請求的主機200的kv管理部220參照kv管理表240,基于kv管理表中所示的鍵kn與值vn的對應(yīng)關(guān)系,而檢索存儲與值vn對應(yīng)的鍵kn的存儲裝置100。檢索的結(jié)果,kv管理部220若判定存儲鍵kn的存儲裝置是hdd1,則參照kv管理表240,基于kv管理表中所示的鍵kn與lban~lban+2的對應(yīng)關(guān)系,而指定lban~lban+2并指定作為讀取數(shù)據(jù)的值vn。
另外,在檢索所述鍵kn時,kv管理部220也可以從作為存儲裝置的ssd1進行檢索。其詳細(xì)內(nèi)容將在下文敘述。
在步驟s12中,指定了值vn的裝置100的cpu55使讀取磁頭15r的磁盤10的位置從當(dāng)前磁道移動到存儲作為讀取數(shù)據(jù)的值vn的目標(biāo)磁道(尋道)。具體來講,如圖3所示,cpu55參照表示出值vn及與該值vn對應(yīng)的lban~lban+2的對應(yīng)關(guān)系的表格t1,基于所參照的對應(yīng)關(guān)系(vn,lban~lban+2),而使讀取磁頭15r的位置移動到目標(biāo)磁道。
在步驟s13中,當(dāng)所述尋道完成后,hdd1從磁盤10的目標(biāo)磁道讀取作為讀取數(shù)據(jù)的值vn。例如,如圖6所示,hdd1的mpu60從磁盤10的目標(biāo)磁道19,利用讀取磁頭15r而讀取參照表格t1所得出的lban~lban+2的值vn。更具體來講,若隨著圖中的箭頭所示的磁盤10的旋轉(zhuǎn),值vn(lban~lban+2)來到讀取磁頭15r的位置,則利用讀取磁頭15r而讀取值vn。被讀取的值vn存儲在緩沖存儲器90中。
回到圖5,在步驟s14中,hdd1將讀取的值vn傳送到主機200,而響應(yīng)讀取請求。具體來講,hdd1的cpu55從緩沖存儲器90將值vn傳送到主機200。
如圖7所示,讀取處理的結(jié)果,在緩沖存儲器90的存儲空間存儲作為讀取數(shù)據(jù)的值vn。如圖7所示,從緩沖存儲器90的全部存儲區(qū)域除去作為讀取數(shù)據(jù)的值vn以外的區(qū)域稱為剩余區(qū)域ra。
[讀取高速緩存處理]
繼而,對讀取高速緩存處理進行說明。讀取高速緩存處理利用的是如下特點:對緊跟著有過讀取請求的數(shù)據(jù)(此處為值vn)的區(qū)域及其附近區(qū)域等提出讀取請求的傾向較高。例如,在對某區(qū)域(此處為lban~lban+2)提出過讀取請求之后,將存儲在緊跟著所述某區(qū)域的前方的區(qū)域(此處為lban+3)中的數(shù)據(jù)讀取,并預(yù)先使之存儲在緩沖存儲器90中。通過這樣預(yù)先進行讀取高速緩存處理,能夠在接下來對已預(yù)先存儲在緩沖存儲器90中的數(shù)據(jù)提出讀取請求的情況下,不從磁盤10讀取,而從緩沖存儲器90直接傳送該讀取請求所涉及的數(shù)據(jù)。結(jié)果,能夠使存儲系統(tǒng)1a的讀取訪問高速化。
在步驟s15中,hdd1對在緩沖存儲器90中是否存在用來進行讀取高速緩存處理的區(qū)域進行判定。這時,例如,在因為存儲著讀取數(shù)據(jù)等,所以緩沖存儲器90的剩余區(qū)域ra的容量小于既定的閾值cth的情況下(s15中為否),hdd1的cpu55使讀取高速緩存處理結(jié)束。此處,所謂既定的閾值cth是指用來使用緩沖存儲器90的空閑區(qū)域(剩余區(qū)域)在緩沖存儲器90的存儲區(qū)域中所占的比率。例如,在圖8所示的情況下,閾值cth是剩余區(qū)域ra在緩沖存儲器90的存儲區(qū)域(存儲讀取數(shù)據(jù)vn及高速緩存數(shù)據(jù)vy的區(qū)域、以及剩余區(qū)域ra)中所占的比率。在該情況下,閾值cth例如為10%到20%左右。
在步驟s16中,hdd1在滿足步驟s15的條件的情況下(s15中為是),同樣地繼續(xù)從磁盤10的目標(biāo)磁道19讀取值。
在步驟s17中,hdd1參照所要讀取的值v的鍵k,而對所參照的鍵k中所示的值v是否全部包含在緩沖存儲器90中進行判定。換句話說,這時,hdd1通過參照鍵k,而判定不完全數(shù)據(jù)及不使用數(shù)據(jù)等。
具體來講,hdd1的cpu55參照在易失性存儲器70中展開的鍵管理信息71(圖4),基于構(gòu)成鍵k的各構(gòu)成數(shù)據(jù)中表示值v的構(gòu)成塊的數(shù)量的信息(第1信息)num,而對值v是否全部包含在緩沖存儲器90中進行判定。在不滿足步驟s17的條件的情況下(s17中為否),hdd1重復(fù)步驟s17的處理。
這時,例如,在從圖6所示的位置(lban-3的中途)開始讀取高速緩存處理的情況下,cpu55參照鍵管理信息71,基于信息(第1信息)numx的值即“3”,而判定值vx(lban-3~lban-1)并未全部包含在緩沖存儲器90中;所述信息numx表示構(gòu)成鍵kx的值vx的構(gòu)成塊的數(shù)量。這意味著信息numx所表示的構(gòu)成塊的數(shù)量為3塊,另一方面所讀取的構(gòu)成值vx的塊的數(shù)量為2塊(lban-2及l(fā)ban-1),所參照的數(shù)量與所讀取的數(shù)量不一致。從而,cpu55判定無法讀取構(gòu)成值vx的全部數(shù)據(jù)。
進而,在圖6所示的讀取磁頭15r來到位置lban+3的情況下,cpu55參照圖4所示的鍵管理信息71,基于信息(第1信息)numy的值即“1”,而判定值vy(lban+3)全部包含在緩沖存儲器90中(能夠作為高速緩存而加以利用);所述信息numy表示構(gòu)成鍵ky的值vy的構(gòu)成塊的數(shù)量。這意味著表示構(gòu)成塊的數(shù)量的信息numy為1塊,而所讀取的構(gòu)成值vy的塊也為1塊。因此,信息numy所表示的構(gòu)成塊的數(shù)量“1”與所讀取的構(gòu)成值vy的塊的數(shù)量“1”一致。從而,cpu55判定對于讀取的值vy,能夠讀取全部數(shù)據(jù),且能夠使之存儲在緩沖存儲器90中。
另外,如圖8所示,此處,若使超出此的數(shù)據(jù)存儲在緩沖存儲器90中,則因為存儲著高速緩存數(shù)據(jù)vy及讀取數(shù)據(jù)vn,所以緩沖存儲器90的剩余區(qū)域ra的容量小于既定的閾值cth。
因此,在圖6所示的讀取磁頭15r來到位置lban+4的情況下,cpu55參照鍵管理信息71,基于信息(第1信息)numz的值即“4”,而判定值vz(lban+3~lban+7)并未全部包含在緩沖存儲器90中(無法作為高速緩存而加以利用);所述消息numz與構(gòu)成鍵kz的值vz的構(gòu)成塊的數(shù)量相關(guān)聯(lián)。
在步驟s18中,在滿足步驟s17的條件的情況下(s17中為是),使該值v存儲在緩沖存儲器90中,而結(jié)束高速緩存讀取處理。結(jié)果,例如,如圖8所示,能夠使?jié)M足步驟s17的條件的值vy(lban+3)作為高速緩存數(shù)據(jù)而存儲在緩沖存儲器90中。
另外,作為其他存儲裝置100的hdd2等的讀取及讀取高速緩存處理實質(zhì)上也與所述hdd1相同。因此,省略它的詳細(xì)說明。
[3.作用效果]
如以上所說明的那樣,根據(jù)第1實施方式的存儲系統(tǒng)1a的構(gòu)成及動作,至少能夠獲得下述(1)及(2)的效果。
(1)能夠使讀取高速緩存處理效率化。
在讀取處理(圖5的s11~s14)之后,hdd1的cpu55參照所要高速緩存讀取的值v的鍵k,而對所參照的鍵k中所示的值v是否全部包含在緩沖存儲器90中進行判定(圖5的s17)。換句話說,hdd1通過參照鍵k的構(gòu)成數(shù)據(jù),而對讀取的值是否為未包含構(gòu)成該值的全部數(shù)據(jù)的不完全數(shù)據(jù)或不使用數(shù)據(jù)等進行判定。更加具體來講,cpu55參照在易失性存儲器70中展開的鍵管理信息71(圖4),而對構(gòu)成鍵k的各構(gòu)成數(shù)據(jù)中表示值v的構(gòu)成塊的數(shù)量的信息(第1信息)與所讀取的構(gòu)成值的塊的數(shù)量是否一致進行判定。
在滿足步驟s17的判定條件的情況下(s17中為是),使該值v存儲在緩沖存儲器90中。結(jié)果,例如,如圖8所示,能夠使?jié)M足步驟s17的條件的值vy(lban+3)作為高速緩存數(shù)據(jù)而存儲在緩沖存儲器90中。
因此,能夠防止將不完全數(shù)據(jù)(此處的值vx等)及不使用數(shù)據(jù)等作為高速緩存數(shù)據(jù)而取得。從而,對于該不完全數(shù)據(jù)及不必要數(shù)據(jù)的碎片等無用數(shù)據(jù),無需準(zhǔn)備緩沖存儲器90的高速緩存區(qū)域。具體來講,如圖3所示,值vx是由3個lba(lban-3~lba-1)的3個數(shù)據(jù)所組成。因此,在僅讀取值vx中的1個數(shù)據(jù)或2個數(shù)據(jù)的情況下,該數(shù)據(jù)是未包含構(gòu)成值vx的全部數(shù)據(jù)的不完全數(shù)據(jù),且是無需存儲在緩沖存儲器90中的無用數(shù)據(jù)。如此,根據(jù)第1實施方式,無需使所述無用數(shù)據(jù)存儲在緩沖存儲器90中,例如,能夠在有限的緩沖存儲器90的高速緩存容量內(nèi)期待比特率的提高等,從而能夠使讀取高速緩存處理效率化。
圖9所示的比較例與第1實施方式相比,是以扇/塊為單位的指令管理。因此,非常難以判定作為高速緩存而讀取的數(shù)據(jù)是否會在之后被使用。例如,如圖9所示,對于像位于lban-3~lban-1的不完全數(shù)據(jù)、或位于lban+4~lban+7的超出緩沖存儲器的閾值這樣的不使用數(shù)據(jù),也需要準(zhǔn)備緩沖存儲器的存儲區(qū)域。如此,明白了在比較例的讀取高速緩存處理的情況下,圖9所示的讀取磁頭的讀取范圍crc大于第1實施方式的讀取范圍cr1(crc>cr1),緩沖存儲器的高速緩存區(qū)域的無用范圍變大。
(2)能夠削減緩沖存儲器90的高速緩存容量,能夠削減緩沖存儲器90的專有面積。
如上所述,根據(jù)第1實施方式的存儲系統(tǒng)1a,能夠不浪費地僅使有效的值(數(shù)據(jù))v存儲在緩沖存儲器90中。因此,能夠削減緩沖存儲器90的高速緩存容量,在能夠削減緩沖存儲器90的專有面積的點上也有利。
(變化例1)
對變化例1的存儲系統(tǒng)1a的動作進行說明。在該說明中,存儲系統(tǒng)1a的構(gòu)成實質(zhì)上與第1實施方式相同,因此省略它的詳細(xì)說明。
[動作]
讀取(讀取高速緩存)處理
使用圖10至圖13,對存儲系統(tǒng)1a的讀取(讀取高速緩存)處理進行說明。變化例1是對尋道完成后的讀取磁頭15r的位置比作為讀取數(shù)據(jù)的值vn的位置靠前的情況的一例進行說明。在該情況下,能夠進行值vn前面的值的讀取高速緩存。
如圖10所示,變化例1的存儲系統(tǒng)1a的讀取及讀取高速緩存處理在進而進行讀取高速緩存處理1(步驟s27及s28)的點上,與第1實施方式不同。
首先,在步驟s13中,在所述尋道完成后,hdd1從磁盤10的目標(biāo)磁道19讀取值v。在變化例1的情況下,如圖11所示,尋道完成后的讀取磁頭15r的位置比作為讀取數(shù)據(jù)的值vn的位置靠前。因此,hdd1的mpu60參照表格t1,利用讀取磁頭15r而從磁盤10的目標(biāo)磁道19讀取lban-3~lban-1的值vx。
在步驟s27中,hdd1參照所要讀取的值v的鍵k,而對所參照的鍵k中所示的值v是否全部包含在緩沖存儲器90中進行判定。具體來講,hdd1的cpu55參照在易失性存儲器70中展開的鍵管理信息71(圖4),基于構(gòu)成鍵kx的構(gòu)成數(shù)據(jù)中表示值vx的構(gòu)成塊的數(shù)量的信息(第1信息)num,而對值vx是否全部包含在緩沖存儲器90中進行判定。在不滿足步驟s27的條件的情況下(s27中為否),hdd1反復(fù)實施步驟s27的處理直到將讀取請求所涉及的值v讀取為止。
這時,如變化例1般,在從圖11所示的位置(lban-4的中途且lban-3之前)開始讀取高速緩存處理1的情況下,cpu55參照鍵管理信息71,基于信息(第1信息)numx的值即“3”,而判定值vx(lban-3~lban-1)全部包含在緩沖存儲器90中,該信息numx表示構(gòu)成鍵kx的值vx的構(gòu)成塊的數(shù)量。這意味著信息numx所表示的構(gòu)成塊的數(shù)量“3”與由主機200指定而讀取的塊的數(shù)量“3”一致(3個塊)。因此,cpu55可以判定能夠讀取構(gòu)成值vx的全部數(shù)據(jù)。
在步驟s28中,在滿足步驟s27的條件的情況下(s27中為是),使該值v存儲在緩沖存儲器90中。結(jié)果,例如,如圖12所示,能夠使?jié)M足步驟s27的條件的vx(lban-3~lban-1)作為高速緩存數(shù)據(jù)而存儲在緩沖存儲器90中。
然后,存儲系統(tǒng)1a進行與所述第1實施方式相同的讀取處理及讀取高速緩存處理2(步驟s15至s18)。結(jié)果,在變化例1中,如圖13所示,能夠使位于作為讀取數(shù)據(jù)的值vn(lban~lban+2)的前后的高速緩存數(shù)據(jù)vx(lban-3~lban-1)及高速緩存數(shù)據(jù)vy(lban+3)存儲在緩沖存儲器90中。
[作用效果]
如以上所說明的那樣,根據(jù)變化例1的存儲系統(tǒng)1a的構(gòu)成及動作,至少能夠獲得所述(1)及(2)的效果。變化例1的存儲系統(tǒng)1a進而執(zhí)行圖10所示的讀取高速緩存處理1(步驟s27及s28)。
因此,如圖13所示,能夠使位于作為讀取數(shù)據(jù)的值vn(lban~lban+2)的前后的高速緩存數(shù)據(jù)vx(lban-3~lban-1)及高速緩存數(shù)據(jù)vy(lban+3)存儲在緩沖存儲器90中。如此,通過使位于作為讀取數(shù)據(jù)的值vn的前后的值vx及vy作為高速緩存數(shù)據(jù)而存儲在緩沖存儲器中,在能夠進而期待比特率的提高的點上有利。
(第2實施方式)
對第2實施方式的存儲系統(tǒng)1b進行說明。在該說明中,省略與所述第1實施方式重復(fù)的部分的詳細(xì)說明。
[構(gòu)成]
存儲系統(tǒng)
如圖14所示,第2實施方式的存儲系統(tǒng)1b在不含主機(橋接部)200,且由存儲裝置100的cpu55包含kv管理部220、api230、及kv管理表240的點上,與第1實施方式不同。
其他構(gòu)成與第1實施方式實質(zhì)上相同,因此省略它的詳細(xì)說明。
[動作]
讀取(讀取高速緩存)處理
第2實施方式的存儲系統(tǒng)1b的讀取及讀取高速緩存處理在由存儲裝置100進行主機200所進行的處理(例如,圖5的s11等)的點上,與第1實施方式不同。
其他動作實質(zhì)上與第1實施方式相同,因此省略它的詳細(xì)說明。
[作用效果]
如以上所說明的那樣,根據(jù)第2實施方式的存儲系統(tǒng)1b的構(gòu)成及動作,至少能夠獲得所述(1)及(2)的效果。進而,第2實施方式的存儲系統(tǒng)1b不含主機(橋接部)200,且由存儲裝置100的cpu55包含kv管理部220、api230、及kv管理表240。
因此,存儲系統(tǒng)1b的各存儲裝置100能夠直接連接于網(wǎng)絡(luò)301。從而,存儲系統(tǒng)1b的各存儲裝置100具有作為目標(biāo)存儲系統(tǒng)1b的各節(jié)點的功能,能夠直接與用戶端300進行部分通信。如此,能夠根據(jù)需要而應(yīng)用存儲系統(tǒng)1b。
(第3實施方式)
對第3實施方式的存儲系統(tǒng)1進行說明。在該說明中,省略與所述第1、第2實施方式重復(fù)的部分的詳細(xì)說明。此處,對kv型存儲系統(tǒng)1的構(gòu)成、put(寫入)動作、及get(讀取)動作的概略進行說明。
[構(gòu)成]
存儲系統(tǒng)
如圖15所示,存儲系統(tǒng)1是以能夠使用ip等網(wǎng)絡(luò)301從外部的用戶端300利用api而加以訪問的方式構(gòu)成。存儲系統(tǒng)1是以包含數(shù)據(jù)v、及用來識別該數(shù)據(jù)v的標(biāo)識符k的數(shù)據(jù)群(目標(biāo))為單位而管理從用戶端300傳送來的數(shù)據(jù)。在這種kv型存儲系統(tǒng)中,任意尺寸的標(biāo)識符鍵k、及與該鍵k相關(guān)聯(lián)的任意尺寸的數(shù)據(jù)v存儲在存儲裝置100中。根據(jù)所述構(gòu)成,若用戶端300指定鍵k,則能夠put(寫入)、get(讀取)、及delete(刪除)與鍵k相關(guān)聯(lián)的值v。
存儲系統(tǒng)1進而包含多個存儲裝置100(ssd1、ssd2…h(huán)dd1、hdd2、hdd3…),且利用kv管理部220而管理這些存儲裝置。
ssd的讀取速度vssd比hdd的讀取速度vhdd快(vssd>vhdd)。另一方面,ssd的數(shù)據(jù)容量cssd比hdd的數(shù)據(jù)容量chdd小(cssd<chdd)。如下所述,存儲系統(tǒng)1利用基于存儲裝置的特性的所述關(guān)系,而進行動作。
另外,存儲系統(tǒng)1的構(gòu)成并不限于圖16所示的構(gòu)成。例如,存儲系統(tǒng)1也可以進而包含管理部等,該管理部對存儲與鍵k對應(yīng)的數(shù)據(jù)v的存儲裝置100是哪一個這樣的鍵構(gòu)成進行管理。
[動作]
put(寫入)處理
如圖16所示,在進行put(寫入)處理的情況下,用戶端300向主機200發(fā)送鍵k與值v配對的put請求即put(k,v)。
繼而,主機200的kv管理部220基于所接收到的put(k,v),而向ssd1及ssd2寫入鍵k,并向hdd1及hdd2寫入鍵k及值v的組(k,v)。這樣操作,存儲著同一個鍵k的ssd1、ssd2、及存儲著同一個組(k,v)的hdd1、hdd2也可以形成指定的raid(redundantarrayofindependent[inexpensive]disks,獨立[廉價]磁盤冗余陣列)群組。
繼而,kv管理部220將鍵k及組(k,v)與存儲該鍵k及組(k,v)的存儲裝置(ssd1、ssd2、hdd1、hdd2)100的對應(yīng)關(guān)系存儲在kv管理表240中。
繼而,kv管理部220也可以將put處理已經(jīng)完成的旨意響應(yīng)給用戶端300。
通過所述處理,在存儲裝置100中存儲put請求所涉及的組(k,v)。
get(讀取)處理
如圖17所示,在進行g(shù)et(讀取)處理的情況下,用戶端300將與所期望的值v對應(yīng)的鍵k(get(k))發(fā)送到存儲系統(tǒng)1而作為get請求。
接收到鍵k的kv管理部220參照表示鍵k與被寫入該鍵k的ssd的關(guān)系的kv管理表240,檢索例如存儲在ssd1中的鍵k而獲得鍵k,并獲得作為鍵k結(jié)構(gòu)的例如entry結(jié)構(gòu)體等。
繼而,kv管理部220從作為存儲裝置100的hdd1讀取值v,該值v存儲在entry結(jié)構(gòu)體所表示的hdd1的指標(biāo)所示的位置。
繼而,kv管理部220將讀取的值v發(fā)送到用戶端300,而響應(yīng)用戶端300。
另外,在kv管理部220檢索存儲在ssd1及ssd2中的鍵但未檢索到目標(biāo)鍵的情況下,kv管理部220也可以對用戶端300響應(yīng)錯誤響應(yīng)或無配對的值v的意旨。
[作用效果]
如以上所說明的那樣,根據(jù)第3實施方式的存儲系統(tǒng)1的構(gòu)成及動作,至少能夠獲得所述(1)及(2)的效果。
進而,如上所述,第3實施方式的存儲系統(tǒng)1能夠指定可變長度的鍵k而進行可變長度的值v的寫入及讀取。因此,能夠處理非結(jié)構(gòu)化數(shù)據(jù),從而能夠使軟件構(gòu)成簡略化。
主機(橋接部)200的kv管理部220統(tǒng)括地管理存儲裝置100。因此,就算構(gòu)成大規(guī)模存儲裝置,也能夠削減用來管理存儲裝置100的管理服務(wù)器的數(shù)量或無需管理服務(wù)器。因此,存儲系統(tǒng)1對于低tco(totalcostofownership,總體擁有成本)化及高性能化有利。
存儲系統(tǒng)1統(tǒng)括地控制響應(yīng)速度及容量不同的ssd或hdd等多種存儲裝置。因此,無需選擇與處理目的相符的存儲裝置。
進而,存儲系統(tǒng)1通過利用ssd的讀取速度vssd與hdd的讀取速度vhdd的關(guān)系(vssd>vhdd)、及ssd的數(shù)據(jù)容量cssd與hdd的容量chdd的關(guān)系(cssd<chdd),能夠使put處理及get處理效率化。例如,在put處理中,kv管理部220通過將尺寸較大的值v寫入到hdd1、hhd2,能夠滿足put請求。例如,在get處理中,kv管理部220通過從讀取速度較快的ssd1、ssd2檢索鍵k,能夠在用戶端300的既定的響應(yīng)速度內(nèi)滿足get請求。
已對本發(fā)明的若干實施方式進行了說明,但這些實施方式是作為例子而提出的,并非意圖限定發(fā)明的范圍。這些新穎的實施方式能以其他各種方式實施,且能夠在不脫離發(fā)明主旨的范圍內(nèi)進行各種省略、替換、變更。這些實施方式及其變化包含在發(fā)明的范圍或主旨中,并且包含在權(quán)利要求書所記載的發(fā)明及其均等的范圍內(nèi)。