亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

固態(tài)存儲設(shè)備和分層存儲系統(tǒng)中的數(shù)據(jù)管理的制作方法

文檔序號:6350335閱讀:224來源:國知局
專利名稱:固態(tài)存儲設(shè)備和分層存儲系統(tǒng)中的數(shù)據(jù)管理的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及固態(tài)存儲設(shè)備和分層數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)管理。提供了用于管理包括固態(tài)存儲設(shè)備的分層數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)的方法和設(shè)備。還提供了采用此類方法的固態(tài)存儲設(shè)備和數(shù)據(jù)存儲系統(tǒng)也被提供。
背景技術(shù)
固態(tài)存儲是通常在電路(IC)中采用電子電路以用于存儲數(shù)據(jù)的非易失性存儲器,而不是盤和帶之類的傳統(tǒng)磁性或光學(xué)介質(zhì)像。固態(tài)存儲設(shè)備(SSD),特別是閃存存儲設(shè)備,當(dāng)前從根本上改變了數(shù)據(jù)存儲前景。這是因為他們提供的預(yù)期帶寬以及隨機1/0(輸入 /輸出)性能比硬盤驅(qū)動器(HDD)高出數(shù)個量級。此外,由于沒有移動部分,SSD提供了顯著的功耗節(jié)約并且比傳統(tǒng)存儲設(shè)備更加耐用。在例如閃存存儲設(shè)備的固態(tài)存儲設(shè)備中,需要執(zhí)行某種內(nèi)部管理過程,包括在固態(tài)存儲器內(nèi)移動數(shù)據(jù)。這種內(nèi)部管理的需求由于固態(tài)存儲的某些操作特性而產(chǎn)生。為了解釋內(nèi)部管理的需求,下述將集中描述基于NAND的閃存存儲器的特定特征,但是將會理解, 類似的考慮適用于其他類型的固態(tài)存儲。閃存存儲器以頁和塊為單元進行組織。典型的閃存頁是4kB大小,典型的閃存塊包括64個閃存頁(因而是256kB)。讀和寫操作可以在頁的基礎(chǔ)上被執(zhí)行,然而擦除操作只能在塊的基礎(chǔ)上被執(zhí)行。通常需要15到25 μ s將一個頁從閃存單元讀取到閃存管芯(die)中的數(shù)據(jù)緩沖器。將一頁寫到閃存單元中需要200μ s,而擦除一個閃存塊通常需要2ms左右。由于擦除一個塊的用時比頁的讀或?qū)懸L,因此通常使用一種稱為“離位寫”(write-out-of-place)的寫策略來改進寫入吞吐量和延遲。已存儲的數(shù)據(jù)頁不是在存儲器中就地更新。相反,更新的頁被寫到另一空閑閃存頁中,并且相關(guān)聯(lián)的舊閃存頁被標(biāo)記為無效。繼而需要一個內(nèi)部管理過程通過選擇被占用的閃存塊、將所有仍然有效的數(shù)據(jù)頁拷貝到存儲器的另一位置、繼而擦除該塊來準(zhǔn)備空閑閃存塊。上述內(nèi)部管理過程通常稱為 “垃圾收集”。垃圾收集過程通常由附隨于閃存存儲器的稱為“閃存控制器”的專用控制裝置執(zhí)行。閃存控制器管理在閃存存儲器中的數(shù)據(jù),并且控制所有內(nèi)部管理操作。特別地,閃存控制器運行稱為“LBS-PBA(邏輯塊地址-物理塊地址)映射”(也稱為“閃存翻譯層”(FTL) 或“LPN-FPN”(邏輯頁號碼-閃存頁號碼)地址匹配)的中間軟件層。它維護地址映射形式的元數(shù)據(jù),其將與來自上層(例如,存儲系統(tǒng)中的文件系統(tǒng)或者主機)的數(shù)據(jù)頁相關(guān)聯(lián)的邏輯地址映射至在閃存上的物理地址(閃存頁號)。軟件層隱藏閃存中的寫前擦除復(fù)雜性, 并且支持在無擦除干擾情況下的透明數(shù)據(jù)寫入和更新。均衡損耗(wear-levelling)是由閃存控制器執(zhí)行的另一內(nèi)部管理過程。該過程應(yīng)對閃存存儲器的損耗特性。特別地,在存儲完整性開始惡化之前,閃存存儲器具有特定數(shù)目的寫入-擦除周期。均衡消耗包括各種數(shù)據(jù)放置和移動,其旨在將寫入-擦除周期均衡地分布在所有可用的閃存塊之間,以避免不均勻的損耗,從而延長整體生命期。特別地,均衡消耗功能根據(jù)寫入-擦除周期計數(shù)來控制選擇新數(shù)據(jù)應(yīng)被寫入的塊,并且利用低周期計數(shù)以及均勻的損耗在閃存存儲器內(nèi)移動已存儲的數(shù)據(jù)。剛剛描述的內(nèi)部管理功能以及通常由SSD控制器執(zhí)行的其他過程導(dǎo)致所謂“寫放大”。這歸因于數(shù)據(jù)在存儲器內(nèi)部被移動,因此與設(shè)備接收到的數(shù)據(jù)寫請求的原始數(shù)目相比,數(shù)據(jù)寫操作的總數(shù)被放大。寫放大是固態(tài)存儲設(shè)備中限制隨機寫性能以及寫持久性生命期的最為關(guān)鍵問題之一。為了減少上述影響,SSD通常使用一種稱為“過供應(yīng)”(over-provisioning)的技術(shù),由此使用比實際顯現(xiàn)給外部系統(tǒng)的更多的存儲器。這使得SSD相對較為昂貴。不同數(shù)據(jù)存儲設(shè)備之間的性價比權(quán)衡存在于分層數(shù)據(jù)存儲系統(tǒng)的核心。分層存儲也被稱為層級式存儲管理(HSM),它是一種數(shù)據(jù)存儲技術(shù),其中數(shù)據(jù)在較高成本和較低成本的存儲層或者類別的不同存儲設(shè)備之間被自動地移動。分層存儲系統(tǒng)之所以存在是因為例如SSD和FC/SCSI (光纖信道/小型計算機系統(tǒng)接口)盤驅(qū)動器等高速存儲設(shè)備比例如SATA(串行高級技術(shù)附件)盤驅(qū)動器、光盤驅(qū)動器以及磁帶驅(qū)動器等較慢設(shè)備更為昂貴 (每字節(jié)存儲)。關(guān)鍵的思想是將經(jīng)常訪問的數(shù)據(jù)(或者說“熱數(shù)據(jù)”)放置在高速存儲設(shè)備上,并且將不經(jīng)常訪問的數(shù)據(jù)(或者說“冷數(shù)據(jù)”)放置在低速存儲設(shè)備中。如果數(shù)據(jù)的訪問模式改變,數(shù)據(jù)也可以從一個設(shè)備被移動(遷移)到另一設(shè)備。寫請求中的順序?qū)憯?shù)據(jù)是具有連續(xù)邏輯塊地址(LBA)的一長串?dāng)?shù)據(jù),它可以優(yōu)選地被寫入到盤或帶之類的較低成本介質(zhì)。根據(jù)數(shù)據(jù)放置和遷移的粒度,分層存儲可以被分類為LUN(邏輯單元號)層、文件層以及塊層系統(tǒng)。粒度越精細(xì),每單元成本性能越好。先前提出的塊水平的分層存儲系統(tǒng)的總體架構(gòu)如附圖的圖1所示。系統(tǒng)1包括閃存存儲器SSD2以及備選的低成本存儲。在此示例中,備選存儲包括HDD陣列3,以及可選地還有帶驅(qū)動器4。SSD 2包括閃存存儲器管芯5的陣列,以及執(zhí)行上述不同閃存管理操作的閃存控制器6。存儲模塊2到4通過通信鏈路7連接至存儲控制器8,存儲控制器8接收系統(tǒng)的所有數(shù)據(jù)讀取和寫入請求。存儲控制器8總體上管理系統(tǒng)中的數(shù)據(jù),執(zhí)行自動數(shù)據(jù)放置和數(shù)據(jù)遷移操作,例如識別熱數(shù)據(jù)和冷數(shù)據(jù)并且在不同的存儲介質(zhì)之間放置或遷移數(shù)據(jù)。存儲控制器8維護全局地址映射,以跟蹤系統(tǒng)中數(shù)據(jù)的位置以及數(shù)據(jù)塊在不同存儲設(shè)備之的批量移動。在此架構(gòu)中,之前說明的閃存控制器6的活動對于存儲控制器8而言是透明的。

