『壹』 為什麼採用分層存儲數據能有效提高程序的執行效率
計算機系統中存儲層次可分為高速緩沖存儲器、主存儲器、輔助存儲器三級 高速緩沖存儲器用來改善主存儲器與中央處理器的速度匹配問題 輔助存儲器用於擴大存儲空,即硬碟,光碟等,容量大,但存取數據慢,計算機都是先把輔存中要讀的東西放到主存後
『貳』 分布式文件存儲系統通過什麼方式提高可用性和安全性
分布式存儲的六大優點
1. 高性能
一個具有高性能的分布式存戶通常能夠高效地管理讀緩存和寫緩存,並且支持自動的分級存儲。分布式存儲通過將熱點區域內數據映射到高速存儲中,來提高系統響應速度;一旦這些區域不再是熱點,那麼存儲系統會將它們移出高速存儲。而寫緩存技術則可使配合高速存儲來明顯改變整體存儲的性能,按照一定的策略,先將數據寫入高速存儲,再在適當的時間進行同步落盤。
2. 支持分級存儲
由於通過網路進行松耦合鏈接,分布式存儲允許高速存儲和低速存儲分開部署,或者任意比例混布。在不可預測的業務環境或者敏捷應用情況下,分層存儲的優勢可以發揮到最佳。解決了目前緩存分層存儲最大的問題是當性能池讀不命中後,從冷池提取數據的粒度太大,導致延遲高,從而給造成整體的性能的抖動的問題。
3. 多副本的一致性
與傳統的存儲架構使用RAID模式來保證數據的可靠性不同,分布式存儲採用了多副本備份機制。在存儲數據之前,分布式存儲對數據進行了分片,分片後的數據按照一定的規則保存在集群節點上。為了保證多個數據副本之間的一致性,分布式存儲通常採用的是一個副本寫入,多個副本讀取的強一致性技術,使用鏡像、條帶、分布式校驗等方式滿足租戶對於可靠性不同的需求。在讀取數據失敗的時候,系統可以通過從其他副本讀取數據,重新寫入該副本進行恢復,從而保證副本的總數固定;當數據長時間處於不一致狀態時,系統會自動數據重建恢復,同時租戶可設定數據恢復的帶寬規則,最小化對業務的影響。
4. 容災與備份
在分布式存儲的容災中,一個重要的手段就是多時間點快照技術,使得用戶生產系統能夠實現一定時間間隔下的各版本數據的保存。特別值得一提的是,多時間點快照技術支持同時提取多個時間點樣本同時恢復,這對於很多邏輯錯誤的災難定位十分有用,如果用戶有多台伺服器或虛擬機可以用作系統恢復,通過比照和分析,可以快速找到哪個時間點才是需要回復的時間點,降低了故障定位的難度,縮短了定位時間。這個功能還非常有利於進行故障重現,從而進行分析和研究,避免災難在未來再次發生。多副本技術,數據條帶化放置,多時間點快照和周期增量復制等技術為分布式存儲的高可靠性提供了保障。
5. 彈性擴展
得益於合理的分布式架構,分布式存儲可預估並且彈性擴展計算、存儲容量和性能。分布式存儲的水平擴展有以下幾個特性:
1) 節點擴展後,舊數據會自動遷移到新節點,實現負載均衡,避免單點過熱的情況出現;
2) 水平擴展只需要將新節點和原有集群連接到同一網路,整個過程不會對業務造成影響;
3) 當節點被添加到集群,集群系統的整體容量和性能也隨之線性擴展,此後新節點的資源就會被管理平台接管,被用於分配或者回收。
6. 存儲系統標准化
隨著分布式存儲的發展,存儲行業的標准化進程也不斷推進,分布式存儲優先採用行業標准介面(SMI-S或OpenStack Cinder)進行存儲接入。在平台層面,通過將異構存儲資源進行抽象化,將傳統的存儲設備級的操作封裝成面向存儲資源的操作,從而簡化異構存儲基礎架構的操作,以實現存儲資源的集中管理,並能夠自動執行創建、變更、回收等整個存儲生命周期流程。基於異構存儲整合的功能,用戶可以實現跨不同品牌、介質地實現容災,如用中低端陣列為高端陣列容災,用不同磁碟陣列為快閃記憶體陣列容災等等,從側面降低了存儲采購和管理成本。
『叄』 分布式存儲的優點有哪些
分布式存儲的六大優點
分布式存儲往往採用分布式的系統結構,利用多台存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲信息。它不但提高了系統的可靠性、可用性和存取效率,還易於擴展,將通用硬體引入的不穩定因素降到最低。優點如下:
1. 高性能
一個具有高性能的分布式存戶通常能夠高效地管理讀緩存和寫緩存,並且支持自動的分級存儲。分布式存儲通過將熱點區域內數據映射到高速存儲中,來提高系統響應速度;一旦這些區域不再是熱點,那麼存儲系統會將它們移出高速存儲。而寫緩存技術則可使配合高速存儲來明顯改變整體存儲的性能,按照一定的策略,先將數據寫入高速存儲,再在適當的時間進行同步落盤。
2. 支持分級存儲
由於通過網路進行松耦合鏈接,分布式存儲允許高速存儲和低速存儲分開部署,或者任意比例混布。在不可預測的業務環境或者敏捷應用情況下,分層存儲的優勢可以發揮到最佳。解決了目前緩存分層存儲最大的問題是當性能池讀不命中後,從冷池提取數據的粒度太大,導致延遲高,從而給造成整體的性能的抖動的問題。
3. 一致性
與傳統的存儲架構使用RAID模式來保證數據的可靠性不同,分布式存儲採用了多副本備份機制。在存儲數據之前,分布式存儲對數據進行了分片,分片後的數據按照一定的規則保存在集群節點上。為了保證多個數據副本之間的一致性,分布式存儲通常採用的是一個副本寫入,多個副本讀取的強一致性技術,使用鏡像、條帶、分布式校驗等方式滿足租戶對於可靠性不同的需求。在讀取數據失敗的時候,系統可以通過從其他副本讀取數據,重新寫入該副本進行恢復,從而保證副本的總數固定;當數據長時間處於不一致狀態時,系統會自動數據重建恢復,同時租戶可設定數據恢復的帶寬規則,最小化對業務的影響。
4. 容災性
在分布式存儲的容災中,一個重要的手段就是多時間點快照技術,使得用戶生產系統能夠實現一定時間間隔下的各版本數據的保存。特別值得一提的是,多時間點快照技術支持同時提取多個時間點樣本同時恢復,這對於很多邏輯錯誤的災難定位十分有用,如果用戶有多台伺服器或虛擬機可以用作系統恢復,通過比照和分析,可以快速找到哪個時間點才是需要回復的時間點,降低了故障定位的難度,縮短了定位時間。這個功能還非
5. 擴展性
6. 存儲系統標准化
『肆』 計算機存儲系統分為哪幾個層次
在計算機系統中存儲層次可分為高速緩沖存儲器、主存儲器、輔助存儲器三級。高速緩沖存儲器用來改善主存儲器與中央處理器的速度匹配問題。輔助存儲器用於擴大存儲空間。
存儲系統的性能在計算機中的地位日趨重要,主要原因是:
1、馮諾伊曼體系結構是建築在存儲程序概念的基礎上,訪存操作約佔中央處理器(CPU)時間的70%左右。
2、存儲管理與組織的好壞影響到整機效率。
3、現代的信息處理,如圖像處理、資料庫、知識庫、語音識別、多媒體等對存儲系統的要求很高。
(4)存儲分層寫入擴展閱讀:
移動存儲特點:
1、獲國家保密局認證,安全可靠;
2、與加密系統無縫結合,防護能力倍增;
3、國內首創,將普通U盤變為加密U盤,徹底解決U盤的方便性帶來的風險;
4、採用雙因子認證技術;
5、專用加密移動存儲與系統無縫結合,管理更流暢;
6、功能多樣,可滿足各種不同需求的保密要求;
7、完善的審計功能,隨時掌握U盤持有人的行為。
移動存儲功能:
1、集中注冊與授權。可通過注冊信息實現U盤身份識別和介質追蹤;
2、主機身份認證。所有安裝客戶端的計算機都須經管理員分配實名信息後方可使用;
3、加密上鎖。對加密上鎖後的U盤需要用戶進行身份認證;
4、訪問控制。可靈活控制移動存儲介質注冊策略和信息,設定允許使用的計算機或租;
5、外出拷貝。拷入U盤內的數據可與外界的計算機進行數據交互使用,也可實現定向拷貝;
6、用戶審計。移動管理存儲系統提供詳細的審計記錄及審計報告。
主存儲器:
存放指令和數據,並能由中央處理器直接隨機存取的存儲器,有時也稱操作存儲器或初級存儲器。主存儲器的特點是速度比輔助存儲器快,容量比高速緩沖存儲器大。
計算機存儲介質:
計算機存儲介質是計算機存儲器中用於存儲某種不連續物理量的媒體。計算機存儲介質主要有半導體、磁芯、磁鼓、磁帶、激光碟等。
『伍』 信息以文件形式存儲,文件用什麼分類分層存放
文件、塊和對象是三種以不同的方式來保存、整理和呈現數據的存儲格式。這些格式各有各的功能和限制。文件存儲會以文件和文件夾的層次結構來整理和呈現數據;塊存儲會將數據拆分到任意劃分且大小相同的卷中; 對象存儲會管理數據並將其鏈接至關聯的元數據。
塊存儲
塊存儲會將數據拆分成塊,並單獨存儲各個塊。每個數據塊都有一個唯一標識符,所以存儲系統能將較小的數據存放在最方便的位置。這意味著有些數據可以存儲在 Linux 環境中,有些則可以存儲在 Windows 單元中。
塊存儲通常會被配置為將數據與用戶環境分離,並會將數據分布到可以更好地為其提供服務的多個環境中。然後,當用戶請求數據時,底層存儲軟體會重新組裝來自這些環境的數據塊,並將它們呈現給用戶。它通常會部署在存儲區域網路 (SAN) 環境中,而且必須綁定到正常運行的伺服器。
由於塊存儲不依賴於單條數據路徑(和文件存儲一樣),因此可以實現快速檢索。每個塊都獨立存在,且可進行分區,因此可以通過不同的操作系統進行訪問,這使得用戶可以完全自由地配置數據。它是一種高效可靠的數據存儲方式,且易於使用和管理。它適用於要執行大型事務的企業和部署了大型資料庫的企業。這意味著,需要存儲的數據越多,就越適合使用塊存儲。
塊存儲有一些缺點。塊存儲的成本高昂。它處理元數據的能力有限。
操作對象:磁碟
存儲協議:SCSI、iSCSI、FC
介面命令:以SCSI為例,主要有Read/Write/Read Capacity
存儲架構:DAS、SAN
文件存儲
文件存儲也稱為文件級存儲或基於文件的存儲,數據會以單條信息的形式存儲在文件夾中。當需要訪問該數據時,計算機需要知道相應的查找路徑。存儲在文件中的數據會根據元數據來進行整理和檢索,這些元數據會告訴計算機文件所在的確切位置。
請試想一下塞滿文件櫃的儲藏室。每個文檔都會按照某種類型的邏輯層次結構來排放 ——按文件櫃、抽屜、文件夾,然後再是紙張。「分層存儲」這個術語就是這么來的,而這就是文件存儲。它是適用於直接和網路附加存儲(NAS)系統的最古老且運用最為廣泛的一種數據存儲系統;當訪問保存在個人計算機上的文件中的文檔,就是在使用文件存儲。文件存儲具有豐富多樣的功能,幾乎可以存儲任何內容。它非常適合用來存儲一系列復雜文件,並且有助於用戶快速導航。
問題是基於文件的存儲系統必須通過添置更多系統來進行橫向擴展,而不是通過增添更多容量來進行縱向擴展。
操作對象:文件和文件夾
存儲協議:NFS、SAMBA(SMB)、POSIX
介面命令:以NFS為例,文件相關的介面命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等;文件夾相關的介面命令包括:MKDIR/RMDIR/READDIR 等
存儲架構:NAS (【Linux】NAS存儲_Jacky_Feng的博客-CSDN博客)
對象存儲
對象存儲,也稱為基於對象的存儲,是一種扁平結構,其中的文件被拆分成多個部分並散布在多個硬體間。在對象存儲中,數據會被分解為稱為「對象」的離散單元,並保存在單個存儲庫中,而不是作為文件夾中的文件或伺服器上的塊來保存。
對象存儲卷會作為模塊化單元來工作:每個卷都是一個自包含式存儲庫,均含有數據、允許在分布式系統上找到對象的唯一標識符以及描述數據的元數據。元數據包括年齡、隱私/安全信息和訪問突發事件等詳細信息。為了檢索數據,存儲操作系統會使用元數據和標識符,這樣可以更好地分配負載,並允許管理員應用策略來執行更強大的搜索。
對象存儲需要一個簡單的 HTTP 應用編程介面 (API),以供大多數客戶端(各種語言)使用。對象存儲經濟高效:您只需為已用的內容付費。它可以輕松擴展,因而是公共雲存儲的理想之選。它是一個非常適用於靜態數據的存儲系統,其靈活性和扁平性意味著它可以通過擴展來存儲極大量的數據。對象具有足夠的信息供應用快速查找數據,並且擅長存儲非結構化數據。
它的缺點是無法修改對象 ,即必須一次性完整地寫入對象。對象存儲也不能很好地與傳統資料庫搭配使用,因為編寫對象是一個緩慢的過程,編寫應用以使用對象存儲 API 並不像使用文件存儲那麼簡單。
操作對象:對象(Object)
存儲協議:S3、Swift
介面命令:主要有PUT/GET/DELETE等
存儲架構:去中心化框架
對象存儲概念
對象存儲的數據組成
存儲桶(Bucket):存放對象的「容器」,且該「容器」無容量上限。對象以扁平化結構存放在存儲桶中,無文件夾和目錄的概念,用戶可選擇將對象存放到單個或多個存儲桶中。存儲桶的容量大小需要通過累加各個對象的大小得到。
每個存儲桶可容納任意數量的對象,但同一個主賬號下存儲桶數量最多僅能夠創建200個。(???)
對於存儲桶,應當以用途為粒度進行劃分,確保每個存儲桶的用途盡可能單一。例如,針對存放個人文件、發布靜態網站、存儲備份等用途都應該創建不同的存儲桶。此外,不同項目的數據、不同的網站,或者完全私人的文件與工作性質、需要分享的文件,也應該劃分不同的存儲桶。
對象存儲中也沒有「文件夾」的概念。對象存儲的管理平台為了模仿本地存儲的使用習慣,並與本地存儲系統互相兼容而模擬了目錄結構,背後的原理也僅僅是根據 / 這個字元對 key 進行分隔。為了表示空目錄,部分雲平台也提供「文件夾」對象,實際上只是 key 以 / 結尾的空存儲對象。
存儲桶所在地域(Regin)
指對象存儲的數據中心所在地域。對象存儲允許用戶在不同地域創建存儲桶,可以選擇在離業務最近的地域上創建存儲桶,以滿足低延遲、低成本以及合規性要求。
Bucket讀寫許可權
Bucket讀寫許可權包括:私有讀寫、公有讀私有寫和公有讀寫。
私有讀寫
只有該存儲桶的創建者及有授權的賬號才對該存儲桶中的對象有讀寫許可權,其他任何人對該存儲桶中的對象都沒有讀寫許可權。存儲桶訪問許可權默認為私有讀寫,推薦使用。
公有讀私有寫
任何人(包括匿名訪問者)都對該存儲桶中的對象有讀許可權,但只有存儲桶創建者及有授權的賬號才對該存儲桶中的對象有寫許可權。
公有讀寫
任何人(包括匿名訪問者)都對該存儲桶中的對象有讀許可權和寫許可權,不推薦使用。
對象(Object):對象存儲的基本單元,可理解為任何格式類型的數據,例如圖片、文檔和音視頻文件等。
每個對象都由對象鍵(Key)、對象值(Data)、和對象元數據(Metadata)組成。
對象鍵(Key):對象鍵是對象在存儲桶中的全局唯一標識(UID),可以理解為文件(名)路徑。
key用於檢索對象,文件對象的 key 與實際存儲路徑無關,伺服器和用戶不需要知道數據的物理地址,通過key就能找到對象。
對象值(Data):即存儲對象內容數據,可以理解為文件內容(Object Content)。
對象元數據(Metadata):是一組鍵值對,可以通俗的理解為文件的屬性,例如文件的修改時間、存儲類型等。(傳統的文件存儲,元數據屬於文件本身,和文件一起封裝存儲。而對象存儲,元數據獨立出來,並不在數據內部封裝。)
對象訪問地址
對象的訪問地址由存儲桶訪問地址和對象鍵組成,其結構形式為<存儲桶域名>/<對象鍵> 。
例如:上傳對象exampleobject.txt到廣州(華南)的存儲桶examplebucket-1250000000中,那麼exampleobject.txt的訪問地址是:examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject.txt。其中examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com為存儲桶域名,exampleobject.txt為對象鍵。
目錄和文件夾
對象存儲中本身是沒有文件夾和目錄的概念的,對象存儲不會因為上傳對象project/a.txt而創建一個project文件夾。為了滿足用戶使用習慣,對象存儲在控制台、COS browser 等圖形化工具中模擬了「文件夾」或「目錄」的展示方式,具體實現是通過創建一個鍵值為project/,內容為空的對象,展示方式上模擬了傳統文件夾。
對象操作
用戶通過控制台、工具、API、SDK等多種方式管理對象。
對象存儲架構
對象存儲設備(OSD)
OSD由存儲介質、處理器、內存以及網路系統等組成,負責管理本地的對象,是對象存儲系統的核心。和塊設備相比,它們的差異在於提供的訪問介面。OSD的主要功能是數據存儲和安全訪問。
數據存儲:OSD管理對象數據,並將它們放置在標準的磁碟系統上,OSD不提供塊介面訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
智能分布:OSD用其自身的CPU和內存優化數據分布,並支持數據的預取。由於OSD可以智能地支持對象的預取,從而可以優化磁碟的性能。
對象元數據管理:OSD管理存儲的對象元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件伺服器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
元數據伺服器(MDS)
MDS控制Client與OSD對象的交互,為客戶端提供元數據,主要是文件的邏輯視圖(文件與目錄的組織關系、每個文件所對應的OSD等)。主要功能如下:
對象存儲訪問:MDS構造和管理描述每個文件分布的邏輯視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然後才可以訪問。
文件和目錄訪問管理:MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
Client Cache一致性:為了提高Client性能,在對象存儲系統設計時通常支持Client方的Cache。由於引入Client方的Cache,帶來了Cache一致性問題,MDS支持基於Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
客戶端(Client)
對象存儲系統提供給用戶的也是標準的POSIX文件訪問介面。介面具有和通用文件系統相同的訪問方式,同時為了提高性能,也具有對數據的Cache功能和文件的條帶功能。同時,文件系統必須維護不同客戶端上Cache的一致性,保證文件系統的數據一致。
文件系統讀訪問流程:
① 客戶端應用發出讀請求;
② 文件系統向元數據伺服器發送請求,獲取要讀取的數據所在的OSD;
③ 直接向每個OSD發送數據讀取請求;
④ OSD得到請求以後,判斷要讀取的Object,並根據此Object要求的認證方式,對客戶端進行認證,如果此客戶端得到授權,則將Object的數據返回給客戶端;
⑤ 文件系統收到OSD返回的數據以後,讀操作完成。
對象存儲的優缺點
(1)優點:
容量大,高擴展性
對象存儲的容量是EB級以上,對象存儲的所有業務、存儲節點採用分布式集群方式工作,各功能節點、集群都可以獨立擴容。從理論上來說,某個對象存儲系統或單個桶(bucket),並沒有總數據容量和對象數量的限制,即服務商就可以不停地往架構里增加資源,這個存儲空間就是無限的,也是支持彈性伸縮的。
高安全性,可靠性
對象存儲採用了分布式架構,對數據進行多設備冗餘存儲(至少三個以上節點),實現異地容災和資源隔離。數據訪問方面,所有的桶和對象都有訪問控制策略,所有連接都支持SSL加密,訪問用戶進行身份許可權鑒定。
高性能,支持海量用戶的並發訪問
(2)缺點:
不支持直接在存儲上修改
對象存儲系統保存的Object不支持修改(追加寫Object需要調用特定的介面,生成的Object也和正常上傳的Object類型上有差別)。用戶哪怕是僅僅需要修改一個位元組也需要重新上傳整個Object。因此,它不適合存儲需要頻繁擦寫的數據。
參考鏈接:
對象存儲,為什麼那麼火? - 知乎 (hu.com)
對象存儲 存儲桶概述 - 開發者指南 - 文檔中心 - 騰訊雲 (tencent.com)
基本概念 (aliyun.com)
文件存儲、塊存儲還是對象存儲? (redhat.com)
linux
駐馬店市民請關注領取補貼!
巨魔-抽手機公告
廣告
對比塊存儲、文件存儲、對象存儲
1242閱讀·0評論·3點贊
2019年2月27日
ShapeFile的文件格式設計
90閱讀·0評論·0點贊
2009年3月20日
應用ceph對象存儲(ceph-13.2.10)
72閱讀·0評論·0點贊
2022年11月26日
三種存儲類型比較-文件、塊、對象存儲
4.8W閱讀·0評論·13點贊
2016年7月26日
常見圖片存儲格式文件簡介
4534閱讀·0評論·0點贊
2020年5月4日
s3cmd常用命令
781閱讀·0評論·0點贊
2022年11月17日
駐馬店發布,你有一台5G手機待領取
00:23
巨摩互動
廣告
常見的存儲格式
1083閱讀·0評論·0點贊
2022年2月15日
文件、對象、塊區別
1399閱讀·0評論·0點贊
2020年7月13日
對象存儲、文件存儲、塊存儲的區別和聯系
7330閱讀·2評論·5點贊
2021年10月16日
數據分析中常見的存儲方式
1537閱讀·0評論·0點贊
2021年11月16日
三種存儲類型:塊存儲、文件存儲、對象存儲
1.5W閱讀·3評論·55點贊
2020年11月2日
如何設計二進制文件格式
1940閱讀·0評論·1點贊
2020年3月6日
BMP文件存儲格式
472閱讀·0評論·2點贊
2021年8月2日
hive 的存儲格式
1765閱讀·0評論·1點贊
2022年6月18日
數據存儲格式
446閱讀·0評論·0點贊
2022年12月21日
總結:對象存儲、塊存儲、文件存儲的區別
6606閱讀·0評論·3點贊
2022年4月9日
c語言中文件rw,什麼是「塊文件」?
386閱讀·0評論·0點贊
2021年5月23日
【存儲】塊存儲、文件存儲和對象存儲的區別?
350閱讀·0評論·0點贊
2022年7月22日
塊存儲、文件存儲與對象存儲的區別與應用場景
1846閱讀·1評論·0點贊
2022年6月5日
數據在內存中的存儲方式
272閱讀·0評論·0點贊
2022年8月21日
去首頁
看看更多熱門內容
『陸』 分層存儲與虛擬化技術的分層存儲
分層存儲其實已經不是一個新鮮的概念,而是已經在計算機存儲領域應用多年。其與計算機的發明與發展相伴相生。在馮-諾依曼提出計算機的模型「存儲程序」時就已經包含了分層存儲的概念。「存儲程序」原理,是將根據特定問題編寫的程序存放在計算機存儲器中,然後按存儲器中的存儲程序的首地址執行程序的第一條指令,以後就按照該程序的規定順序執行其他指令,直至程序結束執行。在這里的外存儲器與內存儲器,就是一個分層存儲的最初模型。
分層存儲(Tiered Storage),也稱為層級存儲管理(Hierarchical Storage Management),廣義上講,就是將數據存儲在不同層級的介質中,並在不同的介質之間進行自動或者手動的數據遷移,復制等操作。同時,分層存儲也是信息生命周期管理的一個具體應用和實現。
而實際上,將相同成本及效率的存儲介質放在不同層級之間進行數據遷移復制在實用性及成本上並不是有效的數據存儲方式。因此,在不同的層級之間使用有差別的存儲介質,以期在相同成本下,既滿足性能的需要又滿足容量的需要。這種存儲介質上的差別主要是在存取速度上及容量上。存取速度快的介質通常都是存儲單位成本(每單位存儲容量成本,如1元/GB)高,而且容量相對來講比較低。相應的,存取速度慢的介質通常是為了滿足容量與成本方面的要求,既在相同的成本下可以得到更大的容量。所以,從這方面來說,分層存儲其實是一種在高速小容量層級的介質層與低速大容量層級的介質層之間進行一種自動或者手動數據遷移、復制、管理等操作的一種存儲技術及方案。
一般來說,分層存儲中,我們將存取速度最快的那一層的介質層稱為第0層(Tier 0),依次為第1層,第2層等等。理論上說,層級的劃分可以有很多層,但是在實踐中,最多的層級在5層左右。過多的層級會增加數據及介質管理的難道及可用性。因此在層級的設置上有一個拐點,即層級達到一個特定的層數時,會導致成本的上升,而使得可用性、可靠性都會相應下降。通常層級的設定在2-4層之間。如下圖所示: 在計算機系統中,CPU 的運行速度往往要比內存速度快上好幾百倍甚至更多,為了更多地榨取CPU的計算能力,就需要在訪問數據的速度上進行提升,否則內存的速度將成為整個系統的性能短板。因此在這樣的思想下,CPU慢慢發展出來1級或者2級這樣的存儲緩存。實際也表明,緩存的存在確實對於系統性能的提升起到了巨大的推動作用。
相應的,內存的訪問速度又是硬碟訪問速度的幾百倍甚至更多,也是基於CPU類似的指導思想,我們能不能在存儲之間也進行這樣的分層(或者說緩存)以期提高系統的I/O性能,以滿足應用對系統提出的更多高I/O的需求呢?
從某種意義上說,內存其實也就是充當了CPU與外部存儲之間的另一個級別的緩存。作為用戶來講,我們當然希望所有需要用到的數據都最好是存在最高速的存儲當中。但是這樣近乎是烏托邦式的理想至少在當前來說是不現實的。在技術上的難度不說,成本的壓力就會使得用戶喘不過氣來,再一個就是有沒有必要的問題,因為有的數據根本都不需要一直存於這樣的存儲中。在計算機界中有一個很有名的理論,就是說,加上一個中間層,就可以解決計算機中許多的問題。而這個「中間層」也正是我們所尋求的,實際也證明這樣的中間層確實取得了非常好的效果。
據IDC數據預測,到2012年,信息數據的增長將會達到50%的復合年增長率,這個增長主要源於越來越來多數據內容生成並存儲,經濟全球化使用商業各個部門及與商業夥伴之間需要保持連接,使得更多的數據被生成,復制及保存。法規遵從及管理,還有容災與備份都使得數據的增長持續上升。天下沒有一勞永逸的解決方案,我們需要根據不同的數據存儲需求,設計不同的存儲方案。比如歸檔,我們可以將數據存儲在磁帶上,比如需要頻繁訪問的實時數據我們可以放在內存或者SSD(固態硬碟)設備中,對於容災或者備份,我們可以使用大容量低成本的存儲來應對。正所謂好鋼用在刀刃上,用戶也希望把資金投向更能產生效益的存儲上。
除了需要滿足不同的存儲需求,還有出於對於高性能高吞吐量應用的支持。因為有的應用需要這樣存儲系統。特別是現在風頭正勁的虛擬化技術。為了在一台設備上支持更多的虛擬應用,就需要系統支持更大的吞吐量以及更高的性能。全部採用高速介質在成本上現在依然不是可行的,也不是必須的。因為根據數據局部性原理,往往被頻繁訪問的數據是局部而有限的。為了應對部份這樣的數據而全採用高速存儲實在是過於奢侈。如果我們針對這部份數據另開小灶來解決不是更好?所以分層存儲在這里就可以大展拳腳。我們把高頻率訪問的數據放在高速存儲介質上,而其他的數據放在速度較慢一些的介質上,這實際上就是提高了系統的吞吐量。 從計算機系統角度來說,最上層的存儲層應該是CPU內的各類型寄存器,其次是CPU內的緩存,其次再是系統內存。因為從分層存儲的定義上,此類型存儲器是符合定義規則的。因為這些存儲器速度與容量都有差別,越靠近CPU的存儲器成本越高,速度越快,容量越小,並且在CPU的控制下,數據這些不同類型的存儲器中間進行自動的轉存。比如寄存器通常在16、32、64、128位之間,而緩存則在幾十個位元組及到幾兆位元組之間,內存容量當前通常都在幾百兆位元組以上,伺服器級的內存也上幾十個吉位元組。很有意思的是,這類型的分層也非常符合上圖所示的效益成本曲線圖。層級過多時,對於CPU的硬體設計及不同層次之間的數據一致性的保證都是一個挑戰。所以,現代CPU在寄存器與內存之間的緩存基本在1-3級。而我們通常使用的386平台的CPU(Intel 及 AMD)基本上都只有兩級緩存。這類存儲都有一個共同的特點,就是系統掉電後數據不復存在。我們將此類型的分層存儲稱為易失性存儲分層,或者內部存儲器分層存儲。
而另外一種分類,則是非易失性分層存儲,或者叫外部分層存儲。此類型的存儲介質一般包括固態硬碟(SSD)、機械式硬碟、光碟、快閃記憶體檔(包括外置硬碟)、磁帶庫等等。而此類的存儲介質分層正是我們所要關注的,如沒有特殊的說明情況下,在此文檔中所說的分層存儲都是指外部分層存儲。一般來說,作為第0層的存儲介質通常為 RAM 磁碟(隨機訪問存儲磁碟,其速度與內存同速,但是價格昂貴,使用環境基本上是特殊計算環境)以及 SSD,第1層可能有 FC 15K硬碟或者SAS 15K硬碟,或者相應的10K硬碟。第2層可能有其他類型的硬碟及磁碟庫等。第3層,可能是如磁帶庫以及光碟庫這樣的離線介質。當然這樣的分層不是標准,但是一個實踐中常用的分層策略。
如 D2D2T 這樣的存儲方案,其實就是分層存儲的一個實踐方案。數據從本地的磁碟轉存於於另一個遠程的磁碟(D2D)。這個磁碟的形式可以是一個JBOD,或者一個虛擬存儲設備,然後再通過一定的轉存策略將這個磁碟的數據轉存於磁帶庫或者磁帶(D2T)。愛數備份存儲櫃X系列都支持D2D2T這樣的應用。 由上一節可知道,外部分層存儲只不過是內部分層存儲的一個外延。所以,外部分層存儲考慮的問題與內部分層存儲實際上是大同小異的。
1、 首先是數據一致性的問題。這個問題比較好理解。如果不同的數據在不同的存儲層級之間存在時,數據的改寫必然導致數據的不致的問題。在內部分層存儲時,可以採用通寫策略或者回寫策略。而不同的方法也有各自優缺點,這里就不再贅述。但是外部分層存儲與內部分層存儲有一個最大的不同是,內存儲最終數據需要寫到內存中,而外分層存儲中,則不是必須的。當然也可以設計成這樣的實現方案,但是這樣話,分層存儲的性能優勢則必定會受到影響。數據在不同層級之間的連續性可以由一個虛擬層來保證。這個我們在談到虛擬化時會討論這個問題。
2、 第二個問題就是命中率的問題。如何設計一套演算法或者實現策略來提高數據系統的命中率是分層存儲中是否能起到其相應作用的關鍵。這個與CPU的緩存機制是完全一樣的。不過,CPU的緩存機制已經有一套非常成熟的演算法設計。而外部分層存儲與內部分層存儲有其不同的特性,因此,CPU中的緩存機制不能全部照拿過來用。特別是CPU的緩存機制還主要是硬體設計上面的問題。而外部存儲層可能還與一些邏輯設計相關,比如文件系統,文件等。從這點上說,外部分層存儲的軟體設計上比起CPU緩存的設計可能要更復雜一些。
3、 第三個問題就是在分層介質的選擇上。上面也提過,不同層級之間的介質應該是有差別的,否則就失去了分層的意義。一般來說,高速介質應該是小容量、高成本,隨著層級的往下走,其成本容量曲線應該呈現如下的形式:
即容量越大的單位成本越低,速度越慢,因此應該放到更低的層級中,反之亦然。因此,在存儲介質的配置上如何找到一個合適的點,使得成本與效益最優化則是在分層介質選擇及策略制定上需要考慮的問題。下面的圖中給出了一個實際的可能的配置方案:1、 第四個問題就是數據分層的級別。對於數據的描述有位元組級,塊級(包括扇區及簇),文件級及文件系統級。當然不同的級別有不同的應用場合,並不是哪種級別好於哪個級別。對於文件級的分層,對於歸檔,法規遵從則比較適合。對於文件系統級的則多用於容災及備份系統中。對於塊級則可能用在虛擬化中較為合適。因此需要根據不同的需求制定不同的分層級別。
2、 第五個問題就是數據的遷移策略的設計。可以根據數據的重要性、訪問頻度、大小、年齡來制定遷移策略。但是如同第四點所說明的那樣,不同的策略是有不同的應用場合的,沒有孰優孰劣的問題。好的策略應該是不同最優策略的組合,也就是因「需」制宜地選擇合適的遷移演算法或者方法。根據年齡進行遷移的策略可以用在歸檔及容災備份系統中。根據訪問頻度則可以用於虛擬化存儲系統中等等。類似的方法已經用於計算機軟體設計或者硬體設計當中的很多地方,如LRU(最近最少使用)、ARC(自適應交替緩存)都是可以借鑒的。
『柒』 如何利用固態硬碟進行存儲分層
固態硬碟不是用來存儲的,它的優勢在讀取,所以,固態硬碟要用來安裝操作系統和常用的軟體。
存儲的事情,交給機械硬碟來做。