存儲系統
簡介
存儲系統是計算機的重要組成部分之一。存儲系統提供寫入和讀出計算機工作需要的信息(程序和數據)的能力,實現計算機的信息記憶功能。現代計算機系統中常採用寄存器、高速緩存、主存、外存的多級存儲體系結構。 計算機存儲系統的核心是存儲器,存儲器是計算機中必不可少、用來存儲程序和數據的記憶設備。 內部存儲器(簡稱內存)主要存儲計算機當前工作需要的程序和數據,包括高速緩衝存儲器(Cache,簡稱緩存)和主存儲器。目前構成內存的主要是半導體存儲器。外部存儲器(簡稱外存)主要有磁性存儲器、光存儲器和半導體存儲器三種實現方式,存儲介質有硬磁盤、光盤、磁帶和移動存儲器等。 現代計算機系統多級存儲體系結構如圖6-1,其中越頂端的越靠近CPU,存儲器的速度越快、容量越小、每位的價格越高。採用這種組織方式能較好地解決存儲容量、速度和成本的矛盾,提供一個在價格、容量上邏輯等價於最便宜的那一層存儲器,而訪問速度接近於存儲系統中最快的那層存儲器。
分層結構
存儲系統的層次化結構可以分為5級:寄存器組、高速緩存Cache、主存、虛擬存儲器和外部存儲器。其中,寄存器組總是在CPU內部,程序員可通過寄存器名訪問,無總線操作,訪問速度最快;其餘4級均在CPU外部,Cache和主存構成內存儲系統,程序員通過總線尋址訪問存儲單元,訪問速度較寄存器差;虛擬存儲器對程序員而言是透明的 ;外部存儲系統容量大,需通過I/O接口與CPU交換數據,訪問速度最慢。
發展
計算機的外部存儲系統如果從1956年IBM製造出第一塊硬盤算起,發展至今已經有半個多世紀了。在這半個多世紀裡,存儲介質和存儲系統都取得了很大的發展和進步。早期的數據存儲一般以磁盤陣列等設備為外設,圍繞服務器通過直連的方式進行存儲。而近年來,隨着網絡技術的發展,服務器的數據讀取範圍也得到了很大拓展,逐漸實現了現在的網絡存儲。相較於傳統存儲來說,網絡存儲的優勢更加突出,其不但安裝便捷、成本低廉,並且還能夠大規模的拓展存儲設備,從而有效滿足了海量數據存儲對存儲空間的需求。不過網絡存儲對網絡資源的消耗極大,這是一項難題,為此,後來又逐漸出現了SAN存儲架構。 [6]傳統存儲系統目前傳統存儲系統主要的3種架構,包括DAS、NAS和SAN。 1.DAS(Direct-AttachedStorage,直連式存儲)顧名思義,這是一種通過總線適配器直接將硬盤等存儲介質連接到主機上的存儲方式,在存儲設備和主機之間通常沒有任何網絡設備的參與。可以說DAS是最原始、最基本的存儲架構方式,在個人電腦、服務器上也最為常見。DAS的優勢在於架構簡單、成本低廉、讀寫效率高等;缺點是容量有限、難於共享,從而容易形成「信息孤島」。 2.NAS(Network-AttachedStorage,網絡存儲系統)NAS是一種提供文件級別訪問接口的網絡存儲系統,通常採用NFS、SMB/CIFS等網絡文件共享協議進行文件存取。NAS支持多客戶端同時訪問,為服務器提供了大容量的集中式存儲,從而也方便了服務期間的數據共享。3.SAN(StorageAreaNetwork,存儲區域網絡)通過光纖交換機等高速網絡設備在服務器和磁盤陣列等存儲設備間搭設專門的存儲網絡,從而提供高性能的存儲系統。 [5]SAN與NAS的區別,在於其提供塊(Block)級別的訪問接口,一般並不同時提供一個文件系統。通常情況下,服務器需要通過SCSI等訪問協議將SAN存儲映射為本地磁盤、在其上創建文件系統後進行使用。目前主流的企業級NAS或SAN存儲產品一般都可以提供TB級的存儲容量,高端的存儲產品也可以提供高達幾個PB的存儲容量。 [5]分布式存儲系統大數據導致了數據量的爆發式增長,傳統的集中式存儲(如NAS或SAN)在容量和性能上都無法較好地滿足大數據的需求。因此,具有優秀的可擴展能力的分布式存儲成為大數據存儲的主流架構方式。分布式存儲多採用普通的硬件設備作為基礎設施,因此,單位容量的存儲成本也得到大大降低。另外,分布式存儲在性能、維護性和容災性等方面也具有不同程度的優勢。 分布式存儲系統需要解決的關鍵技術問題包括諸如可擴展性、數據冗餘、數據一致性、全局命名空間緩存等,從架構上來講,大體上可以將分布式存儲分為C/S(Client Server)架構和P2P(Peer-to-Peer)架構兩種。當然,也有一些分布式存儲中會同時存在這兩種架構方式。分布式存儲面臨的另外一個共同問題,就是如何組織和管理成員結點,以及如何建立數據與結點之間的映射關係。成員結點的動態增加或者離開,在分布式系統中基本上可以算是一種常態。 EricBrewer於2000年提出的分布式系統設計的CAP理論指出,一個分布式系統不可能同時保證一致性、可用性和分區容忍性(Partitiontolerance)這3個要素。因此,任何一個分布式存儲系統也只能根據其具體的業務特徵和具體需求,最大地優化其中的兩個要素。當然,除了一致性、可用性和分區容忍性這3個維度,一個分布式存儲系統往往會根據具體業務的不同,在特性設計上有不同的取捨,比如,是否需要緩存模塊、是否支持通用的文件系統接口等。 雲存儲雲存儲是由第三方運營商提供的在線存儲系統,比如面向個人用戶的在線網盤和面向企業的文件、塊或對象存儲系統等。雲存儲的運營商負責數據中心的部署、運營和維護等工作,將數據存儲包裝成為服務的形式提供給客戶。雲存儲作為雲計算的延伸和重要組件之一,提供了「按需分配、按量計費」的數據存儲服務。因此,雲存儲的用戶不需要搭建自己的數據中心和基礎架構,也不需要關心底層存儲系統的管理和維護等工作,並可以根據其業務需求動態地擴大或減小其對存儲容量的需求。雲存儲通過運營商來集中、統一地部署和管理存儲系統,降低了數據存儲的成本,從而也降低了大數據行業的准入門檻,為中小型企業進軍大數據行業提供了可能性。比如,著名的在線文件存儲服務提供商Dropbox,就是基於AWS(AmazonWeb Services)提供的在線存儲系統S3創立起來的。在雲存儲興起之前,創辦類似於Dropbox這樣的初創公司幾乎不太可能。 雲存儲背後使用的存儲系統其實多採用分布式架構,而雲存儲因其更多新的應用場景,在設計上也遇到了新的問題和需求。比如,雲存儲在管理系統和訪問接口上大都需要解決如何支持多租戶的訪問方式,而多租戶環境下就無可避免地要解決諸如安全、性能隔離等一系列問題。另外,雲存儲和雲計算一樣,都需要解決的一個共同難題就是關於信任(Trust)的問題——如何從技術上保證企業的業務數據放在第三方存儲服務提供平台上的隱私和安全,的確是一個必須解決的技術挑戰。將存儲作為服務的形式提供給用戶,雲存儲在訪問接口上一般都會秉承簡潔易用的特性。比如,亞馬遜的S3存儲通過標準的HTTP協議、簡單的REST接口進行存取數據,用戶分別通過Get、Put、Delete等HTTP方法進行數據塊的獲取、存放和刪除等操作。出於操作簡便方面的考慮,亞馬遜S3服務並不提供修改或者重命名等操作;同時,亞馬遜S3服務也並不提供複雜的數據目錄結構而僅僅提供非常簡單的層級關係;用戶可以創建一個自己的數據桶(bucket),而所有的數據則直接存儲在這個bucket中。另外,雲存儲還要解決用戶分享的問題。亞馬遜S3存儲中的數據直接通過唯一的URL進行訪問和標識,因此,只要其他用戶經過授權便可以通過數據的URL進行訪問。 存儲虛擬化是雲存儲的一個重要技術基礎,是通過抽象和封裝底層存儲系統的物理特性,將多個互相隔離的存儲系統統一化為一個抽象的資源池的技術。通過存儲虛擬化技術,雲存儲可以實現很多新的特性。比如,用戶數據在邏輯上的隔離、存儲空間的精簡配置等。