發(fā)明內(nèi)容
本發(fā)明的一方面提供一種用于管理具有固態(tài)存儲設(shè)備和備選存儲的數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)的方法。該方法包括標(biāo)識固態(tài)存儲設(shè)備中將被移動以用于該固態(tài)存儲的內(nèi)部管理的數(shù)據(jù);將所標(biāo)識的數(shù)據(jù)的至少一些移動到備選存儲器而不是固態(tài)存儲器;以及維護指示數(shù)據(jù)在固態(tài)存儲設(shè)備以及備選存儲器中位置的元數(shù)據(jù)。本發(fā)明的實施例提供了在具有固態(tài)存儲設(shè)備和備選存儲的數(shù)據(jù)存儲系統(tǒng)(例如上文討論的分層數(shù)據(jù)存儲系統(tǒng))中使用的數(shù)據(jù)管理方法。在實現(xiàn)本發(fā)明的方法中,固態(tài)存儲設(shè)備中的重要內(nèi)部管理過程被用作管理不同存儲介質(zhì)之間的數(shù)據(jù)移動管理的基礎(chǔ)。特別地,如前所述,此類過程標(biāo)識出于內(nèi)部管理目的而需要在固態(tài)存儲中被移動的數(shù)據(jù)。在本發(fā)明的實施例中,此數(shù)據(jù)的至少一些被移動到備選存儲而非固態(tài)存儲。指示數(shù)據(jù)在SSD和備選存儲中位置的某些形式的元數(shù)據(jù)(例如LBA/PBA地址映射)被相應(yīng)地維護,以跟蹤這樣被移動的數(shù)據(jù)。本發(fā)明的提出基于這樣的認(rèn)識,即,SSD中的例行內(nèi)部管理過程的操作在本質(zhì)上與數(shù)據(jù)訪問模式相關(guān)。本發(fā)明的實施例可以利用隱藏在內(nèi)部管理過程中的數(shù)據(jù)訪問模式信息,將其用作在系統(tǒng)級管理數(shù)據(jù)移動(即,在存儲介質(zhì)之間)的基礎(chǔ)。特別地,SSD中的內(nèi)部管理過程本質(zhì)上包括標(biāo)識存儲器中的其他數(shù)據(jù)相比相對靜態(tài)(即,更新不頻繁)的數(shù)據(jù)。 這可以被用作選擇將被移動到備選存儲的數(shù)據(jù)的基礎(chǔ),從而得到一個更為簡單、更為有效的數(shù)據(jù)管理系統(tǒng)。在層級式數(shù)據(jù)存儲系統(tǒng)中,例如,本發(fā)明的實施例為簡單、有效的系統(tǒng)級數(shù)據(jù)遷移策略提供了基礎(chǔ),與現(xiàn)有系統(tǒng)相比,這降低了實現(xiàn)復(fù)雜性并且提供了改進的性能和降低的成本。此外,借助于內(nèi)部SSD管理操作的本質(zhì),相對靜態(tài)數(shù)據(jù)的標(biāo)識適用于固態(tài)存儲器中的所有數(shù)據(jù)訪問模式,特別是所存儲數(shù)據(jù)的總量以及不同數(shù)據(jù)的相對更新頻率。系統(tǒng)級數(shù)據(jù)管理由此可以相應(yīng)地適配,從而提供更好的總體性能。此外,將相對靜態(tài)數(shù)據(jù)遷移出固態(tài)存儲器在固態(tài)存儲器本身的性能和生命期方面具有顯著的好處,提供了相對于現(xiàn)有系統(tǒng)的進一步改進。因此總體上,本發(fā)明的實施例提供了極大改進的數(shù)據(jù)存儲以及管理系統(tǒng)??傮w上,不同的SSD可以使用包括在固態(tài)存儲器中移動數(shù)據(jù)的各種不同內(nèi)部管理過程。然而,在采用垃圾收集過程的情況下,這如上所述地被優(yōu)選地使用。因此,實現(xiàn)本發(fā)明的方法可以包括標(biāo)識將在固態(tài)存儲器中的垃圾收集過程中被移動的數(shù)據(jù),以及將該數(shù)據(jù)的至少一些移動到備選存儲設(shè)備而非固態(tài)存儲。類似地,在SSD中采用均衡損耗的情況下,數(shù)據(jù)管理過程可以包括標(biāo)識將在數(shù)據(jù)均衡損耗過程中被移動的數(shù)據(jù),以及將該數(shù)據(jù)的至少一些移動到備選存儲器而非固態(tài)存儲。在特別簡單的實施例中,在給定內(nèi)部管理過程中被標(biāo)識為將被移動的所有數(shù)據(jù)可被移動到備選存儲器而非固態(tài)存儲。在其他實施例中,僅該數(shù)據(jù)中的一些可以被選擇以移動到備選存儲器,例如,這取決于關(guān)于數(shù)據(jù)的某些附加信息,例如系統(tǒng)中維護的指示訪問模式的附加元數(shù)據(jù)。這將在下文討論。本發(fā)明的第二方面提供用于具有備選存儲的數(shù)據(jù)存儲系統(tǒng)中的固態(tài)存儲設(shè)備的控制裝置。該裝置包括存儲器以及控制邏輯,控制邏輯適于標(biāo)識固態(tài)存儲中將被移動以用于固態(tài)存儲中的內(nèi)部管理的數(shù)據(jù);控制所表示的數(shù)據(jù)的至少一些向備選存儲而非固態(tài)存儲的移動;以及在所述存儲器中維護指示數(shù)據(jù)在固態(tài)存儲設(shè)備和備選存儲中位置的元數(shù)據(jù);控制邏輯優(yōu)選地包括適于執(zhí)行固態(tài)存儲的內(nèi)部管理的集成邏輯。由此,上文描述的控制將數(shù)據(jù)移動到備選存儲的附加功能可以與本地SSD控制器中的基本SSD控制功能完全集成??刂蒲b置可以優(yōu)選地管理各種其他系統(tǒng)級數(shù)據(jù)放置和遷移功能。例如,在特別優(yōu)選的實施例中,控制邏輯可以控制數(shù)據(jù)從備選存儲遷移回固態(tài)存儲器,并且可以控制將順序數(shù)據(jù)向備選存儲而非SS存儲器的寫入。這將在下文詳細(xì)描述??傮w系統(tǒng)級數(shù)據(jù)放置和遷移功能與本地SSD控制器中的集成程度可以隨不同實施例而變化。然而,在優(yōu)選實施例中,控制裝置可以實現(xiàn)在本地SSD控制器中,其提供用于本地SSD和系統(tǒng)級數(shù)據(jù)放置和遷移管理的自洽的全功能數(shù)據(jù)管理系統(tǒng)。盡管可以預(yù)見到備選方案,控制裝置所維護的元數(shù)據(jù)優(yōu)選地包括至少一個地址映射,其指示與相應(yīng)數(shù)據(jù)塊關(guān)聯(lián)的邏輯地址和指示數(shù)據(jù)在固態(tài)存儲設(shè)備和附加存儲中位置的物理地址之間的映射。至少針對由上文描述的過程在存儲介質(zhì)之間移動的所有數(shù)據(jù)而維護元數(shù)據(jù),但是通常也包含其他數(shù)據(jù),這取決于控制裝置與基本SSD控制邏輯的集成水平以及控制裝置所提供的系統(tǒng)級控制的程度。然而在優(yōu)選的高度集成的實施例中,控制裝置可以維護在整個存儲系統(tǒng)中跟蹤數(shù)據(jù)的全局地址映射。本發(fā)明的第三方面提供了一種計算機程序,包括使得計算機執(zhí)行根據(jù)本發(fā)明第一方面的方法或者實現(xiàn)根據(jù)本發(fā)明第二方面的控制裝置的程序代碼裝置。將會理解,術(shù)語“計算機”在最普通的意義上使用,并且包括具有實現(xiàn)計算機程序的數(shù)據(jù)處理能力的任何設(shè)備、 組件或系統(tǒng)。此外,實現(xiàn)本發(fā)明的計算機程序可以構(gòu)成單機程序或者可以是較大程序的組成部分,并且可以被提供和包含在諸如盤或者電子傳輸?shù)挠嬎銠C可讀介質(zhì)中,以用于加載在計算機中。計算機程序的程序代碼裝置可能包括任意語言、代碼或者符號的指令集的任意表示,其意在使得計算機直接或者在以下(a)和(b)任一情況或二者兼?zhèn)渲髨?zhí)行所討論的方法(a)轉(zhuǎn)換成另一語言、代碼或者符號,以及(b)以不同的材料形式復(fù)制。本發(fā)明的第四方面提供一種用于具有備選存儲的數(shù)據(jù)存儲系統(tǒng)的固態(tài)存儲設(shè)備, 該設(shè)備包括根據(jù)本發(fā)明第二方面的固態(tài)存儲以及控制裝置。本發(fā)明的第五方面提供一種數(shù)據(jù)存儲系統(tǒng),包括根據(jù)本發(fā)明第四方面的固態(tài)存儲設(shè)備以及備選存儲,以及用于數(shù)據(jù)在固態(tài)存儲設(shè)備和備選存儲之間通信的通信鏈路。一般而言,當(dāng)在此參考本發(fā)明一個方面的實施例而描述特征時,相應(yīng)的特征可以在本發(fā)明其他方面的其他實施例中被提供。


