国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備的制作方法

      文檔序號:6485202閱讀:270來源:國知局
      在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備的制作方法
      【專利摘要】根據(jù)本文所公開的實(shí)施例,提供方法、系統(tǒng)、機(jī)制、技術(shù)和設(shè)備,其用于在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備;用于實(shí)現(xiàn)協(xié)作NVM數(shù)據(jù)保護(hù)的分布式體系結(jié)構(gòu);用于一致SSD等待時間的數(shù)據(jù)鏡像;用于在DIF支持下經(jīng)由同步RAID處理提升控制器的性能和RAS;用于實(shí)現(xiàn)門鈴機(jī)制的仲裁和資源方案,包括攻擊擁塞的公平性和預(yù)防的門鈴仲裁;以及用于通過使用中斷合并方案利用控制器中的消息傳遞單元和NTB實(shí)現(xiàn)多中斷生成。
      【專利說明】在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備
      [0001]版權(quán)聲明
      本專利文件的公開的一部分包含受版權(quán)保護(hù)的資料。版權(quán)擁有者不反對任何人拓制出現(xiàn)在專利商標(biāo)局的專利文件或記錄中的專利文件或?qū)@_,但是無論如何另外保留所有版權(quán)權(quán)利。
      【技術(shù)領(lǐng)域】
      [0002]一般來說,實(shí)施例涉及計算領(lǐng)域,更具體來說,涉及在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備,包括用于實(shí)現(xiàn)在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備的方法、系統(tǒng)和設(shè)備以及與基于直接存儲器存取(DMA)的存儲技術(shù)有關(guān)的其它補(bǔ)充解決方案,例如改進(jìn)的獨(dú)立盤冗余陣列(RAID)支持、分布式RAID支持、用于改進(jìn)裝置等待時間一致性的本地塊鏡像、改進(jìn)的門鈴合并和仲裁方案,因為這些改進(jìn)都與基于DMA的存儲技術(shù)有關(guān)。
      【背景技術(shù)】
      [0003]不應(yīng)只是因為在【背景技術(shù)】中提及而認(rèn)為【背景技術(shù)】中所論述的主題就是現(xiàn)有技術(shù)。類似地,不應(yīng)認(rèn)為在【背景技術(shù)】中提及或者與【背景技術(shù)】的主題相關(guān)聯(lián)的問題在現(xiàn)有技術(shù)中之前已經(jīng)意識到了?!颈尘凹夹g(shù)】中的主題只是表示不同的方法,其中它們本身也可以對應(yīng)于所公開的實(shí)施例。
      [0004]在計算領(lǐng)域中,最常見的是具有由操作系統(tǒng)(OS)配合中央處理單元(CPU)直接存取和管理的存儲機(jī)制,OS駐留在計算裝置上并通過CPU的執(zhí)行能力啟用。但是,也存在備選機(jī)制,例如基于DMA (直接存儲器存取)的機(jī)制和直接存取存儲裝置,它們獨(dú)立于主機(jī)及其操作系統(tǒng)和文件系統(tǒng)操作,從而例如使得能夠?qū)υ谥鳈C(jī)上執(zhí)行的托管應(yīng)用進(jìn)行直接存取,而無需這些托管應(yīng)用通過主機(jī)或其操作系統(tǒng)和/或文件系統(tǒng)傳送存取請求。
      [0005]在標(biāo)準(zhǔn)存儲接口之前(大約在20世紀(jì)80年代中期),需要程序員寫入代碼以便特別處理對硬盤驅(qū)動器的數(shù)據(jù)讀取和寫入。需要這種代碼來標(biāo)識硬盤驅(qū)動器(HDD)上的柱面、磁頭、磁道和扇區(qū)以作為讀取和寫入操作的一部分。標(biāo)識這些細(xì)節(jié)以作為對HDD的讀取和寫入操作的一部分需要對OS進(jìn)行改變以便支持任何新的HDD,其中假設(shè)柱面、磁頭、磁道和扇區(qū)必然與之前所支持的有所不同。
      [0006]隨著開發(fā)和采用了標(biāo)準(zhǔn)存儲接口,例如SCS1、ATA、SAS、SATA、FC等,于是可以對程序員隱藏HDD的基本柱面、磁頭、磁道和扇區(qū)布局并向HDD呈現(xiàn)一致接口,而不管其基本物理結(jié)構(gòu)。因此,這些標(biāo)準(zhǔn)存儲接口允許程序員在通過標(biāo)準(zhǔn)存儲接口發(fā)送的命令中簡單地標(biāo)識邏輯地址,然后實(shí)現(xiàn)標(biāo)準(zhǔn)存儲接口的硬盤驅(qū)動器中的固件將邏輯地址轉(zhuǎn)譯為執(zhí)行讀取和/或?qū)懭氩僮魉匦璧膶?yīng)柱面、磁頭、磁道和扇區(qū),將讀取/寫入磁頭移動到柱面上的正確位置等,并根據(jù)命令讀取或?qū)懭雽?shí)際數(shù)據(jù)。
      [0007]操作系統(tǒng)中包括支持這些標(biāo)準(zhǔn)存儲接口的裝置驅(qū)動器,以使得駐留在OS上的應(yīng)用可以利用標(biāo)準(zhǔn)OS調(diào)用來經(jīng)由標(biāo)準(zhǔn)存儲接口存取任何HDD,而不管HDD的基本物理結(jié)構(gòu)。盡管標(biāo)準(zhǔn)存儲接口和操作系統(tǒng)內(nèi)的支持裝置驅(qū)動器對于標(biāo)識HDD的基本柱面、磁頭、磁道和扇區(qū)的復(fù)雜性提供了解決方案,但是標(biāo)準(zhǔn)存儲接口和支持裝置驅(qū)動器本身增加了復(fù)雜度以及計算開銷,并且因此效率低下,從而會減慢性能。
      [0008]因此,現(xiàn)有技術(shù)水平可以得益于本文所闡述的教導(dǎo)。
      【專利附圖】

      【附圖說明】
      [0009]舉例而非限制性地示出實(shí)施例,并且結(jié)合附圖參考以下詳細(xì)描述時將能更加全面地理解實(shí)施例,附圖中:
      圖1A示出SSD裝置的實(shí)施例;
      圖1B示出各種公開實(shí)施例可在其中操作并且這些實(shí)施例與之有關(guān)的實(shí)例性體系結(jié)
      構(gòu);
      圖1C示出各種公開實(shí)施例可在其中操作并且這些實(shí)施例與之有關(guān)的實(shí)例性體系結(jié)
      構(gòu);
      圖1D描繪根據(jù)公開實(shí)施例經(jīng)啟用而在邏輯驅(qū)動器模型下呈現(xiàn)給主機(jī)操作系統(tǒng)的直接存取的存儲設(shè)備和子模塊的備選實(shí)例性體系結(jié)構(gòu)概況;
      圖2A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)協(xié)作NVM數(shù)據(jù)保護(hù)和恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的實(shí)例性體系結(jié)構(gòu)概況;
      圖2B描繪用于實(shí)現(xiàn)協(xié)作NVM數(shù)據(jù)保護(hù)和恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的備選實(shí)例性體系結(jié)構(gòu)概況;
      圖2C描繪用于進(jìn)行協(xié)作數(shù)據(jù)恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的另一備選實(shí)例性體系結(jié)構(gòu)概況;
      圖3A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致SSD (固態(tài)驅(qū)動器)等待時間的體系結(jié)構(gòu)的實(shí)例性體系結(jié)構(gòu)概況;
      圖3B描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致SSD (固態(tài)驅(qū)動器)等待時間的體系結(jié)構(gòu)的備選實(shí)例性體系結(jié)構(gòu)概況;
      圖3C描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致SSD (固態(tài)驅(qū)動器)等待時間的體系結(jié)構(gòu)的另一備選實(shí)例性體系結(jié)構(gòu)概況;
      圖4A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)改進(jìn)的RAID 5/6性能的體系結(jié)構(gòu)的實(shí)例性體系結(jié)構(gòu)概況;
      圖4B和圖4C分別描繪未經(jīng)優(yōu)化的RAID 5/6操作(4B)對優(yōu)化的RAID 5/6操作(4C)之間的對比,優(yōu)化的RAID 5/6操作利用根據(jù)公開實(shí)施例的同步流體系結(jié)構(gòu)和方法;
      圖4D和圖4E描繪根據(jù)公開實(shí)施例在深度優(yōu)先填充算法和優(yōu)化的寬度優(yōu)先型填充操作之間的對比。
      [0010]圖4F和圖4G描繪根據(jù)公開實(shí)施例用于改進(jìn)的RAID 5/6性能的雙罐數(shù)據(jù)流以及對實(shí)例性RAID 5/6 10+2配置的所得性能分析;
      圖5A描繪根據(jù)公開實(shí)施例供主機(jī)以有限數(shù)量的門鈴處理主機(jī)門鈴寫入而不會壓制主機(jī)門鈴寫入或從I/O裝置的門鈴空間中溢出的實(shí)例性體系結(jié)構(gòu)概況;
      圖5B描繪根據(jù)公開實(shí)施例供主機(jī)處理主機(jī)門鈴的備選實(shí)例性體系結(jié)構(gòu)概況;
      圖5C描繪根據(jù)公開實(shí)施例供主機(jī)處理主機(jī)門鈴的另一備選實(shí)例性體系結(jié)構(gòu)概況;
      圖描繪根據(jù)公開實(shí)施例的門鈴提交、排隊和仲裁機(jī)制的高級過程流503 ;圖6A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)中斷合并方案以便減小中斷服務(wù)例程(ISR)開銷、同時通過對錯誤狀況進(jìn)行通知來改善RAS的實(shí)例性體系結(jié)構(gòu)概況;
      圖6B描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)中斷合并方案的備選實(shí)例性體系結(jié)構(gòu)概況601 ;
      圖6C描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)中斷合并方案的備選實(shí)例性體系結(jié)構(gòu)概況;以及 圖7示出根據(jù)公開實(shí)施例以計算機(jī)系統(tǒng)的實(shí)例性形式的宿主機(jī)的圖形表示。
      【具體實(shí)施方式】
      [0011]本文描述用于在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備的系統(tǒng)、裝置、設(shè)備、技術(shù)、機(jī)制和方法以及與基于DMA的存儲技術(shù)有關(guān)的其它補(bǔ)充解決方案。
      [0012]近年來,隨著SSD (固態(tài)驅(qū)動器)技術(shù)的出現(xiàn)并作為大容量存儲裝置并入到計算機(jī)系統(tǒng)中,便有了機(jī)會消除與傳統(tǒng)HDD型驅(qū)動器相關(guān)聯(lián)的一些開銷。例如,SSD裝置利用固態(tài)存儲器而不是柱面、磁頭、磁道和扇區(qū)。因此,標(biāo)準(zhǔn)存儲接口無需將經(jīng)由程序員提供的邏輯地址轉(zhuǎn)譯為與特定的讀取/寫入命令相關(guān)聯(lián)的基本柱面、磁頭、磁道和扇區(qū)。然而,雖然存在上文提到的效率低下,但是仍保留了在標(biāo)準(zhǔn)存儲接口中使用這些轉(zhuǎn)譯機(jī)制以便對舊的傳統(tǒng)系統(tǒng)提供向后兼容性。去除或繞過上述標(biāo)準(zhǔn)存儲接口需要新的解決方案和創(chuàng)新,以使得現(xiàn)代的操作系統(tǒng)能夠與基于SSD的存儲裝置通信。這些解決方案和創(chuàng)新將經(jīng)由下文提供的教導(dǎo)加以公開,并在本文中要求其權(quán)利。
      [0013]圖1A闡述示出SSD 001的實(shí)施例的體系結(jié)構(gòu)099,其中SSD 001具有SATA總線 002、SATA接口 003、SATA-NAND控制器004、NAND閃存通道O至NAND閃存通道/?以及NAND閃速存儲器007和008。SATA接口 003是實(shí)例性標(biāo)準(zhǔn)存儲接口。但是,SATA接口 003便于對基本NAND閃速存儲器007和008進(jìn)行讀取和寫入操作,基本NAND閃速存儲器007和008兩者均不利用柱面、磁頭、磁道和扇區(qū)型標(biāo)識方案。另外,SATA-NAND控制器004提供進(jìn)一步解譯以便將SATA特定命令和指令以及尋址信息轉(zhuǎn)換為NAND閃速存儲器007和008兼容的方案。因此,希望消除以上計算效率低下和開銷中的一些缺點(diǎn)。但是,解決方案和創(chuàng)新必須旨在補(bǔ)償這些傳統(tǒng)通信方案(例如,標(biāo)準(zhǔn)存儲接口和裝置驅(qū)動器等)的去除或繞過。
      [0014]直接存儲器存取(DMA)是允許計算機(jī)內(nèi)的某些子系統(tǒng)獨(dú)立于中央處理單元并且潛在地獨(dú)立于托管操作系統(tǒng)存取系統(tǒng)存儲器以進(jìn)行讀取和/或?qū)懭氲默F(xiàn)代計算機(jī)和微處理器的特征。啟用和支持DMA能力的系統(tǒng)可以包括例如盤驅(qū)動器控制器、圖形卡、網(wǎng)絡(luò)卡和聲卡。DMA能力會是有益的,因為它們卸載了主機(jī)計算裝置的OS的責(zé)任和開銷。但是,利用DMA會帶來其它問題,其中的若干問題另外是本申請的主題,并且本文將介紹、教導(dǎo)其解決方案并要求其權(quán)利。
      [0015]例如,申請者在本文中教導(dǎo)了以下解決方案:1)在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備;2)用于協(xié)作NVM (非易失性存儲器)數(shù)據(jù)保護(hù)的分布式體系結(jié)構(gòu);3)用于一致SSD (固態(tài)驅(qū)動器)等待時間的數(shù)據(jù)鏡像;4)用于在DIF (數(shù)據(jù)完整性字段)支持下經(jīng)由同步RAID (獨(dú)立盤冗余陣列)處理來提升控制器的性能和RAS (可靠性、可用性和可服務(wù)性)的解決方案和方法;5)門鈴機(jī)制的仲裁和資源方案,包括攻擊擁塞的公平性和預(yù)防的門鈴仲裁;以及6)利用控制器中的消息傳遞單元和NTB (非透明橋接)的多中斷生成的解決方案和方法。
      [0016]圖1B示出各種公開實(shí)施例可在其中操作并且這些實(shí)施例與之相關(guān)的實(shí)例性體系結(jié)構(gòu)100,本文中特別公開這樣的機(jī)構(gòu),這些機(jī)構(gòu)包括:1)設(shè)備,其中具有到直接存取的存儲設(shè)備的輸入/輸出接口( I/o接口)模塊以及用于代表直接存取的存儲設(shè)備提供分區(qū)表的存儲設(shè)備適配器,其中分區(qū)表實(shí)現(xiàn)通過I/o接口模塊對直接存取的存儲設(shè)備的邏輯塊存取(LBA存取);2)存儲設(shè)備,其中具有多個協(xié)作存儲裝置,所述多個協(xié)作存儲裝置的每個裝置中具有用于與所述多個協(xié)作存儲裝置的剩余協(xié)作存儲裝置通信的多播接口、糾錯碼(ECC)模塊以及異或(XOR)模塊,并且其中存儲設(shè)備還包括RAID (獨(dú)立盤冗余陣列)模塊,RAID模塊用于從在通信上與存儲設(shè)備鏈接的外部裝置接收單個I/O事務(wù)并基于這單個I/O事務(wù)對經(jīng)由多播接口跨越所述多個協(xié)作存儲裝置分成條帶的多個數(shù)據(jù)區(qū)塊進(jìn)一步執(zhí)行多個ECC操作和至少一個XOR功能;3)存儲設(shè)備,其中具有布置到多個NAND陣列中的多個基于NAND(與非)的閃速存儲器組件、在通信上與所述多個NAND陣列對接的NAND控制器以及用于建立寫入到存儲設(shè)備的每個數(shù)據(jù)塊的鏡像副本的塊鏡像邏輯,其中每個鏡像副本將存儲在所述多個NAND陣列之一內(nèi);4)設(shè)備,其中具有到宿主機(jī)的第一輸入/輸出接口(I/0接口)模塊、DMA (直接存儲器存取)模塊和到多個存儲設(shè)備的第二 I/O接口模塊,其中第一 I/O接口模塊用于接收包括即將存儲的數(shù)據(jù)和即將存儲的數(shù)據(jù)的DIF或DIX (數(shù)據(jù)完整性字段或數(shù)據(jù)完整性擴(kuò)展)數(shù)據(jù)的I/O事務(wù),DMA模塊用于將即將存儲的數(shù)據(jù)和即將存儲的數(shù)據(jù)的DIF或DIX數(shù)據(jù)從宿主機(jī)的存儲器移動到設(shè)備本地的存儲器并基于DIF或DIX數(shù)據(jù)同步地計算即將存儲的數(shù)據(jù)的奇偶校驗位,并且第二 I/O接口模塊用于將即將存儲的數(shù)據(jù)以及為即將存儲的數(shù)據(jù)計算的奇偶校驗位從設(shè)備本地的存儲器移動到所述多個存儲設(shè)備;5)設(shè)備,其中具有工作引擎隊列、到宿主機(jī)的輸入/輸出接口(I/O接口)模塊,工作引擎隊列具有用于排隊工作的門鈴空間,I/O接口模塊用于接收門鈴條目以便提交給工作引擎隊列,其中工作引擎隊列內(nèi)的第一隊列結(jié)構(gòu)利用仲裁方案從工作引擎隊列釋放門鈴條目,工作引擎隊列內(nèi)的第二隊列結(jié)構(gòu)利用仲裁方案從工作引擎隊列釋放額外的門鈴條目,其中當(dāng)?shù)谝魂犃薪Y(jié)構(gòu)中的門鈴條目的數(shù)量低于服務(wù)隊列條目(SQE)的閾值數(shù)量時,在第一隊列結(jié)構(gòu)內(nèi)將門鈴條目排隊并從第一隊列結(jié)構(gòu)釋放門鈴條目,并且其中當(dāng)?shù)谝魂犃薪Y(jié)構(gòu)中的門鈴條目的數(shù)量大于SQE的閾值數(shù)量時,在第二隊列結(jié)構(gòu)內(nèi)將額外的門鈴條目排隊并從第二隊列結(jié)構(gòu)釋放額外的門鈴條目;以及6)設(shè)備,其中具有設(shè)備本地的中央處理器單元(CPU)、工作引擎隊列、到宿主機(jī)的輸入/輸出接口(I/O接口)模塊、完成隊列和完成隊列中斷機(jī)制,其中工作引擎隊列具有用于排隊工作的門鈴空間,I/O接口模塊用于接收門鈴條目以便提交給工作引擎隊列,完成隊列具有用于將之前排隊的完成的工作合并為工作引擎隊列中的排隊工作的空間,并且完成隊列中斷機(jī)制用于基于與完成隊列相關(guān)聯(lián)的狀態(tài)啟動中斷。
      [0017]例如,圖1B描繪其中具有主機(jī)操作系統(tǒng)(OS) 120的主機(jī)119,它在通信上與控制器105對接。而控制器105又在通信上與其中具有多個直接存取的存儲設(shè)備子模塊118的直接存取的存儲設(shè)備117對接。如要素199處所描繪,控制器105內(nèi)的存儲設(shè)備適配器提供分區(qū)表以便使直接存取的存儲設(shè)備117對于主機(jī)OS 120可見。這種概念將關(guān)于圖1D額外詳細(xì)地加以描述。如要素198處所描繪,直接存取的存儲設(shè)備子模塊提供它們自己的協(xié)作數(shù)據(jù)保護(hù)和恢復(fù)。這種概念將關(guān)于圖2A、2B和2C額外詳細(xì)地加以描述。圖1還在要素197處描繪直接存取的存儲設(shè)備子模塊提供它們自己的塊級鏡像以便確保一致的低等待時間。這種概念將關(guān)于圖3A、3B和3C額外詳細(xì)地加以描述。圖1還在要素196處描繪標(biāo)為DIF #2的操作,它從本地存儲器進(jìn)行讀取,計算奇偶校驗位,并寫回到本地存儲器,以便以更少的總體輸入/輸出操作實(shí)現(xiàn)改進(jìn)的RAID 5/6算法,并且因此更加有效。這種概念將關(guān)于圖4A、4B、4C、4D、4E、4F和4G額外詳細(xì)地加以描述。圖1還在要素195處描繪對到控制器105的進(jìn)入請求實(shí)現(xiàn)仲裁和優(yōu)先化的門鈴隊列。這種概念將關(guān)于圖5A、5B、5C和額外詳細(xì)地加以描述。并且,圖1還在要素194處描繪中斷合并機(jī)制,它通過有條件地合并(例如,采集、分組、排隊等)到控制器105的請求的正常完成來減小中斷服務(wù)例程(ISR)開銷,同時通過對錯誤狀況進(jìn)行通知來改善RAS。這種概念將關(guān)于圖6A、6B和6C額外詳細(xì)地加以描述。
      [0018]在以下描述中,闡述了眾多具體細(xì)節(jié),例如特定系統(tǒng)、語言、組件等的實(shí)例,以便提供對各種實(shí)施例的充分理解。但是,本領(lǐng)域技術(shù)人員將明白,無需采用這些具體細(xì)節(jié)也可以實(shí)踐本文所公開的實(shí)施例。在其它情況下,沒有詳細(xì)描述公知的素材或方法,以免不必要地使公開實(shí)施例晦澀難懂。
      [0019]除了附圖中所描繪并在本文中加以描述的各種硬件組件之外,實(shí)施例還包括下文描述的各種操作。根據(jù)這些實(shí)施例描述的操作可以由硬件組件來執(zhí)行,或者可以用機(jī)器可執(zhí)行指令來實(shí)施,這些指令可用于導(dǎo)致用這些指令編程的通用或?qū)S锰幚砥鲌?zhí)行這些操作?;蛘?,這些操作可以由硬件和軟件的組合來執(zhí)行。
      [0020]實(shí)施例還涉及用于執(zhí)行本文所公開的操作的設(shè)備。該設(shè)備可以為了需要的目的專門構(gòu)造,或者它可以是通過存儲在計算機(jī)中的計算機(jī)程序選擇性地激活或再配置的通用計算機(jī)。這種計算機(jī)程序可以存儲在計算機(jī)可讀存儲介質(zhì)中,例如但不限于:任何類型的盤,包括軟盤、光盤、CD-ROM和磁-光盤;只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、EPR0M、EEPR0M、磁或光卡;或任何類型的適合存儲電子指令的介質(zhì),每種介質(zhì)耦合到計算機(jī)系統(tǒng)總線。
      [0021]本文介紹的算法和顯示并不與任何特定計算機(jī)或其它設(shè)備固有地相關(guān)。根據(jù)本文的教導(dǎo),各種通用系統(tǒng)可以與程序配合使用,或者構(gòu)造更加專用的設(shè)備來執(zhí)行所需的方法步驟經(jīng)證實(shí)是便利的。各種這些系統(tǒng)的所需結(jié)構(gòu)將如以下描述中所闡述地那樣出現(xiàn)。另外,沒有參考任何特定編程語言來描述實(shí)施例。將明白,可以使用各種編程語言來實(shí)現(xiàn)如本文所描述的實(shí)施例的教導(dǎo)。
      [0022]實(shí)施例可以作為計算機(jī)程序產(chǎn)品或軟件來提供,它可以包括其上存儲有指令的機(jī)器可讀介質(zhì),指令可用于將計算機(jī)系統(tǒng)(或其它電子裝置)編程以便執(zhí)行根據(jù)公開實(shí)施例的過程。機(jī)器可讀介質(zhì)包括用于存儲或傳送機(jī)器(如計算機(jī))可讀形式的信息的任何機(jī)構(gòu)。例如,機(jī)器可讀(如計算機(jī)可讀)介質(zhì)包括機(jī)器(如計算機(jī))可讀存儲介質(zhì)(例如,只讀存儲器(“ROM”)、隨機(jī)存取存儲器(“RAM”)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃速存儲器裝置等)、機(jī)器(如計算機(jī))可讀傳輸介質(zhì)(電、光、聲)等。
      [0023]所公開的任何實(shí)施例可以單獨(dú)使用,或者以任何組合彼此一起使用。盡管各種實(shí)施例可能部分地是因為常規(guī)技術(shù)和方法的缺點(diǎn)而激發(fā)的,其中一些實(shí)施例在本說明書中加以描述或提及,但是這些實(shí)施例不一定要解決或解答這些缺點(diǎn)中的任何缺點(diǎn),而是可以只解決其中的一些缺點(diǎn)、不解決任何缺點(diǎn)或針對沒有直接論述的不同缺點(diǎn)和問題。
      [0024]圖1C示出各種公開實(shí)施例可以在其中操作并且這些實(shí)施例與之相關(guān)的實(shí)例性體系結(jié)構(gòu)101。體系結(jié)構(gòu)101描繪具有能夠在其上操作和/或執(zhí)行的主機(jī)操作系統(tǒng)120的主機(jī)119,主機(jī)操作系統(tǒng)120中具有應(yīng)用102、動詞(verb)103和一個或多個驅(qū)動程序104。還描繪了控制器105,控制器105中具有接口 106、管理(管理的或管理員)命令管理器107、1/
      O(輸入和輸出)管理器108、元數(shù)據(jù)管理模塊109、寫入路徑IlOA和讀取路徑110B、寫入聚合機(jī)構(gòu)111、數(shù)據(jù)保護(hù)機(jī)構(gòu)112、沖洗機(jī)構(gòu)113、垃圾收集機(jī)構(gòu)114、數(shù)據(jù)恢復(fù)機(jī)構(gòu)115和后端I/O機(jī)構(gòu)116。還描繪不受主機(jī)操作系統(tǒng)120的文件系統(tǒng)控制或管理的直接存取的存儲設(shè)備117。在直接存取的存儲設(shè)備117內(nèi)有多個直接存取的存儲設(shè)備子模塊118,這些直接存取的存儲設(shè)備子模塊118可以具有任何眾多變化,而不管本文中是否特別舉例說明,只要它們符合不受主機(jī)操作系統(tǒng)120的本地文件系統(tǒng)控制或管理的非常規(guī)存儲設(shè)備的描述即可。
      [0025]圖1D描繪根據(jù)公開實(shí)施例經(jīng)啟用以便在邏輯驅(qū)動器模型下呈現(xiàn)給主機(jī)操作系統(tǒng)120的直接存取的存儲設(shè)備117和子模塊118的備選實(shí)例性體系結(jié)構(gòu)概況102。
      [0026]根據(jù)公開實(shí)施例,在邏輯驅(qū)動器模型下呈現(xiàn)直接存取的存儲設(shè)備提供了用于作為邏輯卷呈現(xiàn)用于直接映射的存儲設(shè)備118的存儲空間的機(jī)制,從而使得該空間能夠出現(xiàn)在標(biāo)準(zhǔn)操作系統(tǒng)工具和視圖中。本文所使用的術(shù)語“直接存取的存儲設(shè)備”和“直接存儲設(shè)備”是指不通過這種操作系統(tǒng)的本地或內(nèi)部文件系統(tǒng)支持而存取的存儲設(shè)備118。
      [0027]提供標(biāo)準(zhǔn)OS可讀驅(qū)動器分區(qū)130,它可作為塊存儲進(jìn)行存取并用于呈現(xiàn)代表直接存儲設(shè)備的存在以及分配給直接存儲設(shè)備的存儲空間的量的邏輯卷(驅(qū)動器)(例如,經(jīng)由LBA 134)。這種技術(shù)導(dǎo)致“直接映射的存儲設(shè)備”。
      [0028]直接映射的存儲設(shè)備137提供可供應(yīng)用以及OS直接存取的存儲設(shè)備。但是,直接映射的存儲設(shè)備137并不是利用諸如NTFS (新技術(shù)文件系統(tǒng))的標(biāo)準(zhǔn)文件系統(tǒng)來組織的。如果存儲空間對于OS 120看起來并不像邏輯卷(例如,LBA 134),那么不能使用主機(jī)操作系統(tǒng)120的標(biāo)準(zhǔn)工具(例如,本地支持的工具)來查看直接存取的存儲設(shè)備117是否存在,操作系統(tǒng)也不能確定分配給直接存取的存儲設(shè)備117多少存儲空間、有多少空間是可用的、目iu使用了多少空間等等。
      [0029]因此,使得非常規(guī)存儲設(shè)備(例如,未示出的利用邏輯驅(qū)動器的存儲設(shè)備)對于主機(jī)操作系統(tǒng)所熟悉的傳統(tǒng)公用程序可存取,同時實(shí)現(xiàn)了諸多好處,正是為了這些好處而選擇這種非常規(guī)存儲設(shè)備,并且這些好處由操作系統(tǒng)在其上操作和執(zhí)行的主機(jī)計算裝置的設(shè)計者來實(shí)現(xiàn)。
      [0030]目前可用的解決方案無論如何沒有提供通過操作系統(tǒng)的本地文件支持能力和公用程序可直接存取直接存儲設(shè)備137的區(qū)域的機(jī)制。而且,目前可用的解決方案無論如何沒有提供作為邏輯塊存取(LBA)的存儲設(shè)備134來部分或全部地存取這種非常規(guī)存儲設(shè)備(例如,直接存取的存儲設(shè)備)的機(jī)制。此外,目前可用的解決方案無論如何沒有提供可使得分區(qū)數(shù)據(jù)(例如,MBR/分區(qū)表133或邏輯分區(qū)131中的元數(shù)據(jù))對于主機(jī)操作系統(tǒng)可用的機(jī)制,其中分區(qū)數(shù)據(jù)代表在缺乏本文所描述的技術(shù)的情況下否則不可用并且因此對于主機(jī)操作系統(tǒng)120而言實(shí)際上不可見的直接存儲設(shè)備的存在和用于直接存儲設(shè)備的存儲的量。
      [0031]所描述的技術(shù)還可以通過使用存儲裝置或陣列132來進(jìn)一步擴(kuò)展,存儲裝置或陣列132提供LBA和直接存取的存儲設(shè)備117的組合,其中使得這兩種類型的存儲設(shè)備能夠看起來像是來自相同存儲裝置或存儲陣列的邏輯卷。
      [0032]使用標(biāo)準(zhǔn)分區(qū)、同時結(jié)合提供對應(yīng)于直接存取的存儲裝置的邏輯塊存取(LBA)的順應(yīng)裝置134以使得標(biāo)準(zhǔn)OS工具能夠直接讀取和解譯分區(qū)數(shù)據(jù)而無需修改或擴(kuò)大OS工具具有特別的好處,因為可以提供逆兼容性,而不必檢修用于在操作系統(tǒng)控制下管理、存取和查看傳統(tǒng)存儲空間的這種主機(jī)操作系統(tǒng)熟悉的工具。在沒有這種機(jī)制的情況下,用于直接存取的存儲的量對于利用標(biāo)準(zhǔn)OS工具的用戶而言并不可見(在不檢修OS的情況下)。例如,如果用戶具有500GB (千兆字節(jié))存儲裝置,其中200GB用于LBA存儲,而300GB用于直接存取存儲,那么在缺乏所描述的技術(shù)的情況下,在標(biāo)準(zhǔn)OS工具下,只有用于LBA存儲的200GB可看見以用于盤管理,留下剩余部分對于用戶和OS實(shí)際上是不可見的。
      [0033]這些技術(shù)可以特別用于適應(yīng)管理或映射某些FLASH驅(qū)動器的方法以及其它介質(zhì)類型的直接存取的存儲設(shè)備117。
      [0034]直接存取的存儲設(shè)備117的適配器(例如,經(jīng)由例如控制器105或其它有能力的裝置提供的存儲設(shè)備適配器199)代表直接存取存儲設(shè)備117提供分區(qū)表133,其中主機(jī)OS120利用邏輯塊存取(LBA)131存取分區(qū)表133。由控制器105或等效機(jī)構(gòu)提供的邏輯存儲裝置134包括LBA存儲的至少一小部分,即使直接存取存儲設(shè)備117的大部分只用于直接存取存儲,例如由實(shí)例Q所描繪的,其中直接存取存儲設(shè)備117的大部分作為直接存取存儲設(shè)備117保留,只有非常小一部分呈現(xiàn)給主機(jī)OS 120。
      [0035]作為外來文件系統(tǒng)呈現(xiàn)直接存取存儲設(shè)備117有助于防止主機(jī)OS 120嘗試存取相關(guān)聯(lián)的數(shù)據(jù)。存儲設(shè)備的分區(qū)數(shù)據(jù)通常保留在存儲裝置本身上,但是通過直接存取存儲設(shè)備驅(qū)動程序(例如,驅(qū)動程序104或其它合適的驅(qū)動程序)使其同步化也是可能的。
      [0036]直接存取存儲設(shè)備117的出現(xiàn)隨之而來的是這樣一種學(xué)習(xí)曲線,它可以帶來采用該技術(shù)的障礙。本文所描述的實(shí)施例通過使得直接存取存儲設(shè)備117解決方案在技術(shù)上與在主機(jī)OS 120下進(jìn)行硬盤驅(qū)動器和RAID (虛擬驅(qū)動器)管理的現(xiàn)有模型兼容而使得直接存取存儲設(shè)備117解決方案的可用性成為可能,從而使得直接存取存儲設(shè)備117對于用戶更容易理解和接受,用戶可以是計算裝置的最終用戶或是這類主機(jī)119計算裝置的設(shè)計者。
      [0037]所公開的技術(shù)可以實(shí)現(xiàn),并且根據(jù)一些實(shí)施例,可以至少部分地經(jīng)由存儲在直接存取存儲設(shè)備117上的數(shù)據(jù)以及可傳達(dá)到控制器105等內(nèi)的存儲設(shè)備適配器199實(shí)現(xiàn)的鏈路/接口 /鉤來實(shí)現(xiàn)。此外,開放源軟件與第三方接口和解決方案可用于存取實(shí)現(xiàn)數(shù)據(jù),可用于存取用于直接存取存儲設(shè)備117的介質(zhì)上的數(shù)據(jù)的存儲,并且可以利用在合適的權(quán)利、允許和許可下共同提供所描述的特征的機(jī)制。
      [0038]圖2A描繪根據(jù)公開實(shí)施例用于經(jīng)由作為協(xié)作直接存取存儲裝置217操作的端點(diǎn)存儲裝置的集合實(shí)現(xiàn)協(xié)作NVM數(shù)據(jù)保護(hù)和恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的實(shí)例性體系結(jié)構(gòu)概況200。盡管關(guān)于特定存儲介質(zhì)類型進(jìn)行論述,但是所公開的實(shí)施例可以推廣至NVM或具有相同基本優(yōu)點(diǎn)的任何其它類型的存儲設(shè)備(例如,旋轉(zhuǎn)介質(zhì))。
      [0039]根據(jù)公開實(shí)施例,協(xié)作NVM (非易失性存儲器)數(shù)據(jù)保護(hù)的分布式體系結(jié)構(gòu)提供這樣一種機(jī)制,它用于確保數(shù)據(jù)保護(hù)并進(jìn)一步在諸如存儲設(shè)備的固態(tài)驅(qū)動器(SSD)的共同體中分配數(shù)據(jù)保護(hù)和數(shù)據(jù)恢復(fù)215的任務(wù)。所公開的機(jī)制和實(shí)例性實(shí)施例利用PCIe(外圍組件互連Express)250的特征,包括例如PCIe 250的多播能力,并且因此使得能夠在主機(jī)119和基于PCIe 250或與PCIe 250兼容的SSD之間均衡I/O織構(gòu)。盡管作為實(shí)例描述了 PCIe250,但是提供多播能力的任何通信介質(zhì)都可以實(shí)現(xiàn)公開的實(shí)施例。例如,支持多播能力和協(xié)作通信方案的基于互聯(lián)網(wǎng)協(xié)議(IP)的存儲系統(tǒng)可以得益于所描述的技術(shù)。
      [0040]公開在SSD的共同體中分配功能性的數(shù)據(jù)保護(hù)和恢復(fù)215體系結(jié)構(gòu)和補(bǔ)充機(jī)制。由于SSD并入EEC (糾錯碼)和XOR (異或和/或XOR門)操作,所以這種方法再度使用現(xiàn)有硬件,并將主機(jī)或控制器上的數(shù)據(jù)保護(hù)和恢復(fù)115的責(zé)任推給能夠?qū)崿F(xiàn)分布式數(shù)據(jù)保護(hù)和恢復(fù)215的存儲裝置299或SSD,因為加速已經(jīng)駐留在這種基于PCIe 250或與PCIe 250兼容的SSD裝置和存儲裝置299內(nèi)。
      [0041]通過實(shí)踐這些公開實(shí)施例,還可以在該體系結(jié)構(gòu)上以分布式方式實(shí)現(xiàn)RAID,從而將數(shù)據(jù)恢復(fù)115責(zé)任從主機(jī)119卸載到作為能夠執(zhí)行分布式數(shù)據(jù)保護(hù)和恢復(fù)技術(shù)215的存儲裝置299操作的主機(jī)119的端點(diǎn)驅(qū)動器。在之前可用的數(shù)據(jù)保護(hù)體系結(jié)構(gòu)中,主機(jī)119將數(shù)據(jù)聚合以便生成XOR保護(hù)信息,并在驅(qū)動器集合上寫入“帶(band)”。帶是每個驅(qū)動器的數(shù)據(jù)集合以及寫入到驅(qū)動器的保護(hù)條帶,其中每個帶包括寫入到不同驅(qū)動器(例如,不是存儲原始數(shù)據(jù)或數(shù)據(jù)部分的驅(qū)動器)以便在驅(qū)動器集合間平衡保護(hù)數(shù)據(jù)的數(shù)據(jù)保護(hù)條帶。
      [0042]本文公開這樣一種機(jī)制,通過該機(jī)制,不是通過主機(jī)119或甚至控制器115或?qū)崿F(xiàn)用于與直接存取的存儲裝置117通信的DMA存儲技術(shù)的其它控制器來生成或檢查XOR保護(hù)信息,而是通過基于PCIe或與PCIe兼容的分布式SSD和存儲裝置299本身來檢查XOR保護(hù)信息。更具體來說,用于執(zhí)行和確保這種XOR保護(hù)的責(zé)任從主機(jī)119或主機(jī)RAID控制器卸載到基于PCIe或與PCIe兼容的端點(diǎn)SSD存儲裝置299上。
      [0043]對于基于PCIe或與PCIe兼容的驅(qū)動器集合間的每個帶寫入,主機(jī)119或主機(jī)OS120確定對于該特定帶哪個驅(qū)動器將充當(dāng)數(shù)據(jù)保護(hù)條帶。在一個實(shí)施例中,主機(jī)119經(jīng)由PCIe多播將每個驅(qū)動器條帶(例如,對于該帶每個驅(qū)動器的代表性部分集合)寫入到它的代表性驅(qū)動器以及保護(hù)驅(qū)動器。這種方法允許基于PCIe或與PCIe兼容的每個目標(biāo)驅(qū)動器接收其數(shù)據(jù)以用于存儲,而且還使得該寫入序列的當(dāng)前指定的保護(hù)驅(qū)動器能夠接收XOR生成所必需的數(shù)據(jù)。作為寫入事務(wù)的部分,每個驅(qū)動器知道它是該特定事務(wù)的數(shù)據(jù)存儲驅(qū)動器還是反之是XOR生成目標(biāo)驅(qū)動器,在后一情況下,它用作該特定寫入事務(wù)的指定保護(hù)驅(qū)動器(例如,主機(jī)119可以發(fā)信號通知每個驅(qū)動器對于該寫入事務(wù)它的作用是數(shù)據(jù)存儲還是XOR生成,或者每個驅(qū)動器可以從例如報頭、標(biāo)志或其它合適的消息傳遞操作得出它的合適的作用)。
      [0044]特別對于數(shù)據(jù)存儲目標(biāo)驅(qū)動器,寫入事務(wù)僅僅存儲在該驅(qū)動器中以便存儲指向特定目標(biāo)數(shù)據(jù)存儲驅(qū)動器的數(shù)據(jù)。
      [0045]但是,對于XOR生成目標(biāo)驅(qū)動器(例如,該帶的指定保護(hù)驅(qū)動器),驅(qū)動器收集執(zhí)行XOR生成所必需的數(shù)據(jù)(該帶內(nèi)的所有其它數(shù)據(jù)),然后等待下一個多播寫入請求以便基于所收集的數(shù)據(jù)執(zhí)行XOR生成操作。RAID模塊298 (圖2B)可以協(xié)調(diào)XOR生成。作為多播方案的益處,XOR生成所必需的數(shù)據(jù)僅僅是由XOR生成目標(biāo)驅(qū)動器看到的該帶的所有其它多播接收數(shù)據(jù)。
      [0046]在備選實(shí)施例中,主機(jī)119或控制器105將單個I/O事務(wù)寫入到存儲裝置299,并且存儲裝置的RAID模塊298適當(dāng)?shù)貙懭胧聞?wù)的數(shù)據(jù)分區(qū)塊,并啟動多播功能,以使得所有驅(qū)動器接收必需的數(shù)據(jù)區(qū)塊,并使得XOR目標(biāo)驅(qū)動器可以基于依靠多播操作看到的數(shù)據(jù)區(qū)塊生成XOR數(shù)據(jù)。
      [0047]取3+1 RAID集合為例,其中執(zhí)行三次多播寫入。在該實(shí)例中,三個驅(qū)動器接收數(shù)據(jù)以作為目標(biāo)或指定的數(shù)據(jù)存儲驅(qū)動器,而一個/單個指定的保護(hù)驅(qū)動器經(jīng)由多播接收/收集每個寫入,以便從與以數(shù)據(jù)保護(hù)驅(qū)動器為目標(biāo)、但是依靠多播操作對于指定的保護(hù)驅(qū)動器“看見”或可見的這三次寫入相關(guān)聯(lián)的數(shù)據(jù)生成或計算X0R,從而導(dǎo)致對于該特定帶寫入事務(wù)適合作為數(shù)據(jù)保護(hù)條帶存儲在指定保護(hù)驅(qū)動器上的RAID奇偶校驗位數(shù)據(jù)的XOR生成或計算。
      [0048]如上所述,這種方案從主機(jī)119卸載了計算負(fù)擔(dān),因為主機(jī)119、其OS 120、其操作軟件、甚至是主機(jī)的RAID 298控制器都無需計算奇偶校驗位數(shù)據(jù),這是由于將負(fù)擔(dān)分配給了已經(jīng)天然擁有這種能力的該帶寫入事務(wù)的指定保護(hù)驅(qū)動器或存儲裝置299 (例如,如上所述的在通道上在內(nèi)部生成XOR的實(shí)例性SSD裝置)。主機(jī)119可以基于諸如循環(huán)法的不同方法或者鑒于驅(qū)動器的I/O負(fù)載、驅(qū)動器的任何排隊時間、或合適的其它特性將不同的可用驅(qū)動器指定為多個這種寫入事務(wù)中的每個寫入事務(wù)的保護(hù)驅(qū)動器,或者這種存儲裝置299內(nèi)的RAID模塊298可以協(xié)調(diào)數(shù)據(jù)目標(biāo)驅(qū)動器和XOR奇偶校驗位計算目標(biāo)驅(qū)動器的選擇和指定。
      [0049]由于之前可用的解決方案需要通過主機(jī)119或其主機(jī)OS 120軟件來執(zhí)行數(shù)據(jù)保護(hù)和恢復(fù),所以必需提供XOR計算的足夠加速以便防止基于I/O的操作的瓶頸或性能降級。在這類之前技術(shù)不能提供硬件加速的情況下,必須提供軟件算法,其中由于主機(jī)119的處理器上的極端計算負(fù)擔(dān)導(dǎo)致主機(jī)119的顯著性能降低。
      [0050]由于公開的體系結(jié)構(gòu)和技術(shù)經(jīng)由將數(shù)據(jù)多播給目標(biāo)數(shù)據(jù)存儲驅(qū)動器而將數(shù)據(jù)保護(hù)和恢復(fù)負(fù)擔(dān)推給驅(qū)動器或存儲裝置299本身,所以使得RAID模塊298能夠在驅(qū)動器處計算或者已經(jīng)計算了合適的奇偶校驗位數(shù)據(jù),然后存儲這些奇偶校驗位數(shù)據(jù)。通過這些技術(shù),可以獲得顯著的性能增加,而主機(jī)119不必對基于主機(jī)119的XOR計算或基于控制器的XOR計算實(shí)現(xiàn)任何特定的硬件加速機(jī)制。在一個實(shí)施例中,用帶信息標(biāo)注寫入數(shù)據(jù),以使得可用驅(qū)動器可以自行生成XOR數(shù)據(jù),以便從標(biāo)注的數(shù)據(jù)導(dǎo)出它們的作用指定(例如,作為特定寫入事務(wù)的數(shù)據(jù)存儲目標(biāo)驅(qū)動器或指定的保護(hù)驅(qū)動器),用合適的方法圍繞驅(qū)動器旋轉(zhuǎn)以便使讀取性能降級問題減至最小。
      [0051]必要時,也可以在驅(qū)動器級執(zhí)行數(shù)據(jù)恢復(fù)操作,而使主機(jī)不必執(zhí)行XOR重構(gòu)操作。例如,在可用驅(qū)動器以對等方式與其對等驅(qū)動器通信的情況下,使得對等驅(qū)動器能夠利用XOR重構(gòu)數(shù)據(jù),然后將數(shù)據(jù)提交回給主機(jī),從而利用可用驅(qū)動器的分布式能力來執(zhí)行這種數(shù)據(jù)恢復(fù)能力并因此從主機(jī)119卸載這種責(zé)任。
      [0052]反之,目前可用的解決方案將數(shù)據(jù)保護(hù)和恢復(fù)的工作集中在單個實(shí)體(通常是主機(jī)119、其主機(jī)OS 120)上,或者甚至經(jīng)由主機(jī)RAID控制器來集中。本文所描述的技術(shù)并沒有集中這些負(fù)擔(dān),而是將工作/計算開銷的負(fù)載分配給以協(xié)作方式工作的端點(diǎn)驅(qū)動器,從而允許在主機(jī)卸載的情況下進(jìn)行RAID保護(hù),并且進(jìn)一步提供具有重要的增值特征的有能力的裝置,例如本文所公開的實(shí)例性SSD型存儲裝置299。例如,實(shí)例性SSD對于PCIe支持多播294 (圖2B),它可用于將數(shù)據(jù)分配給端點(diǎn)SSD存儲裝置299,并且進(jìn)一步支持在SSD驅(qū)動器之間執(zhí)行對等事務(wù)的能力以便實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的目的(例如,為了丟失數(shù)據(jù)的XOR重構(gòu)的目的讀取數(shù)據(jù)),并且因而允許在指定的保護(hù)驅(qū)動器上生成和存儲RAID奇偶校驗位以便有效地計算XOR奇偶校驗位/保護(hù)數(shù)據(jù)并在多個寫入事務(wù)上的旋轉(zhuǎn)基礎(chǔ)上將其放到指定的端點(diǎn)驅(qū)動器上(或者在必要時,通過利用之前存儲的XOR奇偶校驗位/保護(hù)數(shù)據(jù)來提供數(shù)據(jù)恢復(fù))。
      [0053]圖1C中所描繪的數(shù)據(jù)恢復(fù)機(jī)制115視情況從控制器105卸載或從主機(jī)119卸載并且改為分配給圖1C中所描繪的直接存取存儲裝置117,直接存取存儲裝置117作為現(xiàn)在如圖2A中所述的協(xié)作直接存取存儲裝置217在存儲設(shè)備299內(nèi)操作。在一個實(shí)施例中,直接存取存儲裝置117包括在其上提供基本的非暫時性存儲能力的一個或多個基本閃存陣列218或閃速存儲器組件。每個這樣的閃存陣列218具有補(bǔ)充驅(qū)動器I/F (接口)216,可以經(jīng)由補(bǔ)充驅(qū)動器I/F (接口)216與基本閃存陣列218通信。
      [0054]例如,代替如圖1C中所述的基于主機(jī)119的固件或基于主機(jī)OS 120的軟件,將提供數(shù)據(jù)保護(hù)和恢復(fù)操作115的功能性卸載給使得能夠進(jìn)行上述分布式數(shù)據(jù)保護(hù)215A和數(shù)據(jù)恢復(fù)215B方法的協(xié)作直接存取存儲裝置217。
      [0055]圖2B描繪用于實(shí)現(xiàn)協(xié)作NVM數(shù)據(jù)保護(hù)和恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的備選實(shí)例性體系結(jié)構(gòu)概況201。
      [0056]圖2B描繪如協(xié)作直接存取存儲裝置217所提供的協(xié)作數(shù)據(jù)保護(hù)方案的更詳細(xì)的表示。例如,在所示實(shí)例中,第三個驅(qū)動器指定為該帶的保護(hù)驅(qū)動器或XOR驅(qū)動器296,并且作為PCIe多播操作的部分接收所有區(qū)塊。很清楚,指定的保護(hù)驅(qū)動器/XOR驅(qū)動器296接收并收集(例如,“看到”)發(fā)送給目標(biāo)數(shù)據(jù)存儲驅(qū)動器的所有數(shù)據(jù),盡管不是明確的目標(biāo)數(shù)據(jù)存儲驅(qū)動器。充當(dāng)數(shù)據(jù)存儲驅(qū)動器的所有其它驅(qū)動器接收它們的區(qū)塊295并將其存儲在它們的閃存陣列218 (或適用的基本非暫時性物理存儲介質(zhì))中,并且在該特定實(shí)例中對于該特定寫入事務(wù),第三個驅(qū)動器從所接收的收集的多播數(shù)據(jù)構(gòu)造XOR區(qū)塊,并將生成的XOR區(qū)塊存儲在它自己的閃存陣列218中,如存儲在其上的XOR 296所描繪。注意,XOR驅(qū)動器隨每個事務(wù)改變/旋轉(zhuǎn),以免使可用驅(qū)動器的整體讀取性能降級。
      [0057]在一個實(shí)施例中,RAID模塊298提供將數(shù)據(jù)分成多個區(qū)塊295的能力,并且在協(xié)調(diào)努力中對協(xié)作直接存取存儲裝置217進(jìn)一步啟動合適的多播294操作。根據(jù)一個實(shí)施例,RAID模塊298以及協(xié)作直接存取存儲裝置217集成在單個存儲設(shè)備299中,例如集成在SSD驅(qū)動器內(nèi)。數(shù)據(jù)可以從例如寫入聚合機(jī)構(gòu)111(例如,示為位于控制器105內(nèi)的寫入聚合機(jī)構(gòu)111)到達(dá)。
      [0058]圖2C描繪用于構(gòu)造協(xié)作數(shù)據(jù)恢復(fù)方案的分布式體系結(jié)構(gòu)和補(bǔ)充方法的另一備選實(shí)例性體系結(jié)構(gòu)概況202。
      [0059]圖2C描繪同樣通過將這種負(fù)擔(dān)分配給可用端點(diǎn)裝置的共同體并從主機(jī)119卸載這種計算負(fù)擔(dān)來整體在驅(qū)動器的共同體內(nèi)執(zhí)行的實(shí)例性數(shù)據(jù)恢復(fù)路徑。在該實(shí)例中,對驅(qū)動器之一的讀取280標(biāo)識需要對故障塊讀取280進(jìn)行修復(fù)的故障(塊損壞或其它錯誤)。可以經(jīng)由在例如控制器105內(nèi)的讀取路徑IlOB啟動讀取。遭遇故障塊讀取280的驅(qū)動器(例如,涂黑的區(qū)塊281)響應(yīng)地向驅(qū)動器的共同體發(fā)出多播讀取,其中每個驅(qū)動器基于所讀取的特定條帶用它們的對應(yīng)數(shù)據(jù)部分做出應(yīng)答。這里示出,經(jīng)由多播返回兩個數(shù)據(jù)區(qū)塊281,并且還返回具有用于恢復(fù)故障數(shù)據(jù)區(qū)塊(涂黑的區(qū)塊281)所必需的計算的奇偶校驗位數(shù)據(jù)的XOR區(qū)塊282。然后,遭遇錯誤或故障塊讀取的驅(qū)動器重構(gòu)數(shù)據(jù),并在合適時將重構(gòu)/恢復(fù)的數(shù)據(jù)返回給主機(jī)119或返回給請求用戶或應(yīng)用。在一些實(shí)施例中,驅(qū)動器另外還返回發(fā)生讀取故障的消息或指示,該消息或指示與響應(yīng)一起聯(lián)運(yùn)或作為獨(dú)立的通知。
      [0060]除了經(jīng)由作為協(xié)作直接存取存儲裝置217操作的分布式端點(diǎn)裝置提供這些特征的能力之外,所描述的技術(shù)還可以進(jìn)行服務(wù)以便減少主機(jī)119的成本和復(fù)雜性,這是因為經(jīng)由硬件加速、軟件或控制器,這樣的主機(jī)119不再需要它自己的基于RAID的能力;并且所描述的實(shí)施例還通過有能力的SSD裝置或其它兼容的端點(diǎn)裝置提供這種協(xié)作數(shù)據(jù)保護(hù)特征的能力對這些裝置引入額外的價值。此外,由于所公開的實(shí)施例的分布式特性,所以在多個裝置間對計算負(fù)載進(jìn)行了負(fù)載平衡,從而潛在地提供比基于集中化(例如,基于主機(jī)119)的解決方案改進(jìn)的性能和速度。另外,均衡端點(diǎn)裝置的分布式方法還使得在PCIe織構(gòu)內(nèi)傳送的數(shù)據(jù)的量減至最少,從而通過減少對PCIe織構(gòu)資源的競爭而提高I/O性能。例如,將寫入多播給目標(biāo)驅(qū)動器和數(shù)據(jù)保護(hù)驅(qū)動器,而不是為任何特定區(qū)塊281個別發(fā)送,因此在3+1RAID配置(例如,如上所述的配置)中,只執(zhí)行三次(3x)多播寫入,而不是四次(4x)典型的非多播寫入,其中第四次非多播寫入是指向該特定條帶寫入的指定奇偶校驗位驅(qū)動器或保護(hù)驅(qū)動器的XOR區(qū)塊。
      [0061]由于還從主機(jī)119卸載了數(shù)據(jù)恢復(fù)負(fù)擔(dān),所以當(dāng)驅(qū)動器檢測到發(fā)生了內(nèi)部數(shù)據(jù)錯誤(例如,通過其本地內(nèi)部奇偶校驗位)時,討論中的驅(qū)動器從集合中的對等驅(qū)動器讀取數(shù)據(jù)以便對發(fā)出的讀取請求做出響應(yīng),并且另外在本地自動地更新其數(shù)據(jù)以便校正該錯誤,從而再次地不只導(dǎo)致主機(jī)119上的減輕的負(fù)擔(dān),而且還導(dǎo)致PCIe織構(gòu)的減輕的I/O負(fù)擔(dān)。
      [0062]在又一個實(shí)施例中,還從主機(jī)119卸載驅(qū)動器重建,并且還經(jīng)由協(xié)作直接存取存儲裝置217以分布式協(xié)作方式執(zhí)行驅(qū)動器重建。例如,在傳統(tǒng)的RAID系統(tǒng)中,主機(jī)119進(jìn)入重建模式以便從RAID集合中的所有剩余驅(qū)動器讀取數(shù)據(jù),接著重新生成丟失數(shù)據(jù),然后將丟失數(shù)據(jù)寫回到正在重構(gòu)的新驅(qū)動器上。該過程在主機(jī)119上以及在主機(jī)119與其存儲設(shè)備之間的通信接口上造成了巨大的計算負(fù)擔(dān)。
      [0063]反之,根據(jù)本文所描述的公開實(shí)施例,集合中的每個協(xié)作直接存取存儲裝置217協(xié)作地執(zhí)行新驅(qū)動器的重建(每個驅(qū)動器商定或協(xié)調(diào)它將為正在重構(gòu)的新驅(qū)動器重新生成哪些區(qū)塊281)。以此方式,每個協(xié)作直接存取存儲裝置217對RAID集合中的其它驅(qū)動器執(zhí)行多播讀取以便重建丟失數(shù)據(jù),然后將丟失數(shù)據(jù)寫入到新驅(qū)動器,所有這些都可以在不涉及主機(jī)119的情況下執(zhí)行,并且因此,沒有對主機(jī)119施加任何計算負(fù)擔(dān),主機(jī)119因此可以進(jìn)行其它操作。由于經(jīng)由RAID集合中的每個剩余的協(xié)作直接存取存儲裝置217進(jìn)行驅(qū)動器的重構(gòu),所以重構(gòu)更加快速地進(jìn)行,并且使重建窗最小化,從而經(jīng)由該RAID集合進(jìn)一步降低雙故障模式并發(fā)的風(fēng)險并且因此潛在地降低持久數(shù)據(jù)丟失或不可恢復(fù)數(shù)據(jù)丟失的風(fēng)險(例如,其中對于雙并發(fā)恢復(fù),存儲“P”模式并發(fā)數(shù)據(jù),而無需額外的基于“Q”的奇偶校驗位)。例如,在驅(qū)動器發(fā)生故障或者用即將重構(gòu)的驅(qū)動器取代驅(qū)動器的情況下,如果在完全重構(gòu)新驅(qū)動器之前發(fā)生第二次故障,那么由于這第二次故障,不存在足以重構(gòu)第二驅(qū)動器的數(shù)據(jù)。因此,重構(gòu)時間的任何減少都會降低雙并發(fā)故障情形的風(fēng)險。
      [0064]圖3A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致的SSD (固態(tài)驅(qū)動器)301等待時間的體系結(jié)構(gòu)的實(shí)例性體系結(jié)構(gòu)概況300。根據(jù)公開實(shí)施例,所描繪的SSD裝置可以作為根據(jù)公開實(shí)施例的直接存取存儲裝置117操作,或者可以備選地作為在主機(jī)119或主機(jī)OS 120的控制和管理下操作的基于NAND 310的SSD 301端點(diǎn)存儲裝置操作。
      [0065]根據(jù)公開實(shí)施例,用于一致SSD (固態(tài)驅(qū)動器)等待時間的數(shù)據(jù)鏡像提供一種用于經(jīng)由固態(tài)驅(qū)動器(SSD)301來確保一致等待時間和數(shù)據(jù)鏡像的機(jī)制,其中SSD 301遞送比機(jī)械硬盤驅(qū)動器(HDD)更低等待時間的存儲。
      [0066]基于NAND (與非或與非門)310的閃速存儲器是用于SSD 301的基本非暫時性物理存儲介質(zhì)的一種類型。目前可用的NAND 310技術(shù)需要一定的管理開銷來使它用于存儲。例如,必須一次擦除裝置的大塊,以便可以將新數(shù)據(jù)寫入到NAND裝置。執(zhí)行塊擦除會花費(fèi)很長的時間,并且在擦除操作進(jìn)行中時,NAND裝置不能允許在這種擦除周期期間(例如,擦除指定塊所花費(fèi)的時間)對裝置上的數(shù)據(jù)進(jìn)行任何存取。如果將讀取請求呈現(xiàn)給NAND裝置,那么它必須延遲或排隊,直到NAND裝置完成它的擦除操作,從而導(dǎo)致對裝置存取存在潛在顯著的等待時間延遲。
      [0067]盡管這種擦除操作很少發(fā)生并且在利用這種基于NAND的裝置時不常遇到,但是它們無論如何都會發(fā)生,并且在進(jìn)行中時,它們可能會在讀取請求與處理塊擦除之間造成以上競爭/沖突,從而導(dǎo)致將其它數(shù)據(jù)指向正在擦除的相同裝置的任何I/O的高等待時間周期。這種場景造成到SSD的I/O等待時間的高可變性。
      [0068]為了補(bǔ)償這種問題,本文公開用于管理SSD裝置中的基于NAND的FLASH的機(jī)制,以使得對于所有數(shù)據(jù)塊(例如,鏡像塊)存在復(fù)本塊,然后采用使得可以在任何時間、即使在由于特定NAND裝置上的擦除塊操作而導(dǎo)致請求的塊的第一副本不可存取時仍可以存取任何數(shù)據(jù)塊的一個副本的方式管理NAND裝置。通過實(shí)踐公開的體系結(jié)構(gòu)、方法和公開的實(shí)施例,到基于NAND的SSD (或具有類似限制的其它存儲裝置)的I/O的可變性得以大大減小,從而對于等待時間敏感的應(yīng)用產(chǎn)生更一致且可預(yù)測的裝置。
      [0069]圖3A描繪具有附連到控制器315的NAND裝置的陣列305的基于NAND的SSD的簡化框圖??刂破?15經(jīng)由諸如SATA、SAS、PCIe等的I/O對接技術(shù)與主機(jī)119連接?;蛘撸琋AND裝置的控制器可以連接到控制器105,而控制器105又與主機(jī)119連接。
      [0070]圖3B描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致的SSD (固態(tài)驅(qū)動器)301等待時間的體系結(jié)構(gòu)的備選實(shí)例性體系結(jié)構(gòu)概況302。具體來說,圖3B描繪具有讀取請求312的基于NAND 310的單個SSD存儲裝置,其中讀取請求312由于目前在相同的基于NAND的SSD存儲裝置中進(jìn)行有效擦除操作311而阻塞,從而導(dǎo)致對該裝置上的塊的I/O請求313延遲,因而導(dǎo)致裝置存取的高度可變且不一致的等待時間。
      [0071]圖3C描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)數(shù)據(jù)鏡像以便確保一致的SSD (固態(tài)驅(qū)動器)等待時間的體系結(jié)構(gòu)的另一備選實(shí)例性體系結(jié)構(gòu)概況303。更具體來說,所存儲的每個數(shù)據(jù)塊的副本或鏡像分布在SSD裝置中的NAND裝置的陣列中,從而導(dǎo)致所存儲的任何數(shù)據(jù)塊的鏡像冗余度,以使得在擦除操作導(dǎo)致I/O請求阻塞的情況下,公開的體系結(jié)構(gòu)和方法使得能夠改為存取數(shù)據(jù)塊的鏡像數(shù)據(jù)塊或副本,而不必等待塊擦除周期完成。
      [0072]例如,圖中描繪了 NAND-m 398和NAND-m,399 (NAND-m 一撇),它們每個都存儲了相同數(shù)據(jù)塊的鏡像或復(fù)本。鏡像數(shù)據(jù)塊312存儲在兩個裝置中,以使得一個副本可以在任何時間存取,而不管待處理的擦除操作是否在進(jìn)行中,否則擦除操作將導(dǎo)致I/O請求313延遲。公開的機(jī)制還對各種NAND裝置的擦除活動提供管理,以使得存儲有相同數(shù)據(jù)塊的兩個副本的兩個NAND裝置(NAND-m和NAND-m’)決不會同時擦除,例如經(jīng)由SSD 301的塊鏡像邏輯。管理擦除周期的開始和完成允許SSD裝置的NAND控制器確??偸强梢砸砸恢碌牡却龝r間存取任何數(shù)據(jù)塊,從而由于實(shí)踐所公開的用于管理NAND裝置陣列的方法和體系結(jié)構(gòu)而導(dǎo)致對SSD裝置的存取請求具有大得多的可預(yù)測性和顯著減輕的可變性。
      [0073]在圖3C所闡述的描繪中,NAND-m 398示為由于所描繪的對鏡像數(shù)據(jù)塊的一個副本的擦除操作而不可用。盡管存在對NAND-m 398裝置的目前擦除操作,但是NAND-m’ 399(NAND-m—撇)仍保持可用,并且因此,鏡像數(shù)據(jù)塊對于來自鏡子NAND-m’ 399的I/O存取請求仍保持可用。因此,通過實(shí)踐公開的機(jī)制,可以在正常較低的NAND等待時間以及可預(yù)測并且一致的NAND裝置存取等待時間的情況下完成對數(shù)據(jù)塊“X”的I/O請求(例如,對于鏡像數(shù)據(jù)塊的這兩個副本或鏡像中的哪一個不可知)。
      [0074]公開的機(jī)制的實(shí)例性算法如下:
      1.塊“M”需要擦除;
      2.在主要的NAND-m裝置398上擦除塊“M”;
      3.在擦除操作過程中,從NAND-m’(NAND-m—撇)399處的鏡像裝置為所有新的I/O讀取提供服務(wù);
      4.當(dāng)擦除操作完成時,在NAND-m’裝置399(NAND-m—撇)上執(zhí)行擦除;以及
      5.在NAND-m’(NAND-m 一撇)399的擦除操作過程中,從NAND-m 398處的主要裝置為所有新的I/O讀取提供服務(wù)。
      [0075]盡管目前的基于NAND的SSD裝置實(shí)現(xiàn)了使得擦除操作沖突造成等待時間不一致和增加的可變性的概率最小化的復(fù)雜算法,但是沒有一種算法能夠完全消除擦除操作沖突。由于與高得多的容量和每千兆字節(jié)更低成本的HDD相比,基于NAND的SSD裝置的就每千兆字節(jié)成本比的成本,以本文所教導(dǎo)的方式鏡像或復(fù)制所有數(shù)據(jù)塊并不直觀。這種解決方案之所以不直觀是因為,提出的解決方案消耗了空間以作為保證一致等待時間的權(quán)衡。然而,存在這樣的應(yīng)用,其中與基于NAND的SSD裝置的容量相比,基于NAND的SSD裝置的一致可預(yù)測并且較低的等待時間更重要,并且因此,公開的方法解決了對于I/O存取請求等待時間周期高度敏感的這種目標(biāo)應(yīng)用的需要。將優(yōu)先級放在通過使用數(shù)據(jù)塊鏡像或存儲數(shù)據(jù)塊副本來使等待時間可變性最小化之上將目前公開的實(shí)施例與使得這種擦除操作沖突最小化但不保證消除這種擦除操作沖突的更復(fù)雜的算法加以區(qū)分。
      [0076]圖4A描繪根據(jù)公開實(shí)施例用于實(shí)現(xiàn)改進(jìn)的RAID 5/6性能的體系結(jié)構(gòu)的實(shí)例性體系結(jié)構(gòu)概況400。所描繪的基本裝置可以作為根據(jù)公開實(shí)施例的直接存取存儲裝置117操作,或者備選地可以作為基本端點(diǎn)存儲裝置操作,這些基本端點(diǎn)存儲裝置在主機(jī)119或主機(jī)OS 120、或代表主機(jī)119或在例如實(shí)現(xiàn)所公開的體系結(jié)構(gòu)、機(jī)制和方法以便實(shí)現(xiàn)如所公開的改進(jìn)的RAID 5/6性能的控制器105內(nèi)操作的主機(jī)RAID控制器的控制和管理下操作。
      [0077]根據(jù)公開實(shí)施例,用于在DIF支持下經(jīng)由同步RAID處理提升控制器的性能和RAS的解決方案和方法提供一種通過控制器中的專用芯片組硬件來提供最高性能的機(jī)制,該專用芯片組硬件能夠在多個源間執(zhí)行奇偶校驗位字段的計算,具體來說是執(zhí)行RAID 5/6命名法中的XOR (異或)和GF (伽羅瓦域)乘法運(yùn)算。
      [0078]在諸如數(shù)據(jù)庫、文件存儲和其它關(guān)鍵領(lǐng)域的存儲技術(shù)中已經(jīng)使用獨(dú)立盤冗余陣列(RAID)的概念來增加數(shù)據(jù)存儲系統(tǒng)的可用性?;谟布腞AID通過普遍在專用控制器中實(shí)現(xiàn)以便在多個源間計算奇偶校驗位字段的專用芯片組硬件來提供最高性能。在RAID 5/6命名法中,這種基于硬件的功能性包括XOR和GF乘法運(yùn)算。數(shù)據(jù)完整性是企業(yè)和業(yè)務(wù)部門中的存儲系統(tǒng)的重要特征。數(shù)據(jù)完整性字段或DIF提供保護(hù)主機(jī)適配器和存儲裝置之間的通信以便實(shí)現(xiàn)真實(shí)的端對端數(shù)據(jù)完整性的系統(tǒng)解決方案。盡可能早地進(jìn)行壞數(shù)據(jù)的隔離和/或校正,從而具有對系統(tǒng)完整性和性能的最小影響。利用TlO型DIF允許將保護(hù)范圍和DIF操作擴(kuò)展為包括DIF插入、DIF驗證和DIF刪除操作。
      [0079]當(dāng)用RAID傳送數(shù)據(jù)時,如果系統(tǒng)不具有合適的錯誤檢測方案,那么數(shù)據(jù)破壞的可能性很大。RAID系統(tǒng)保證考量的設(shè)計考量的至少兩個方面是對于高端存儲實(shí)現(xiàn)增加介質(zhì)上的實(shí)現(xiàn)的適應(yīng)性和適宜性。具體來說是,I)高吞吐量;以及2)高RAS (可靠性、可用性和可服務(wù)性)能力。
      [0080]在故障容忍RAID配置中發(fā)生的靜默數(shù)據(jù)破壞否定了具有RAID實(shí)現(xiàn)的價值,因為RAID接著存儲不可用的破壞數(shù)據(jù)。為了消除這種缺陷并改進(jìn)RAID系統(tǒng)的整體RAS,本文公開DIF和具有DIF能力的RAID的概念以作為用于提供和利用端到端CRC (循環(huán)冗余檢查)能力的機(jī)制。DIF (數(shù)據(jù)完整性字段)和DIX (數(shù)據(jù)完整性擴(kuò)展)436是用于通過TlO型CRC和/或校驗和能力來保衛(wèi)數(shù)據(jù)的機(jī)制。
      [0081]但是,根據(jù)各種實(shí)施例如本文所公開的具有DIF的RAID的實(shí)現(xiàn)需要更加復(fù)雜的邏輯結(jié)合RAID處理引擎來一前一后地執(zhí)行DIF校驗上的操作和更新438操作。
      [0082]之前已知的基于RAID的算法實(shí)現(xiàn)了將數(shù)據(jù)從主機(jī)傳送到本地高速緩存、對本地數(shù)據(jù)執(zhí)行奇偶校驗位計算、然后將數(shù)據(jù)和奇偶校驗位結(jié)果寫入到盤的串行過程。
      [0083]本文公開一種通過專用硬件芯片組的同步流體系結(jié)構(gòu),其中使得該專用硬件芯片組能夠?qū)崿F(xiàn)同步流以便實(shí)現(xiàn)改進(jìn)的RAID算法,這將在下文額外詳細(xì)地加以描述。例如,可以利用可從本申請的合法受讓者Intel公司購得的DMA (直接存儲器存取)芯片組或CBDMA(Crystal Beach DMA)芯片組來實(shí)現(xiàn)用于如本文所公開的改進(jìn)的RAID存儲解決方案的公開的同步流體系結(jié)構(gòu)和方法,由此優(yōu)化數(shù)據(jù)傳送功能和奇偶校驗位計算功能,從而潛在地導(dǎo)致更高的總應(yīng)用帶寬、更低的功率、改進(jìn)的RAS和減少的存儲器利用率。
      [0084]公開的用于改進(jìn)的RAID存儲解決方案的同步流體系結(jié)構(gòu)和方法還提供額外的優(yōu)點(diǎn),例如減少軟件開銷并進(jìn)一步啟用小生境操作,例如對于存儲設(shè)備IOP (集成式I/O處理器)應(yīng)用的雙播,從而導(dǎo)致硅面積的節(jié)省。
      [0085]對存儲系統(tǒng)的容量、速度和可用性的增加的需求提供了對廉價盤冗余陣列(RAID)行業(yè)范圍的出現(xiàn)的推動。RAID-5和RAID-6 (例如,RAID 5/6)方法分別對單模式故障和雙模式故障(有時又稱為單并發(fā)和雙并發(fā)故障模式、單驅(qū)動器和雙驅(qū)動器故障模式等)提供了數(shù)據(jù)保護(hù)。RAID 5使得能夠通過實(shí)現(xiàn)單個P奇偶校驗位數(shù)據(jù)來從單個驅(qū)動器上的災(zāi)難性損失進(jìn)行完整恢復(fù),而RAID 6使得能夠通過實(shí)現(xiàn)P奇偶校驗位數(shù)據(jù)和普遍稱為Q奇偶校驗位數(shù)據(jù)的額外實(shí)現(xiàn)來從兩個獨(dú)立的同步驅(qū)動器故障上的災(zāi)難性損失進(jìn)行完整恢復(fù)。RAID 5/6的概念并不新,而是本文公開用于改進(jìn)的RAID存儲解決方案的同步流體系結(jié)構(gòu)和方法以便在之前所知的基礎(chǔ)上優(yōu)化RAID 5/6。
      [0086]RAID高速緩存410代表待寫入到構(gòu)成盤陣列437處的目標(biāo)RAID集合的基本盤的最新寫入數(shù)據(jù)。之前已知的RAID 5/6實(shí)現(xiàn)遭受受到系統(tǒng)存儲器432限制并且因此成為瓶頸的流式寫入性能。作為同步流體系結(jié)構(gòu)和方法的部分,本文公開利用DMA能力來將數(shù)據(jù)從應(yīng)用系統(tǒng)存儲器區(qū)域移動到本地系統(tǒng)存儲器區(qū)域以便實(shí)現(xiàn)RAID 5/6和數(shù)據(jù)完整性檢查。這種優(yōu)化消除了讀取/寫入操作,從而增強(qiáng)了系統(tǒng)性能。因此,與本文所描述的改進(jìn)的同步流體系結(jié)構(gòu)和方法相比,之前已知的機(jī)制需要額外的讀取/寫入操作,并且因此不那么有效。
      [0087]通過使用如本文所公開的用于改進(jìn)的RAID的同步流體系結(jié)構(gòu)和方法,并且另外通過使用基于DMA的能力,可以實(shí)現(xiàn)數(shù)據(jù)加速和增加的RAS覆蓋范圍,從而對于根據(jù)公開實(shí)施例的一個或多個公開實(shí)施例操作的基本RAID實(shí)現(xiàn)提高整體寫入吞吐量。此外,所公開的體系結(jié)構(gòu)和方法導(dǎo)致從主機(jī)119系統(tǒng)的CPU (中央處理單元)卸載計算開銷,從而經(jīng)由實(shí)現(xiàn)硬件提供諸如RAID 5/6處理、數(shù)據(jù)完整性計算和多播的專用芯片組硬件功能性。[0088]之前已知的通過I/O存儲控制器執(zhí)行的RAID 5/6流式寫入操作涉及將源數(shù)據(jù)(對于寫入)從主機(jī)119傳送到主機(jī)的本地存儲器。反之,本文所公開的同步流體系結(jié)構(gòu)和方法利用存儲控制器中的DMA引擎來從本地存儲器讀取所傳送的數(shù)據(jù)以便計算奇偶校驗位并將它寫回到本地存儲器。即使在利用基于DMA的體系結(jié)構(gòu)的情況下,I/O存儲控制器的DMA引擎仍從本地存儲器讀取所傳送的數(shù)據(jù)以便計算奇偶校驗位,然后將奇偶校驗位數(shù)據(jù)寫回到本地存儲器,如434處的DIF #2操作所描繪,即拉數(shù)據(jù)并將數(shù)據(jù)寫回到RAID高速緩存410,在此之后,DMA引擎將接著對所傳送的數(shù)據(jù)和之前寫入的計算的奇偶校驗位數(shù)據(jù)執(zhí)行讀取操作,然后將所有數(shù)據(jù)寫入到構(gòu)成盤陣列437處的目標(biāo)RAID集合的存儲裝置。可見,這種之前已知的技術(shù)涉及存儲器接口間的多次讀取/寫入,從而導(dǎo)致對資源的高需求,并造成與競爭相同的有限資源的其它應(yīng)用和系統(tǒng)操作的競爭。
      [0089]本文所公開的同步流體系結(jié)構(gòu)和方法利用DIF通過將源數(shù)據(jù)傳送和奇偶校驗位計算組合到單個操作中的能力、從而與如上文所描述的之前已知的技術(shù)相比消除了讀取/寫入操作來對于流式數(shù)據(jù)集合提供存儲器帶寬的顯著改進(jìn)。因此,同步流體系結(jié)構(gòu)和方法使得能夠以更少的I/o資源需求將計算的奇偶校驗位和傳送的數(shù)據(jù)寫入到它們的最終目的地(例如,寫入到構(gòu)成RAID集合的目標(biāo)目的地驅(qū)動器,例如HDD、SCSI驅(qū)動器(小型計算機(jī)系統(tǒng)接口驅(qū)動器)、或基于閃存或SSD的驅(qū)動器,例如那些可以例如作為直接存取的存儲設(shè)備117實(shí)現(xiàn)或作為端點(diǎn)驅(qū)動器實(shí)現(xiàn)的驅(qū)動器,端點(diǎn)驅(qū)動器在主機(jī)119、主機(jī)OS 120、或代表主機(jī)操作的控制器(例如,實(shí)現(xiàn)如本文所公開的同步流體系結(jié)構(gòu)和方法的存儲控制器或控制器105)的控制下)。
      [0090]在利用用于改進(jìn)的RAID存儲解決方案的同步流體系結(jié)構(gòu)和方法的公開實(shí)施例中,DMA復(fù)制操作使得在同步計算奇偶校驗位的情況下將數(shù)據(jù)從主機(jī)119的應(yīng)用緩沖器寫入到I/O處理器的RAID高速緩存(本地存儲器),從而使得能夠在不延遲寫入到盤的情況下完成對主機(jī)119的I/O操作,同時使得否則將與額外的讀取/寫入操作相關(guān)聯(lián)的存儲器開銷最小化,因而提高應(yīng)用數(shù)據(jù)吞吐量。
      [0091]圖4A還示出從容易理解的高級角度描繪同步流體系結(jié)構(gòu)和方法的ROL (負(fù)載上RAID)實(shí)現(xiàn)或ROC (芯片上RAID)實(shí)現(xiàn)的具有DIF (DIX) 436的RAID。例如,在ROL和ROC的情況下,主機(jī)OS 120的應(yīng)用驅(qū)動器將DIX格式的數(shù)據(jù)存儲在主機(jī)119的系統(tǒng)存儲器432中。但是,在一些情況下,也可以在主機(jī)119上創(chuàng)建499 DIF格式(例如,標(biāo)為“步驟O”)。因此,在這樣的實(shí)施例中,系統(tǒng)存儲器432中存儲有App數(shù)據(jù)441和DIX 436。當(dāng)將在主機(jī)119處創(chuàng)建的DIF數(shù)據(jù)復(fù)制到RAID高速緩存410上時(其中,現(xiàn)在復(fù)制DIF數(shù)據(jù)標(biāo)為要素434處的DIF #2),RAID高速緩存410中存儲有App數(shù)據(jù)441和虛擬LBA DIF 451。DMA體系結(jié)構(gòu)將檢查或驗證DIF信息或DIX 436(例如,由DIF #1項表示),并執(zhí)行更新或轉(zhuǎn)換操作438。DIF #2處還描繪具有在雙并發(fā)數(shù)據(jù)保護(hù)方案的情況下創(chuàng)建P和Q奇偶校驗位的DIF操作的RAID。最后,SAS控制器(串行附連SCSI總線控制器)執(zhí)行由要素433處的DIF #3所表示的DMA操作,以便檢查所生成的DIF數(shù)據(jù)源和P/Q奇偶校驗位數(shù)據(jù)并將其移動到RAID集合的目標(biāo)盤或盤陣列437。因此,盤陣列437中存儲有App數(shù)據(jù)441和物理LBA DIF 431。所公開的同步流體系結(jié)構(gòu)和方法可以在運(yùn)行中將用于檢查和更新的DIF #1的操作與RAID奇偶校驗位生成操作DIF #2 434加以組合。
      [0092]對于其中寫入數(shù)據(jù)小于RAID條帶的一般I/O寫入情形,需要對盤進(jìn)行讀取修改寫入(RMW)操作。但是,在發(fā)出多個相繼寫入的較大流式寫入的實(shí)施例中,可以收集整個數(shù)據(jù)條帶,以使得不需要對盤進(jìn)行RMW。在這種實(shí)施例中,根據(jù)從主機(jī)復(fù)制的新數(shù)據(jù)計算新的奇偶校驗位。因此,RAID堆棧不需要等待累積足以創(chuàng)建完整條帶的I/O寫入請求。在該實(shí)施例中,對于XOR計算形成描述符,其中通常將源數(shù)據(jù)從I/O (主機(jī))復(fù)制到存儲器,并且通常計算XOR結(jié)果并將其存儲在系統(tǒng)存儲器432中。
      [0093]諸如在盤復(fù)制過程中發(fā)生的大型I/O寫入操作的一個實(shí)例是到盤的25GB HD-DVD復(fù)制,其中單個I/o至少是條帶長度那么大或大于條帶長度。在該實(shí)例中,RAID堆棧不需要累積多個I/O請求便可發(fā)出DMA/X0R操作并在執(zhí)行XOR時將數(shù)據(jù)復(fù)制到高速緩存。同步流體系結(jié)構(gòu)和方法使得X0R/PQ操作的這種新能力成為可能,其中它將數(shù)據(jù)復(fù)制和RAID加
      以組合。
      [0094]補(bǔ)充RAID軟件在準(zhǔn)備組合的DMA/X0R操作之前管理I/O請求的邏輯-物理轉(zhuǎn)譯。這種改進(jìn)的特征可以直接對RAID軟件堆?;蚝线m的擴(kuò)展實(shí)現(xiàn),其中與I/O緩存相關(guān)聯(lián)的任務(wù)因而涉及與XOR處理組合。
      [0095]通過對于RAID計算消除一次從存儲器的讀取來達(dá)到更高吞吐量,以便減少存儲器帶寬需求。這種改進(jìn)可以直接轉(zhuǎn)化為流式寫入以及已知的當(dāng)利用之前已知的技術(shù)時受到存儲器限制的大型寫入工作負(fù)載的可以計量的基準(zhǔn)性能改進(jìn)。
      [0096]通過從主機(jī)119的CPU卸載計算需求而在DMA支持體系結(jié)構(gòu)中同步執(zhí)行RAID-5/6和數(shù)據(jù)完整性檢查438,達(dá)到了更高的RAS覆蓋范圍,并且因此提高了 IPC (每個時鐘的指令),消除了 SSE LI抖動,并改善了高速緩存未命中,所有這些都導(dǎo)致增強(qiáng)的RAS覆蓋范圍。 [0097]對于變動大小的隨機(jī)服務(wù)器工作負(fù)載,條帶大小(例如,RAID-5/6陣列的8KB)必須等于或小于預(yù)期的I/o大小,以便能看到這種基準(zhǔn)化改進(jìn)。因此,必須相應(yīng)地調(diào)諧系統(tǒng)以便消除奇偶校驗位的RMW,并使特定服務(wù)器工作負(fù)載的存儲性能最大化,從而得出以上性能益處。
      [0098]表1捕獲根據(jù)一些實(shí)施例經(jīng)由所公開的用于改進(jìn)的RAID存儲解決方案(包括正常數(shù)據(jù)、DIF編碼數(shù)據(jù)和自動轉(zhuǎn)換為DIF的DIX編碼數(shù)據(jù))的同步流體系結(jié)構(gòu)和方法提供的各種創(chuàng)新。表中的lb、lc、2c、3a處所表示的星形(*)選項代表由所公開的同步流體系結(jié)構(gòu)和方法提供、而利用之前已知的RAID 5/6處理機(jī)制無法達(dá)到的新創(chuàng)新。
      [0099]表1-具有DIF/DIX的RAID優(yōu)化功能
      【權(quán)利要求】
      1.一種設(shè)備,包括: 到直接存取的存儲設(shè)備的輸入/輸出接口( I/o接口)模塊;以及 存儲設(shè)備適配器,用于代表所述直接存取的存儲設(shè)備提供分區(qū)表,其中所述分區(qū)表實(shí)現(xiàn)通過所述I/o接口模塊對所述直接存取的存儲設(shè)備的邏輯塊存取(LBA存取)。
      2.如權(quán)利要求1所述的設(shè)備,其中所述直接存取的存儲設(shè)備獨(dú)立于主機(jī)、主機(jī)操作系統(tǒng)和/或主機(jī)管理的文件系統(tǒng)操作,并且不受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理或控制。
      3.如權(quán)利要求2所述的設(shè)備,其中所述直接存取的存儲設(shè)備可經(jīng)由應(yīng)用直接存取,所述應(yīng)用由所述主機(jī)或所述主機(jī)操作系統(tǒng)托管并在所述主機(jī)或所述主機(jī)操作系統(tǒng)上執(zhí)行。
      4.如權(quán)利要求1所述的設(shè)備,其中所述存儲設(shè)備適配器還向在通信上與所述設(shè)備對接的主機(jī)呈現(xiàn)LBA存取裝置,所述LBA存取裝置支持對所述直接存取的存儲設(shè)備的主機(jī)發(fā)起的邏輯塊存取請求(LBA請求)。
      5.如權(quán)利要求1所述的設(shè)備,其中用于代表所述直接存取的存儲設(shè)備提供所述分區(qū)表的存儲設(shè)備適配器包括用于實(shí)現(xiàn)、維護(hù)和存儲所述分區(qū)表的存儲設(shè)備適配器。
      6.如權(quán)利要求1所述的設(shè)備,其中用于提供所述分區(qū)表的存儲設(shè)備適配器包括用于在直接存取驅(qū)動器到所述直接存取的存儲設(shè)備的方向上合成所述分區(qū)表的存儲設(shè)備適配器。
      7.如權(quán)利要求1 所述的設(shè)備,其中在控制器內(nèi)實(shí)現(xiàn)所述設(shè)備。
      8.如權(quán)利要求7所述的設(shè)備,其中所述控制器包括控制器。
      9.如權(quán)利要求7所述的設(shè)備,其中所述控制器包括: 本地控制器中央處理器單元(CPU); 本地控制器存儲器; PCIe (外圍組件互連Express)接口,用于在通信上鏈接所述控制器和宿主機(jī);以及 控制器接口模塊,用于經(jīng)由所述PCIe接口與所述宿主機(jī)進(jìn)行指令通信。
      10.如權(quán)利要求9所述的設(shè)備: 其中所述控制器接口模塊從所述宿主機(jī)接收對存儲在所述直接存取存儲設(shè)備上的數(shù)據(jù)的LBA請求;并且 其中所述控制器經(jīng)由所述存儲設(shè)備適配器的通過所述控制器的所述I/O接口模塊實(shí)現(xiàn)的對所述直接存取的存儲設(shè)備的LBA存取來履行來自所述宿主機(jī)的所述LBA請求。
      11.一種存儲設(shè)備,包括: 多個協(xié)作存儲裝置,所述多個協(xié)作存儲裝置中的每個裝置包括: 多播接口,用于與所述多個協(xié)作存儲裝置的剩余協(xié)作存儲裝置通信, 糾錯碼(ECC)模塊,以及 異或(XOR)模塊; RAID (獨(dú)立盤冗余陣列)模塊,用于從在通信上與所述存儲設(shè)備鏈接的外部裝置接收單個I/O事務(wù),并基于所述單個I/O事務(wù)對經(jīng)由所述多播接口跨越所述多個協(xié)作存儲裝置分成條帶的多個數(shù)據(jù)區(qū)塊進(jìn)一步執(zhí)行多個ECC操作和至少一個XOR功能。
      12.如權(quán)利要求11所述的存儲設(shè)備: 其中來自所述外部裝置的所述單個I/O事務(wù)包括指定即將存儲在所述存儲設(shè)備上的數(shù)據(jù)的寫入I/O事務(wù);其中所述寫入I/o事務(wù)沒有為所述指定的數(shù)據(jù)提供奇偶校驗位數(shù)據(jù)或XOR保護(hù)信息;其中所述RAID模塊將所述單個I/O事務(wù)的所述指定的數(shù)據(jù)分為多個數(shù)據(jù)區(qū)塊并啟動將所述多個數(shù)據(jù)區(qū)塊多播到所述多個協(xié)作存儲裝置中的指定目標(biāo)驅(qū)動器; 其中所述多個協(xié)作存儲裝置中的非指定目標(biāo)驅(qū)動器經(jīng)由所述多播接收所述多個數(shù)據(jù)區(qū)塊,基于經(jīng)由所述多播接收的所述多個數(shù)據(jù)區(qū)塊生成XOR保護(hù)信息,并將所述生成的XOR保護(hù)信息作為XOR區(qū)塊加以存儲。
      13.如權(quán)利要求11所述的存儲設(shè)備: 其中來自所述外部裝置的所述單個I/o事務(wù)包括指定即將從所述存儲設(shè)備檢索的數(shù)據(jù)的讀取I/o事務(wù); 其中所述讀取I/o事務(wù)指定用于檢索的數(shù)據(jù)塊,而無需為所述指定的數(shù)據(jù)塊指定數(shù)據(jù)區(qū)塊位置或XOR區(qū)塊位置; 其中所述RAID模炔基于指定用于檢索的所述數(shù)據(jù)塊確定所述指定數(shù)據(jù)塊的數(shù)據(jù)區(qū)塊位置和XOR區(qū)塊位置; 其中所述RAID模塊確定,如所述多個協(xié)作存儲裝置之一的相應(yīng)ECC模塊所報道,所述多個數(shù)據(jù)區(qū)塊位置之一沒有通過ECC檢查; 其中所述RAID模塊執(zhí)行XOR操作以便利用剩余數(shù)據(jù)區(qū)塊位置和所述XOR區(qū)塊位置經(jīng)由在所述多個協(xié)作存儲裝置中的多播讀取重構(gòu)經(jīng)確定沒有通過所述ECC檢查的所述一個數(shù)據(jù)區(qū)塊位置;并且 其中所述存儲設(shè)備在履行所述單個I/O事務(wù)中將所述指定的數(shù)據(jù)塊返回到所述外部>j-U ρ?α裝直。
      14.如權(quán)利要求11所述的存儲設(shè)備: 其中所述存儲裝置是其中集成了所述多個協(xié)作存儲裝置的SSD (固態(tài)驅(qū)動器);并且其中所述SSD將通過經(jīng)由所述單個I/O事務(wù)指定的I/O讀取請求所觸發(fā)的XOR操作錯誤報道回給所述外部裝置。
      15.如權(quán)利要求11所述的存儲設(shè)備,其中所述多個協(xié)作存儲裝置構(gòu)成協(xié)作直接存取存儲裝置,所述協(xié)作直接存取存儲裝置獨(dú)立于主機(jī)、主機(jī)操作系統(tǒng)和/或主機(jī)管理的文件系統(tǒng)操作,并且不受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理或控制。
      16.如權(quán)利要求15所述的存儲設(shè)備,其中所述協(xié)作直接存取存儲設(shè)備可經(jīng)由應(yīng)用直接存取,所述應(yīng)用由所述主機(jī)或所述主機(jī)操作系統(tǒng)托管并在所述主機(jī)或所述主機(jī)操作系統(tǒng)上執(zhí)行。
      17.如權(quán)利要求16所述的存儲設(shè)備,其中所述協(xié)作直接存取存儲裝置在通信上與控制器對接,所述控制器具有與所述協(xié)作直接存取存儲裝置通信的輸入/輸出接口(I/O接口)模塊,并且其中所述協(xié)作直接存取存儲裝置通過代表所述控制器在本地提供本地數(shù)據(jù)保護(hù)和本地數(shù)據(jù)恢復(fù)能力而從所述控制器卸載數(shù)據(jù)保護(hù)和數(shù)據(jù)恢復(fù)責(zé)任。
      18.如權(quán)利要求17所述的存儲設(shè)備,其中所述控制器包括這樣的控制器,所述控制器中包含: 本地控制器中央處理器單元(CPU); 本地控制器存儲器;PCIe (外圍組件互連Express)接口,用于在通信上鏈接所述控制器和宿主機(jī);以及 控制器接口模塊,用于經(jīng)由所述PCIe接口與所述宿主機(jī)進(jìn)行I/O操作和指令通信,所述通信的I/O操作將轉(zhuǎn)播給所述協(xié)作直接存取存儲裝置。
      19.如權(quán)利要求11所述的存儲設(shè)備,其中所述多個協(xié)作存儲裝置構(gòu)成協(xié)作端點(diǎn)存儲裝置,所述協(xié)作端點(diǎn)存儲裝置在主機(jī)、主機(jī)操作系統(tǒng)和/或主機(jī)管理的文件系統(tǒng)的控制下操作,并且受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理或控制。
      20.如權(quán)利要求19所述的存儲設(shè)備,其中所述協(xié)作端點(diǎn)存儲裝置在通信上與宿主機(jī)對接,所述宿主機(jī)具有與所述協(xié)作端點(diǎn)存儲裝置通信的輸入/輸出接口(I/o接口 )模塊,并且其中所述協(xié)作端點(diǎn)存儲裝置通過代表所述宿主機(jī)在本地提供本地數(shù)據(jù)保護(hù)和本地數(shù)據(jù)恢復(fù)能力而從所述宿主機(jī)卸載數(shù)據(jù)保護(hù)和數(shù)據(jù)恢復(fù)責(zé)任。
      21.一種存儲設(shè)備,包括: 布置到多個NAND (與非)陣列中的多個基于NAND的閃速存儲器組件; 在通信上與所述多個NAND陣列對接的NAND控制器;以及 用于建立寫入到所述存儲設(shè)備的每個數(shù)據(jù)塊的鏡像副本的塊鏡像邏輯,每個鏡像副本將存儲在所述多個NAND陣列之一內(nèi)。
      22.如權(quán)利要求21所述的存儲設(shè)備,其中用于建立寫入到所述存儲設(shè)備的每個數(shù)據(jù)塊的所述鏡像副本的所述塊鏡像邏輯包括用于在所述多個NAND陣列中的一個NAND陣列內(nèi)存儲每個數(shù)據(jù)塊的每個鏡像副本的塊鏡像邏輯,其中所述多個NAND陣列的所述一個NAND陣列不同于所述多個NAND陣列中的其上存儲每個鏡像副本的對應(yīng)數(shù)據(jù)塊的NAND陣列。
      23.如權(quán)利要求21所述的存儲設(shè)備: 其中所述塊鏡像邏輯將所述多個基于NAND的閃速存儲器組件之一指定為第一 NAND位置以用于存儲數(shù)據(jù)塊;并且 其中所述塊鏡像邏輯將所述多個基于NAND的閃速存儲器組件的第二組件指定為第二NAND位置(NAND位置一撇)以用于存儲在所述第一 NAND位置內(nèi)所存儲的所述數(shù)據(jù)塊的所述鏡像副本。
      24.如權(quán)利要求23所述的存儲設(shè)備,其中所述塊鏡像邏輯還在所述多個NAND陣列中為對應(yīng)于任何數(shù)據(jù)塊和所述數(shù)據(jù)塊的鏡像副本的每個第一 NAND位置和第二 NAND位置一撇維持排他性。
      25.如權(quán)利要求21所述的存儲設(shè)備: 其中所述NAND控制器還在通信上鏈接到外部裝置; 其中所述NAND控制器用于從所述外部裝置接收I/O事務(wù);并且 其中所述存儲設(shè)備經(jīng)由所述NAND控制器結(jié)合經(jīng)由所述多個NAND陣列的所述塊鏡像邏輯履行來自所述外部裝置的所述I/O事務(wù)。
      26.如權(quán)利要求25所述的存儲設(shè)備: 其中來自所述外部裝置的所述I/O事務(wù)包括用于指定即將存儲在所述存儲設(shè)備上的數(shù)據(jù)塊的寫入I/O事務(wù); 其中所述塊鏡像邏輯用于將所述指定的數(shù)據(jù)塊寫入到所述多個NAND陣列中的第一NAND陣列;并且 其中所述塊鏡像邏輯用于將所述指定的數(shù)據(jù)塊的鏡像副本寫入到所述多個NAND陣列中的第二 NAND陣列,其中所述多個NAND陣列中的所述第一 NAND陣列和所述多個NAND陣列中的所述第二 NAND陣列不同。
      27.如權(quán)利要求25所述的存儲設(shè)備: 其中來自所述外部裝置的所述I/O事務(wù)包括用于指定即將從所述存儲設(shè)備檢索的數(shù)據(jù)塊的讀取I/o事務(wù); 其中所述塊鏡像邏輯用于確定其上存儲所述指定的數(shù)據(jù)塊的所述多個NAND陣列的第一NAND陣列; 其中所述塊鏡像邏輯用于確定其上存儲所述指定的數(shù)據(jù)塊的所述多個NAND陣列的所述第一 NAND陣列正在處理有效擦除操作并且不可用于檢索所述指定的數(shù)據(jù)塊; 其中所述塊鏡像邏輯用于確定其上存儲所述指定數(shù)據(jù)塊的所述鏡像副本的所述多個NAND陣列的第二 NAND陣列;并且 其中所述塊鏡像邏輯用于在履行所述讀取I/O事務(wù)中從所述多個NAND陣列的所述第二NAND陣列檢索所述指定數(shù)據(jù)塊的所述鏡像副本。
      28.如權(quán)利要求27所述的存儲設(shè)備,其中所述塊鏡像邏輯防止同時向其上存儲所述指定數(shù)據(jù)塊的所述多個NAND陣列的所述第一 NAND陣列和其上存儲所述指定數(shù)據(jù)塊的所述鏡像副本的所述多個NAND陣列的所述第二 NAND陣列發(fā)出有效擦除操作,以便保證所述指定數(shù)據(jù)塊或所述指定數(shù)據(jù)塊的所述鏡像副本始終可用。
      29.權(quán)利要求21所述的存儲設(shè)備: 其中所述存儲裝置是SSD (固態(tài)驅(qū)動器),在所述SSD中集成了布置到所述多個NAND陣列中的所述多個基于NAND的閃速存儲器組件,并且在所述SSD中還集成了所述NAND控制器;并且 其中所述SSD的所述NAND控制器用于實(shí)現(xiàn)所述SSD的所述塊鏡像邏輯,并且 其中所述SSD用于作為以下之一進(jìn)行操作: 1)直接存取存儲裝置,它獨(dú)立于主機(jī)、主機(jī)操作系統(tǒng)和/或主機(jī)管理的文件系統(tǒng)操作并且不受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理或控制,所述直接存取存儲裝置可經(jīng)由應(yīng)用直接存取,所述應(yīng)用由所述主機(jī)或所述主機(jī)操作系統(tǒng)托管并在所述主機(jī)或所述主機(jī)操作系統(tǒng)上執(zhí)行,其中所述直接存取存儲裝置在操作上與外部控制器對接,所述外部控制器作為與所述SSD的所述NAND控制器通信的所述外部裝置操作;或 2)端點(diǎn)存儲裝置,它在所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的控制下操作并且受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理和控制,其中所述端點(diǎn)存儲裝置在通信上與所述主機(jī)對接,所述主機(jī)作為與所述SSD的所述NAND控制器通信的所述外部裝置操作。
      30.如權(quán)利要求21所述的存儲設(shè)備: 其中所述存儲裝置是SSD (固態(tài)驅(qū)動器);并且 其中所述外部裝置包括控制器,所述控制器中包含: 本地控制器中央處理器單元(CPU); 本地控制器存儲器; PCIe (外部組件互連Express)接口,用于在通信上鏈接所述控制器和宿主機(jī);以及控制器接口模塊,用于經(jīng)由所述PCIe接口與所述宿主機(jī)進(jìn)行I/O操作和指令通信,所述通信的I/O操作將轉(zhuǎn)播給所述SSD。
      31.一種設(shè)備,包括: 到宿主機(jī)的第一輸入/輸出接口(I/O接口)模塊,所述第一 I/O接口模塊用于接收包括即將存儲的數(shù)據(jù)和所述即將存儲的數(shù)據(jù)的DIF或DIX (數(shù)據(jù)完整性字段或數(shù)據(jù)完整性擴(kuò)展)數(shù)據(jù)的I/O事務(wù); DMA (直接存儲器存取)模塊,用于將所述即將存儲的數(shù)據(jù)以及所述即將存儲的數(shù)據(jù)的DIF或DIX數(shù)據(jù)從所述宿主機(jī)的存儲器移動到位于所述設(shè)備本地的存儲器,并基于所述DIF或DIX數(shù)據(jù)同步地計算所述即將存儲的數(shù)據(jù)的奇偶校驗位;以及 到多個存儲設(shè)備的第二 I/O接口模塊,所述第二 I/O接口模塊用于將所述即將存儲的數(shù)據(jù)以及所述即將存儲的數(shù)據(jù)的所述計算的奇偶校驗位從位于所述設(shè)備本地的所述存儲器移動到所述多個存儲設(shè)備。
      32.如權(quán)利要求31所述的設(shè)備: 其中所述DMA模塊還中斷位于所述設(shè)備本地的中央處理單元核(CPU核);并且 其中位于所述設(shè)備本地的所述CPU核響應(yīng)地將完成通知投寄到所述宿主機(jī)的所述存儲器中。
      33.如權(quán)利要求32所述的設(shè)備: 其中位于所述設(shè)備本地的所述CPU核還構(gòu)建供盤控制器處理的命令,所述盤控制器在通信上經(jīng)由到所述多個存儲設(shè)備的所述第二 I/o接口模塊與所述設(shè)備對接; 其中位于所述設(shè)備本地的所述CPU核將所述命令投寄到位于所述設(shè)備本地的消息傳遞單元;并且 其中位于所述設(shè)備本地的所述CPU核將到所述命令的鏈路投寄到所述盤控制器中。
      34.如權(quán)利要求33所述的設(shè)備: 其中響應(yīng)于投寄到所述盤控制器中的所述命令,所述盤控制器提取到投寄到所述盤控制器的所述命令的所述鏈路;并且 其中響應(yīng)于將所述即將存儲的數(shù)據(jù)以及所述即將存儲的數(shù)據(jù)的所述計算的奇偶校驗位從位于所述設(shè)備本地的所述存儲器移動到所述多個存儲設(shè)備,所述第二 I/O接口還將第二完成通知投寄到所述消息傳遞單元;并且 其中所述第二 I/O接口還中斷位于所述設(shè)備本地的所述CPU核。
      35.如權(quán)利要求31所述的設(shè)備,其中包括即將存儲的數(shù)據(jù)和所述即將存儲的數(shù)據(jù)的DIF或DIX數(shù)據(jù)的所述I/O事務(wù)包括數(shù)據(jù)流,所述數(shù)據(jù)流具有編碼到所述流上的所述即將存儲的數(shù)據(jù)以及所述即將存儲的數(shù)據(jù)的所述DIF或DIX數(shù)據(jù)。
      36.如權(quán)利要求31所述的設(shè)備,其中用于基于所述DIF或DIX數(shù)據(jù)同步地計算所述即將存儲的數(shù)據(jù)的奇偶校驗位的所述DMA模塊還包括這樣的DMA模塊,它在同步計算所述即將存儲的數(shù)據(jù)的所 述奇偶校驗位的同時插入DIF數(shù)據(jù)或檢查編碼數(shù)據(jù)的DIF數(shù)據(jù)或?qū)IX數(shù)據(jù)轉(zhuǎn)換為DIF數(shù)據(jù)。
      37.如權(quán)利要求31所述的設(shè)備,其中用于基于所述DIF或DIX數(shù)據(jù)同步地計算所述即將存儲的數(shù)據(jù)的奇偶校驗位的所述DMA模塊包括用于計算P和Q奇偶校驗位的DMA模塊,其中P奇偶校驗位代表基于XOR (異或)操作的奇偶校驗位計算,并且其中Q奇偶校驗位代表基于伽羅瓦域(GF)乘法運(yùn)算的奇偶校驗位計算,P和Q奇偶校驗位的所述計算足以實(shí)現(xiàn)對于雙并發(fā)故障模式可復(fù)原的RAID-6。
      38.如權(quán)利要求31所述的設(shè)備,其中用于將所述即將存儲的數(shù)據(jù)以及所述即將存儲的數(shù)據(jù)的所述計算的奇偶校驗位從位于所述設(shè)備本地的所述存儲器移動到所述多個存儲設(shè)備的所述第二 I/O接口模塊包括用于跨越所述多個存儲設(shè)備實(shí)現(xiàn)寬度優(yōu)先填充操作的第二I/o接口模塊。
      39.如權(quán)利要求31所述的設(shè)備,其中在控制器內(nèi)實(shí)現(xiàn)所述設(shè)備,所述控制器包括: 位于所述控制器本地的中央處理單元核(CPU核); 位于所述控制器本地的緩存存儲器; PCIe (外圍組件互連Express)接口,用于實(shí)現(xiàn)到所述宿主機(jī)的所述第一輸入/輸出接口模塊并在通信上鏈接所述控制器和所述宿主機(jī);以及 控制器接口模塊,用于經(jīng)由所述PCIe接口與所述宿主機(jī)進(jìn)行指令通信。
      40.如權(quán)利要求1所述的設(shè)備,其中所述多個存儲設(shè)備中的每個存儲設(shè)備作為獨(dú)立于所述宿主機(jī)、宿主機(jī)操作系統(tǒng)和/或宿主機(jī)管理的文件系統(tǒng)操作的直接存取存儲裝置操作,其中每個直接存取存儲裝置不受所述宿主機(jī)、所述宿主機(jī)操作系統(tǒng)和/或所述宿主機(jī)管理的文件系統(tǒng)的管理或控制,每個直接存取存儲裝置可經(jīng)由應(yīng)用直接存取,所述應(yīng)用由所述宿主機(jī)或所述宿主機(jī)操作系統(tǒng)托管并在所述宿主機(jī)或所述宿主機(jī)操作系統(tǒng)上執(zhí)行,并且其中每個直接存取存 儲裝置在通信上經(jīng)由到所述多個存儲設(shè)備的所述第二 I/o接口模塊與所述控制器對接。
      41.一種設(shè)備,包括: 具有排隊工作的門鈴空間的工作引擎隊列; 到宿主機(jī)的輸入/輸出接口(I/O接口)模塊,所述I/O接口模塊用于接收門鈴條目以便提交給所述工作引擎隊列; 位于所述工作引擎隊列內(nèi)的第一隊列結(jié)構(gòu),用于利用仲裁方案從所述工作引擎隊列釋放門鈴條目; 位于所述工作引擎隊列內(nèi)的第二隊列結(jié)構(gòu),用于利用所述仲裁方案從所述工作引擎隊列釋放額外的門鈴條目; 其中當(dāng)所述第一隊列結(jié)構(gòu)中的門鈴條目的數(shù)量低于服務(wù)隊列條目(SQE)的閾值數(shù)量時,在所述第一隊列結(jié)構(gòu)內(nèi)將所述門鈴條目排隊并從所述第一隊列結(jié)構(gòu)釋放所述門鈴條目;并且 其中當(dāng)所述第一隊列結(jié)構(gòu)中的門鈴條目的數(shù)量大于SQE的所述閾值數(shù)量時,在所述第二隊列結(jié)構(gòu)內(nèi)將所述額外門鈴條目排隊。
      42.如權(quán)利要求41所述的設(shè)備,還包括位于所述工作引擎隊列內(nèi)的管理隊列結(jié)構(gòu),用于存儲和釋放作為管理門鈴消息經(jīng)由所述輸入/輸出接口模塊從所述主機(jī)到達(dá)的管理工作。
      43.如權(quán)利要求41所述的設(shè)備,還包括到直接存取存儲裝置的第二I/O接口模塊;并且 其中經(jīng)接收以便提交給所述工作引擎隊列的所述門鈴條目包括對所述直接存取存儲裝置請求I/O事務(wù)的存儲設(shè)備處理工作。
      44.如權(quán)利要求43所述的設(shè)備,其中所述直接存取的存儲裝置獨(dú)立于所述主機(jī)、主機(jī)操作系統(tǒng)和/或主機(jī)管理的文件系統(tǒng)操作,并且不受所述主機(jī)、所述主機(jī)操作系統(tǒng)和/或所述主機(jī)管理的文件系統(tǒng)的管理或控制。
      45.如權(quán)利要求44所述的設(shè)備,其中所述直接存取的存儲設(shè)備可依據(jù)經(jīng)由所述工作引擎隊列提交對所述直接存取存儲裝置請求I/O事務(wù)的所述存儲設(shè)備處理工作經(jīng)由應(yīng)用直接存取,所述應(yīng)用由所述主機(jī)或所述主機(jī)操作系統(tǒng)托管并在所述主機(jī)或所述主機(jī)操作系統(tǒng)上執(zhí)行。
      46.如權(quán)利要求41所述的設(shè)備,其中對于出錯或惡意的門鈴條目請求對所述第一隊列結(jié)構(gòu)的門鈴條目進(jìn)行錯誤檢查,并且在通過所述錯誤檢查時將其放到所述第一隊列結(jié)構(gòu)中,或者在沒有通過所述錯誤檢查時將其從進(jìn)一步的排隊、處理和仲裁中丟棄。
      47.如權(quán)利要求41所述的設(shè)備,其中對所述第二隊列結(jié)構(gòu)的門鈴條目進(jìn)行CAM檢查(針對“內(nèi)容可尋址存儲器”進(jìn)行檢查)以便基于與所述相應(yīng)的門鈴條目的服務(wù)隊列標(biāo)識符(SQid)匹配的CAM條目確定在所述第二隊列結(jié)構(gòu)內(nèi)是否存在所述相應(yīng)門鈴條目的所述匹配的SQid,并且一旦通過所述CAM檢查,便將其放到所述第二隊列結(jié)構(gòu)中,或者如果沒有通過所述CAM檢查,那么將其從進(jìn)一步的排隊、處理和仲裁中丟棄。
      48.如權(quán)利要求41所述的設(shè)備,還包括用于維持在所述第一隊列結(jié)構(gòu)中所允許的最大SQE數(shù)量的配置空間以及用于存儲在所述第一隊列結(jié)構(gòu)中目前排隊的多個SQE的存儲器空間;并且 其中將經(jīng)接收以便提交給所述工作引擎隊列的所有門鈴條目放到所述第一隊列結(jié)構(gòu)中,直到所述第一隊列結(jié)構(gòu)達(dá)到如所述配置空間內(nèi)所維持的在所述第一隊列結(jié)構(gòu)中所允許的最大SQE數(shù)量,并且其 中將經(jīng)接收以便提交給所述工作引擎隊列的額外門鈴條目放到所述第二隊列結(jié)構(gòu)中,直到所述第一隊列結(jié)構(gòu)中的SQE的數(shù)量下降為低于在所述第一隊列結(jié)構(gòu)中所允許的SQE的閾值數(shù)量。
      49.如權(quán)利要求41所述的設(shè)備,其中在控制器內(nèi)實(shí)現(xiàn)所述設(shè)備。
      50.如權(quán)利要求49所述的設(shè)備,其中所述控制器包括這樣的控制器,所述控制器包括: 本地控制器中央處理器單元(CPU); 本地控制器存儲器; PCIe (外圍組件互連Express)接口,用于在通信上鏈接所述控制器和所述主機(jī); 控制器接口模塊,用于經(jīng)由所述PCIe接口與所述主機(jī)進(jìn)行指令和I/O事務(wù)請求通信; 到直接存取存儲裝置的第二 I/O接口模塊;并且 其中所述控制器接口模塊將I/O事務(wù)請求呈現(xiàn)給所述第二 I/O接口模塊以便經(jīng)由在通信上與所述控制器對接的所述直接存取存儲裝置履行所述I/O事務(wù)請求。
      51.一種設(shè)備,包括: 位于所述設(shè)備本地的中央處理器單元(CPU); 具有排隊工作的門鈴空間的工作引擎隊列; 到宿主機(jī)的輸入/輸出接口(I/O接口)模塊,所述I/O接口模塊用于接收門鈴條目以便提交給所述工作引擎隊列; 完成隊列,具有用于將之前排隊的完成的工作合并為所述工作引擎隊列中的排隊工作的空間;以及完成隊列中斷機(jī)構(gòu),用于基于與所述完成隊列相關(guān)聯(lián)的狀態(tài)啟動中斷。
      52.如權(quán)利要求51所述的設(shè)備,其中所述完成隊列中斷機(jī)構(gòu)包括: 本地CPU中斷機(jī)構(gòu),用于基于與所述完成隊列相關(guān)聯(lián)的所述狀態(tài)中斷位于所述設(shè)備本地的所述CPU;以及 宿主機(jī)CPU中斷機(jī)構(gòu),用于基于與所述完成隊列相關(guān)聯(lián)的所述狀態(tài)中斷所述宿主機(jī)的CPU。
      53.如權(quán)利要求52所述的設(shè)備,其中宿主機(jī)CPU中斷機(jī)構(gòu)對于所述宿主機(jī)實(shí)現(xiàn)MSI(消息信令中斷)或MS1-X (消息信令中斷擴(kuò)展)。
      54.如權(quán)利要求53所述的設(shè)備,其中對所述宿主機(jī)的所述MSI或MS1-X結(jié)合對應(yīng)于所述宿主機(jī)CPU中斷機(jī)構(gòu)以及另外對應(yīng)于宿主機(jī)CPU錯誤中斷機(jī)構(gòu)的每一者的專用地址和數(shù)據(jù)向量操作。
      55.如權(quán)利要求51所述的設(shè)備,還包括錯誤中斷機(jī)構(gòu),用于基于對與所述設(shè)備相關(guān)聯(lián)的驅(qū)動器有影響或?qū)λ鲈O(shè)備的消息傳遞單元有影響的錯誤的通知立即啟動錯誤中斷。
      56.如權(quán)利要求55所述的設(shè)備,其中所述錯誤中斷機(jī)構(gòu)包括: 本地CPU錯誤中斷機(jī)構(gòu),用于基于所述錯誤的通知立即中斷位于所述設(shè)備本地的所述CPU ;以及 宿主機(jī)CPU錯誤中斷機(jī)構(gòu),用于基于所述錯誤的通知立即中斷所述宿主機(jī)的CPU,其中所述宿主機(jī)CPU錯誤中斷機(jī)構(gòu)經(jīng)由NTB (非透明橋接)對所述宿主機(jī)實(shí)現(xiàn)MSI (消息信令中斷)或MS1-X (消息信令中斷擴(kuò)展)。
      57.如權(quán)利要求51所述的設(shè)備,其中用于基于與所述完成隊列相關(guān)聯(lián)的所述狀態(tài)啟動所述中斷的所述完成隊列中斷機(jī)構(gòu)包括用于基于所述完成隊列啟動所述中斷的隊列中斷機(jī)構(gòu),所述完成隊列合并了在不啟動所述中斷的情況下超過指定即將在所述完成隊列中維持的最大完成工作數(shù)的合并數(shù)的多個完成工作。
      58.如權(quán)利要求51所述的設(shè)備,其中用于基于與所述完成隊列相關(guān)聯(lián)的所述狀態(tài)啟動所述中斷的所述完成隊列中斷機(jī)構(gòu)包括用于基于所述完成隊列啟動所述中斷的隊列中斷機(jī)構(gòu),所述完成隊列合并了在不啟動所述中斷的情況下超過指定用于合并所述完成隊列中的完成工作的最大時間周期的合并計時器的時間周期的完成工作。
      59.如權(quán)利要求58所述的設(shè)備,其中在啟動中斷之前,所述合并計時器實(shí)現(xiàn)最小和最大延遲,其中如果就在為完成工作投寄新的完成條目之前所述合并計時器到期,那么將觀察到最小時間周期,其中將使所述新完成條目與隨后啟動的中斷相關(guān)聯(lián)。
      60.如權(quán)利要求51所述的設(shè)備,其中所述控制器包括這樣的控制器,所述控制器包括: 位于所述設(shè)備本地的中央處理器單元(CPU)以作為本地控制器CPU ; 本地控制器存儲器; PCIe (外圍組件互連Express)接口,用于經(jīng)由到所述宿主機(jī)的所述輸入/輸出接口模塊在通信上鏈接所述控制器和所述宿主機(jī); 控制器接口模塊,用于經(jīng)由所述PCIe接口與所述宿主機(jī)進(jìn)行指令和I/O事務(wù)請求通信; 到直接存取存儲裝置的第二 I/o接口模塊;并且 其中所述控制器接口模塊將I/o事務(wù)請求呈現(xiàn)給所述第二 I/O接口模塊以便經(jīng)由在通信上與所述控制器對接的所述直接存取存儲裝置履行所述I/o事務(wù)請求。
      61.如權(quán)利要求51所述的設(shè)備,其中用于基于與所述完成隊列相關(guān)聯(lián)的所述狀態(tài)啟動所述中斷的所述完成隊列中斷機(jī)構(gòu)包括經(jīng)由非透明橋接將主機(jī)中斷注入到所述宿主機(jī)的NTB門鈴機(jī)構(gòu)(非透明橋接門鈴機(jī)構(gòu))。
      62.如權(quán)利要求61所述的設(shè)備,其中通過在所述設(shè)備的到所述宿主機(jī)的所述I/O接口模塊處實(shí)現(xiàn)的PCIe下游端口(外圍組件互連Express下游端口)經(jīng)由對所述宿主機(jī)的MSI(消息信令中斷)或 MS1-X (消息信令中斷擴(kuò)展)實(shí)現(xiàn)所述NTB門鈴機(jī)構(gòu)。
      【文檔編號】G06F13/14GK104040515SQ201180075095
      【公開日】2014年9月10日 申請日期:2011年9月30日 優(yōu)先權(quán)日:2011年9月30日
      【發(fā)明者】T.M.斯萊特, S.拉哈克里什南, M.A.施米索爾, P.庫馬, S.蒙達(dá)爾, 陳信森, D.C.李, M.T.瓊斯, G.R.埃迪里蘇里亞, B.A.伯雷斯, B.M.萊特納, K.C.哈倫, M.T.克林爾史密斯, M.R.威爾科克斯, E.J.達(dá)倫 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1