現(xiàn)在將以示例方式參考附圖來描述本發(fā)明的優(yōu)選實施例,其中圖1示出先前提出的數(shù)據(jù)存儲系統(tǒng)的架構(gòu);圖2示出實現(xiàn)本發(fā)明的數(shù)據(jù)存儲系統(tǒng)的架構(gòu);圖3示出圖2系統(tǒng)中的閃存控制器的示意框圖;圖4示出圖3的閃存控制器的數(shù)據(jù)放置功能;圖5示出作為閃存控制器中的內(nèi)部管理操作的一部分而被執(zhí)行的數(shù)據(jù)管理過程;圖6示出對圖5過程的修改;圖7示出響應(yīng)于讀請求的閃存控制器操作;以及圖8示出閃存控制器所維護的元數(shù)據(jù)的示例。
具體實施例方式圖2示出了實現(xiàn)本發(fā)明的數(shù)據(jù)存儲系統(tǒng)的一個示例的總體架構(gòu)。系統(tǒng)10是一個分層存儲系統(tǒng),其具有與圖1的系統(tǒng)1大體類似的存儲結(jié)構(gòu),具有SSD 11以由HDD陣列12 和帶驅(qū)動器模塊13提供的備選存儲。SSD 11具有閃存存儲器管芯1 4的陣列以及閃存控制器15。HDD陣列12包括多個硬盤驅(qū)動器。除了個體HDD中的常見內(nèi)部控制功能以外, HDD陣列可以可選地包括陣列控制器16,如圖中虛線所示。這類陣列控制器可以在陣列12中以已知的方式執(zhí)行陣列級控制功能,例如RAID (獨立設(shè)備的冗余陣列)管理。互連17提供層級式存儲模塊11到13之間的數(shù)據(jù)鏈路。不同于現(xiàn)有架構(gòu),來自使用系統(tǒng)10的主機的所有數(shù)據(jù)讀/寫請求被直接提供給SSD 11并且由閃存控制器15接收。閃存控制器15在圖3中詳述。這個示意性框圖示出了將要描述的數(shù)據(jù)管理過程中所包括的閃存控制器15的主要元件。閃存控制器15包括控制邏輯20,用于與系統(tǒng)主機進行數(shù)據(jù)通信的主機接口(I/F) 21,以及用于通過去往閃存管芯14陣列的鏈路進行通信的閃存鏈路接口 22。閃存控制器15還包括接口電路23,用于經(jīng)由互連17與備選存儲設(shè)備(此處為HDD陣列12和帶驅(qū)動器1 進行數(shù)據(jù)通信??刂七壿?0控制SSD 11的操作,執(zhí)行用于讀/寫的常規(guī)控制功能以及內(nèi)部管理操作,但具有對上文描述過程的修改,如下詳述。特別地,控制邏輯20執(zhí)行改進的垃圾收集和均衡損耗過程以及系統(tǒng)級數(shù)據(jù)放置和遷移操作,這將在下文中描述。例如閃存鏈路管理,寫縮減以及壞塊管理等其他例行閃存控制功能可以按照常規(guī)方式執(zhí)行,無需再次描述。一般地,控制邏輯20可以通過硬件、軟件或其組合來實現(xiàn)。然而,在此示例中,控制邏輯由軟件實現(xiàn),其配置控制器15的處理器以執(zhí)行所描述的功能。根據(jù)此處的描述,適當(dāng)?shù)能浖τ诒绢I(lǐng)域技術(shù)人員而言將是清楚的。閃存控制器15還包括存儲器M,用于存儲在下文詳述的控制器操作中使用的各種元數(shù)據(jù)。在系統(tǒng)10的操作中,來自主機的讀/寫請求經(jīng)由主機I/F 21被閃存控制器15接收。響應(yīng)于主機請求,控制邏輯20控制本地閃存存儲器14中數(shù)據(jù)的存儲和檢索,并且經(jīng)由存儲I/F 23控制備選存儲設(shè)備12、13中數(shù)據(jù)的存儲和檢索。另外,為了系統(tǒng)資源的有效使用,控制邏輯執(zhí)行系統(tǒng)范圍的數(shù)據(jù)放置和遷移策略,控制系統(tǒng)中數(shù)據(jù)的初始存儲以及數(shù)據(jù)隨后在存儲介質(zhì)之間的移動。為了跟蹤數(shù)據(jù)在系統(tǒng)中的位置,存儲在存儲器M中的元數(shù)據(jù)包括地址映射,其指示與相應(yīng)數(shù)據(jù)塊關(guān)聯(lián)的邏輯地址和指示數(shù)據(jù)在閃存存儲器1 4和備選存儲12、13中位置的物理地址之間的映射。特別地,跟蹤數(shù)據(jù)在閃存存儲器14中位置的常規(guī)日志結(jié)構(gòu)的LBA/PBA映射被擴展到系統(tǒng)級,以便在整個存儲模塊11到13中跟蹤數(shù)據(jù)。該系統(tǒng)級映射由存儲器M中的控制邏輯20維護,作為總體數(shù)據(jù)管理過程的一部分。此映射的日志結(jié)構(gòu)形式表示共存于存儲系統(tǒng)中的舊數(shù)據(jù)版本和更新數(shù)據(jù)版本被關(guān)聯(lián)在映射中,從而允許適當(dāng)?shù)膬?nèi)部管理過程根據(jù)需要跟進和擦除舊數(shù)據(jù)。用于此系統(tǒng)的地址映射的具體示例將在下文詳述。在此示例中,控制邏輯20還管理系統(tǒng)中數(shù)據(jù)的備份或者存檔拷貝的存儲。此類拷貝可以根據(jù)主機指令而被要求,和/或根據(jù)控制邏輯20所實現(xiàn)的某些一般性策略而被維護。因此,在此實施例中,控制邏輯20所維護的元數(shù)據(jù)包括備份/存檔映射,其指示備份和歸檔數(shù)據(jù)在系統(tǒng)10中的位置。圖4的流程中示出了閃存控制器15響應(yīng)于來自主機的寫請求的操作。該圖示出了控制邏輯20執(zhí)行的數(shù)據(jù)放置過程的關(guān)鍵步驟。響應(yīng)于在步驟30接收寫請求,控制邏輯20首先檢查該請求是否指示用于寫數(shù)據(jù)的特定存儲指令。例如,主機可指示數(shù)據(jù)硬被存儲在特定介質(zhì)上,或者數(shù)據(jù)應(yīng)被存檔或者備份在系統(tǒng)中。如果針對寫數(shù)據(jù)而指定了數(shù)據(jù)放置,如決策塊31的“是”所示,則操作進行到步驟32。此處,控制邏輯20實現(xiàn)寫請求,控制數(shù)據(jù)經(jīng)由閃存I/F 22或者存儲I/F 23向適當(dāng)介質(zhì)14、12、13的寫入。接下來,控制邏輯在步驟33確定主機指令或者預(yù)定的策略是否需要數(shù)據(jù)的備份拷貝,如果需要,操作回到步驟32以實現(xiàn)備份寫。此處選擇的介質(zhì)可由下文詳述的策略確定。在實現(xiàn)備份寫后,操作返回到步驟33并且這次進行到(通過步驟33的分支“否”)步驟34。此處,控制邏輯20更新存儲器M中的元數(shù)據(jù),來適當(dāng)?shù)卦诘刂酚成渲杏涗浺褜懭霐?shù)據(jù)的位置。返回步驟31,如果沒有針對寫數(shù)據(jù)而指定特定放置(此決策塊中的“否”),則操作進行到步驟35,在此控制邏輯20檢查該寫請求是否是用于順序數(shù)據(jù)。順序數(shù)據(jù)可以通過不同方法被檢測到,這對于本領(lǐng)域技術(shù)人員來說是清楚的。然而,在此示例中,控制邏輯20針對預(yù)定閾值Tsetl而檢查順序?qū)ぶ返膶憯?shù)據(jù)的請求大小。也即,對于具有連續(xù)系列的邏輯塊地址(LBAs)的寫數(shù)據(jù)而言,如果數(shù)據(jù)量超過Tsrai則數(shù)據(jù)被認(rèn)為是順序的。在這種情況下(決策塊35中的“是”),操作進行到步驟36,在此邏輯20控制順序數(shù)據(jù)向HDD陣列12中的盤的寫入。操作然后繼續(xù)至步驟33。返回到?jīng)Q策塊35,對于非順序?qū)憯?shù)據(jù)(此步驟的“否”),操作進行到步驟37,在此控制邏輯將數(shù)據(jù)寫入閃存存儲器14,并且操作再次進行到步驟33。當(dāng)在步驟36或37中將數(shù)據(jù)寫入盤或閃存存儲器后,如果在步驟33需要則可以寫入備份拷貝,并且元數(shù)據(jù)繼而在步驟43如前更新,以反映所有寫入數(shù)據(jù)的位置。數(shù)據(jù)放置操作繼而完成??梢詮膱D4中看到閃存控制器15實現(xiàn)了系統(tǒng)級數(shù)據(jù)放置策略。特別地,在該示例中,除非主機指令或其他策略另行指示,順序數(shù)據(jù)被寫入盤而非順序數(shù)據(jù)被寫入閃存存儲器。除該數(shù)據(jù)放置功能之外,閃存控制器15還管理數(shù)據(jù)在介質(zhì)之間的遷移。將數(shù)據(jù)從閃存存儲器14向備選存儲遷移的過程與閃存控制器15所執(zhí)行的關(guān)鍵內(nèi)部管理操作密切相關(guān)。這在圖5所示的流程圖中被示出,其示出了閃存控制器15針對閃存存儲器4的內(nèi)部管理而執(zhí)行的垃圾收集過程的關(guān)鍵步驟。當(dāng)垃圾收集在圖5的步驟40被發(fā)起時,控制邏輯20首先選擇用于擦除的閃存塊,如步驟41所示。該選擇以常規(guī)方式被執(zhí)行,通常是通過標(biāo)識具有最多無效頁的塊。接下來,在步驟42,控制邏輯四確定是否該塊中的第一頁是否有效。如果不是,則操作進行步驟43,在此控制邏輯確定該塊中是否存在任何其他頁。假設(shè)存在,操作將返回步驟42以處理下一頁。當(dāng)在步驟42檢測到有效頁時,操作進行到步驟44。此處,控制邏輯20將頁移動到盤,而不是將該頁拷貝到閃存存儲器14中的另一位置。因此在步驟44中,控制邏輯20經(jīng)由I/F 23發(fā)送頁,以用于寫入HDD陣列12。在步驟45,控制邏輯繼而更新存儲器M中的元數(shù)據(jù)以記錄所移動頁的新位置。操作繼而進行到步驟43并且針對下一閃存頁而繼續(xù)。當(dāng)塊中的所有閃存頁已被處理時(步驟43的“否”),針對當(dāng)前塊的垃圾收集過程完成。此過程繼而可以根據(jù)需要而針對其他塊重復(fù)。一旦已經(jīng)針對一個塊而執(zhí)行了垃圾收集,此塊隨后可以根據(jù)需要被擦除以允許新數(shù)據(jù)的再次寫入。擦除可以被立即執(zhí)行,或者隨后在需要釋放閃存存儲器以用于新數(shù)據(jù)時在任意時間執(zhí)行。在任意情況中,當(dāng)一個塊被擦除時,控制邏輯20通過刪除被移動到盤的頁的舊閃存存儲器地址來更新存儲器M中的元數(shù)據(jù)。通過使用垃圾收集作為數(shù)據(jù)從閃存存儲器向盤遷移的基礎(chǔ),閃存控制器15利用了垃圾收集過程中固有的關(guān)于數(shù)據(jù)訪問模式的信息。特別地,該過程的特性是這樣的被標(biāo)識為將要在過程中被移動的數(shù)據(jù)(有效頁)相比于閃存存儲器中的其他數(shù)據(jù)(例如,相同塊中的無效頁的較新版本)而言傾向于是相對靜態(tài)的(更新不頻繁)。閃存控制器15利用上述事實,將所標(biāo)識的(相對)靜態(tài)的數(shù)據(jù)移動到盤而不是閃存存儲器。而且,由這一過程標(biāo)識的靜態(tài)數(shù)據(jù)本質(zhì)上適于閃存存儲器中的總體數(shù)據(jù)訪問模式,因為隨著存儲負(fù)載的增加和減少,垃圾收集遲早將被執(zhí)行。由此,數(shù)據(jù)頁有效地彼此競爭以留在閃存存儲器中,此過程適用于總體使用模式。在圖5的簡單過程中,被標(biāo)識在垃圾收集過程中移動的所有數(shù)據(jù)被移動到盤而非閃存存儲器14。然而,圖6示出了對此過程的可能修改。該圖示出了對圖5中步驟44的備選方案。在修改的過程中,在步驟42中標(biāo)識的有效數(shù)據(jù)頁最初將在閃存存儲器14中被移動,控制邏輯20維護給定數(shù)據(jù)頁已被移動的次數(shù)的計數(shù)。此移動計數(shù)可被維持為存儲器24中的附加元數(shù)據(jù)。參考圖6,在圖4的步驟42中對有效頁的標(biāo)識之后,控制邏輯20將針對該頁的移動計數(shù)與預(yù)先設(shè)置的閾值計數(shù)T。進行比較。如果移動計數(shù)并未超過閾值(決策步驟50的“否”),該頁在步驟51僅被拷貝到閃存存儲器14中的另一位置。繼而在步驟52更新針對該頁的移動計數(shù),并且操作繼續(xù)到圖5中的步驟45。返回步驟50,如果移動計數(shù)超過了閾值(是),則該頁在步驟53被拷貝到盤??刂七壿嬂^而在步驟M將針對該頁的移動計數(shù)歸零,并且操作如前繼續(xù)。盡管這一修改的過程包括將移動計數(shù)維護為附加元數(shù)據(jù),計數(shù)閾值T。允許將遷移限制到數(shù)據(jù)已經(jīng)被重復(fù)移動的情形,這在使用模式較繁重時將更為可能,并且可以通過遷移靜態(tài)數(shù)據(jù)來改善閃存存儲器效率。閾值T。甚至可以在操作中響應(yīng)于例如由控制邏輯20中的某些較高級性能監(jiān)視所評估的使用模式而動態(tài)地調(diào)整。閃存控制器15還可以與SSD 11中的內(nèi)部均衡損耗過程相結(jié)合地執(zhí)行圖5所示的數(shù)據(jù)遷移過程。特別地,控制邏輯20的常規(guī)均衡損耗功能可以包括標(biāo)識具有相對較低寫-擦除周期計數(shù)的閃存塊,并且移動這樣標(biāo)識的數(shù)據(jù)從而釋放塊以用于重寫,由此平攤周期計數(shù)并且改善損耗特性。再次,由此內(nèi)部管理過程標(biāo)識以供移動的數(shù)據(jù)相比于其他數(shù)據(jù)而言是相對靜態(tài)的,并且這被用于由閃存控制器15執(zhí)行的系統(tǒng)級數(shù)據(jù)遷移。因此,在步驟40所示的均衡損耗期間同樣可以執(zhí)行圖5的過程,其中步驟41的塊選擇通常選擇具有最低周期計數(shù)的塊。再次,此過程中對相對靜態(tài)數(shù)據(jù)的標(biāo)識和移動適用于閃存存儲器14中的總體使用模式。此外,圖6的修改也可用于均衡損耗,盡管圖5的過程由于簡易性而是優(yōu)選的。除了上文描述的對靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)進行區(qū)分,閃存控制器15所實現(xiàn)的數(shù)據(jù)遷移策略還可以根據(jù)讀取訪問頻率來區(qū)別熱數(shù)據(jù)和冷數(shù)據(jù)。特別地,靜態(tài)數(shù)據(jù)是系統(tǒng)中相對較少被更新的數(shù)據(jù),而這里所說的冷數(shù)據(jù)是(相對)較少被讀取或者更新的數(shù)據(jù)。這一區(qū)別體現(xiàn)在閃存控制器15對讀請求的處理中。圖7的流程圖中示出了此過程的關(guān)鍵步驟。響應(yīng)于在步驟60接收讀請求,控制邏輯20首先根據(jù)存儲器M中的地址映射檢查所請求的數(shù)據(jù)目前是否被存儲在閃存存儲器14中。如果是(決策步驟61的“是”),則數(shù)據(jù)在步驟62被簡單地讀出,并且過程終止。如果在步驟61所請求的數(shù)據(jù)不在閃存存儲器中,則在步驟63,控制邏輯控制數(shù)據(jù)從盤陣列12或者帶驅(qū)動器13的適當(dāng)?shù)刂肺恢玫淖x取。接下來,在決策步驟64,控制邏輯確定讀請求是否針對順序數(shù)據(jù)。再次,這例如可以如前所述通過將請求大小與閾值Tsrai進行比較來實現(xiàn)。如果在此被標(biāo)識為順序數(shù)據(jù)(步驟64的“是”),則不需要進一步的動作。然而,如果讀取的數(shù)據(jù)被認(rèn)為不是順序的,則在步驟65,控制邏輯20將讀取的數(shù)據(jù)拷貝回閃存存儲器14中。在步驟66,在存儲器M中更新地址映射以反映新數(shù)據(jù)位置,并且讀取過程完成。剛剛描述的讀取過程的效果是由先前描述的內(nèi)部管理過程從閃存遷移到盤的數(shù)據(jù)將響應(yīng)于針對該數(shù)據(jù)的讀請求而被移動回閃存存儲器。因此,靜態(tài)、只讀數(shù)據(jù)將被循環(huán)回閃存存儲器,而未被讀取的真正的冷數(shù)據(jù)將留在備選存儲中。由于在將數(shù)據(jù)頁寫入閃存之后通常需要一段時間才能將其確定為靜態(tài)的,因此頻繁只讀的頁在被遷移到盤之前將留在閃存中一段時間。順序數(shù)據(jù)傾向于留在盤或者帶上,而不考慮其讀取頻率。以此方式,針對不同數(shù)據(jù)類別的不同存儲介質(zhì)的不同屬性構(gòu)成了有效的使用。圖8是此示例中由控制邏輯20作為元數(shù)據(jù)而維護的地址映射的示意性表示。此圖中左手邊的表代表工作LBA/PBA映射70,右手邊的表代表備份/存檔映射71。出于此示例之目的,假設(shè)帶驅(qū)動器13主要用于存檔數(shù)據(jù),以及用于存儲在盤或者帶上別處的數(shù)據(jù)的備份拷貝。在需要閃存存儲器中數(shù)據(jù)的備份拷貝的情況下,這些備份拷貝被存儲在HDD陣列I2中??紤]該地址映射的第一行,工作映射70指示具有邏輯塊地址0x0000. . . 0000的數(shù)據(jù)目前被存儲在閃存存儲器中的地址F5-B7-P45處(其中此格式指示在第5個閃存管芯(F)上的第7個塊⑶中的第45頁(P))。此數(shù)據(jù)的舊版本也被保持在閃存中,在地址F56-B4-P12處。映射71指示此數(shù)據(jù)的備份拷貝被存儲在地址D5-LBN00000處(其中此格式指示盤陣列12的第5個HDD (D)中的第00000個邏輯塊編號(LBN))。第二行指示具有LBA 0x0000. ..0001的數(shù)據(jù)被存儲在閃存存儲器中的地址F9-B0-P63處,其具有盤上D5-LBN0001處的備份。第四行指示LBA0x0000. . . 0003目前在盤上的D5-LBN34789處,該數(shù)據(jù)的較舊版本仍在盤上的D0-LBN389處(例如,在以常規(guī)方式按照附加模式對盤上的該數(shù)據(jù)更新之后)。下一行示出LBA 0x0000. ..0004目前存儲在帶上的T5-C6-LBN57683處(其中此格式指示第5個帶驅(qū)動器(T)的第6個盒(C)中的第57683個邏輯塊編號)。備份拷貝被存儲在 T7-C0-LBN00000 處。LBA 0x0000. . . 0005 被存檔,而在 T7-C0-LBN0001 處無備份。在倒數(shù)第二行,LBA OxFFFF... FFFE目前被存在閃存中,較舊的版本存儲在盤上,例如,在圖7的步驟65中回到閃存的遷移數(shù)據(jù)的拷貝之后。將會看到,日志結(jié)構(gòu)的地址映射表70、71允許在整個存儲系統(tǒng)10中跟蹤數(shù)據(jù)移動,其中相同數(shù)據(jù)的舊版本和新版本在工作映射70中被關(guān)聯(lián),以支持例如垃圾收集之類的跟進內(nèi)部管理過程。然而,將會理解,控制邏輯可以維護各種其他元數(shù)據(jù)。例如,元數(shù)據(jù)可以包括其他映射,例如復(fù)制映射,其用于在存儲多個拷貝的情況下記錄所復(fù)制數(shù)據(jù)的位置以用于例如安全目的。還可以維護其他元數(shù)據(jù),例如訪問模式、次數(shù)、所有者、訪問控制列表(ACL)等等,這對于本領(lǐng)域技術(shù)人員而言是清楚的。將會看到,閃存控制器15提供了用于本地SSD的全集成控制器以及系統(tǒng)級數(shù)據(jù)管理。系統(tǒng)級數(shù)據(jù)遷移策略利用固有的內(nèi)部閃存管理過程,創(chuàng)造了閃存管理與系統(tǒng)級數(shù)據(jù)管理功能之間的協(xié)作。這提供了一個高效的系統(tǒng)架構(gòu)以及整體數(shù)據(jù)管理過程,與現(xiàn)有系統(tǒng)相比,它更為簡單、快速并且更為成本有效。系統(tǒng)可以通過一種適用于總體數(shù)據(jù)訪問模式的簡單、高效的方式來管理熱數(shù)據(jù)/冷數(shù)據(jù),靜態(tài)數(shù)據(jù)/動態(tài)數(shù)據(jù)以及順序數(shù)據(jù)/隨機數(shù)據(jù)。另外,將靜態(tài)數(shù)據(jù)自動遷移出閃存顯著改善了閃存存儲器本身的性能和生命期。另一優(yōu)勢在于,備份和存檔可以在塊級別上被處理,這不同于在文件級別上進行處理的常規(guī)過程。這提供了更快的執(zhí)行以及更快的恢復(fù)。當(dāng)然可以對上文描述的優(yōu)選實施例做出各種改變和修改。下面描述一些示例。盡管閃存控制器15提供全功能的、自恰的、系統(tǒng)級數(shù)據(jù)管理控制器,但是區(qū)別熱數(shù)據(jù)/冷數(shù)據(jù)和/或靜態(tài)數(shù)據(jù)/動態(tài)數(shù)據(jù)以及相應(yīng)放置/遷移數(shù)據(jù)的其他技術(shù)可以與所描述的系統(tǒng)相結(jié)合。此功能可以集成在閃存控制器15中,或者在圖1架構(gòu)中的存儲控制器8這一級別實現(xiàn)。例如,初始熱數(shù)據(jù)/冷數(shù)據(jù)檢測可以在存儲器8中實現(xiàn),其中冷數(shù)據(jù)被寫入到盤或者帶而無需首先被寫入閃存。熱數(shù)據(jù)/冷數(shù)據(jù)檢測的準(zhǔn)確度對于此處的任意改進而言當(dāng)然將是關(guān)鍵的。數(shù)據(jù)放置/遷移策略以最精細(xì)的粒度實現(xiàn),在所描述系統(tǒng)的塊(閃存頁)級。然而,本領(lǐng)域的技術(shù)人員可以理解,系統(tǒng)可以容易地被修改以處理最大為文件級別的不同塊大小,其中地址映射反映粒度基本的地址映射。一般地,可由一個或多個存儲設(shè)備來提供備選存儲。這些存儲設(shè)備可以不同于上文描述的具體示例,并且可以包括其他固態(tài)存儲設(shè)備。盡管SSD 11在上文被假設(shè)為NAND閃存存儲器設(shè)備,但是也可以使用其他類型的SSD來實現(xiàn)本發(fā)明的技術(shù)。此類備選設(shè)備可以使用與上文描述不同的內(nèi)部管理過程,但是一般而言,可以按照上文描述的方式使用包括固態(tài)存儲器中數(shù)據(jù)移動的任何內(nèi)部管理過程。注意,盡管在上文中SSD 11提供了存儲的頂層,但是系統(tǒng)也可以包括一個或多個的更高存儲層。將會理解,在不脫離本發(fā)明范圍的情況下,可以對所描述的示例性實施方式進行多種其他的改變和修改。
權(quán)利要求
1.一種用于管理具有固態(tài)存儲設(shè)備(11)和備選存儲(12,1 的數(shù)據(jù)存儲系統(tǒng)(10)中的數(shù)據(jù)的方法,所述方法包括標(biāo)識將在所述固態(tài)存儲設(shè)備(11)中被移動以用于固態(tài)存儲(14)的內(nèi)部管理的數(shù)據(jù);將標(biāo)識的所述數(shù)據(jù)的至少一些移動到所述備選存儲(12,1 而非所述固態(tài)存儲(14);以及維護指示數(shù)據(jù)在所述固態(tài)存儲設(shè)備(11)和所述備選存儲(12,1 中位置的元數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,包括標(biāo)識將在所述固態(tài)存儲設(shè)備(11)的垃圾收集過程中被移動的數(shù)據(jù);以及將該數(shù)據(jù)的至少一些移動到所述備選存儲(12,1 而非所述固態(tài)存儲(14)。
3.根據(jù)前述任一權(quán)利要求所述的方法,包括標(biāo)識將在所述固態(tài)存儲設(shè)備(11)的均衡損耗過程中被移動的數(shù)據(jù);以及將該數(shù)據(jù)的至少一些移動到所述備選存儲(12,1 而非所述固態(tài)存儲(14)。
4.一種用于具有備選存儲(12,13)的數(shù)據(jù)存儲系統(tǒng)(10)中的固態(tài)存儲設(shè)備(11)的控制裝置(15),所述裝置(1 包括存儲器04)和控制邏輯(20),所述控制邏輯適于標(biāo)識將在所述固態(tài)存儲設(shè)備(11)中被移動以用于固態(tài)存儲(14)的內(nèi)部管理的數(shù)據(jù);控制標(biāo)識的所述數(shù)據(jù)的至少一些向所述備選存儲(12,1 而非所述固態(tài)存儲(14)的移動;以及在所述存儲器04)中維護指示數(shù)據(jù)在所述固態(tài)存儲設(shè)備(11)和所述備選存儲(12, 13)中位置的元數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的裝置,其中所述控制邏輯OO)適于標(biāo)識將在所述固態(tài)存儲設(shè)備(11)的垃圾收集過程中被移動的數(shù)據(jù);以及控制該數(shù)據(jù)的至少一些向所述備選存儲 (12,13)而非所述固態(tài)存儲(14)的移動。
6.根據(jù)權(quán)利要求5所述的裝置,其中所述控制邏輯OO)適于控制將在所述垃圾收集過程中被移動的所有數(shù)據(jù)向所述備選存儲(12,1 而非所述固態(tài)存儲(14)的移動。
7.根據(jù)權(quán)利要求5所述的裝置,其中對于在所述垃圾收集過程中在所述固態(tài)存儲設(shè)備(11)中被移動的數(shù)據(jù),所述控制邏輯OO)適于維護該數(shù)據(jù)已被這樣移動的次數(shù)的計數(shù);以及在標(biāo)識將在所述垃圾收集過程中被移動的數(shù)據(jù)時,所述控制邏輯OO)適于在針對該數(shù)據(jù)的所述計數(shù)超出閾值的情況下,控制該數(shù)據(jù)向所述備選存儲(12,1 的移動。
8.根據(jù)權(quán)利要求4到7任一項所述的裝置,其中所述控制邏輯OO)適于標(biāo)識將在所述固態(tài)存儲設(shè)備(11)中的均衡損耗過程中被移動的數(shù)據(jù);以及控制該數(shù)據(jù)的至少一些向所述備選存儲(12,1 而非所述固態(tài)存儲(14)的移動。
9.根據(jù)權(quán)利要求4到8任一項所述的裝置,其中所述控制邏輯OO)包括適于執(zhí)行所述固態(tài)存儲(14)的所述內(nèi)部管理的集成邏輯。
10.根據(jù)權(quán)利要求4到9任一項所述的裝置,其中所述控制邏輯OO)適于接收讀數(shù)據(jù)的讀請求;以及響應(yīng)于所述讀請求針對從所述固態(tài)存儲(14)被移動到所述備選存儲(12,1 的數(shù)據(jù), 控制該數(shù)據(jù)向所述固態(tài)存儲(14)的寫回。
11.根據(jù)權(quán)利要求4到10任一項所述的裝置,其中所述控制邏輯OO)適于接收針對寫數(shù)據(jù)的寫請求;確定接收的寫請求是否用于寫入順序數(shù)據(jù);如果不是則控制所述數(shù)據(jù)向所述固態(tài)存儲(14)的寫入,如果是則控制所述數(shù)據(jù)向所述備選存儲(12,13)的寫入。
12.根據(jù)權(quán)利要求4到11任一項所述的裝置,其中所述固態(tài)存儲包括閃存存儲器(14)和/或所述備選存儲包括盤存儲(1 和帶存儲 (13)的至少一個。
13.根據(jù)權(quán)利要求4到12任一項所述的裝置,其中所述元數(shù)據(jù)包括至少一個地址映射, 其指示與相應(yīng)數(shù)據(jù)塊關(guān)聯(lián)的邏輯地址與指示所述固態(tài)存儲設(shè)備(11)和所述備選存儲(12, 13)中的數(shù)據(jù)位置的物理地址之間的映射。
14.一種計算機程序,包括程序代碼裝置,用于使計算機執(zhí)行根據(jù)權(quán)利要求1到3任一項所述的方法,或者實現(xiàn)根據(jù)權(quán)利要求4到13任一項所述的控制裝置(15)。
15.一種用于具有備選存儲(12,13)的數(shù)據(jù)存儲系統(tǒng)(10)的固態(tài)存儲設(shè)備(11),所述設(shè)備(11)包括固態(tài)存儲(14)以及根據(jù)權(quán)利要求4到13任一項所述的控制裝置(15)。
16.一種數(shù)據(jù)存儲系統(tǒng)(10),包括根據(jù)權(quán)利要求15所述的固態(tài)存儲設(shè)備(11)和備選存儲(12,13),以及用于所述固態(tài)存儲設(shè)備(11)與所述備選存儲(12,1 之間的數(shù)據(jù)通信的通信鏈路(17)。
全文摘要
提供了用于管理具有固態(tài)存儲設(shè)備(11)和備選存儲(12,13)的數(shù)據(jù)存儲系統(tǒng)(10)中數(shù)據(jù)的方法和裝置。在固態(tài)存儲設(shè)備(11)中執(zhí)行的諸如垃圾收集或者均衡損耗的內(nèi)部管理過程中,標(biāo)識需要在設(shè)備(11)中被移動以用于固態(tài)存儲(14)內(nèi)部管理的數(shù)據(jù)。這樣標(biāo)識的數(shù)據(jù)的至少一些被移動到備選存儲(12,13)而非固態(tài)存儲(14)。維護指示數(shù)據(jù)在固態(tài)存儲設(shè)備(11)和備選存儲(12,13)中位置的元數(shù)據(jù)以跟蹤數(shù)據(jù)移動。
文檔編號G06F3/06GK102576293SQ201080039762
公開日2012年7月11日 申請日期2010年9月7日 優(yōu)先權(quán)日2009年9月8日
發(fā)明者E·S·埃勒夫瑟里奧, R·哈斯, 胡曉宇 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1