1. 雲端磁碟:網路巨頭如何存儲數據(上)
當你和成千上萬的其他人同時提交搜索時,這個快照也正在不斷地隨著這些變化被更新著。與此同時,數據是由數以千計的獨立伺服器進程處理的,每個都各司其職,從計算出給你提供的相關聯廣告,到決定搜索結果的排列順序。 支持谷歌搜索引擎的存儲系統必須能夠承受每天由運行於數以千計的伺服器上的成千上萬的獨立進程所發出的數百萬計的讀寫請求,幾乎不能停機來備份或維護,還必須不斷擴容以容納由谷歌網頁抓取機器人添加的日益擴大的眾多頁面。總體下來,谷歌每天要處理超過20PB。 這可不是谷歌可以從一個現成的存儲架構就能完成的。而且對於運行超大規模的數據中心的其他網路和雲計算巨頭來說也是如此,比如亞馬遜和Facebook。雖然大多數數據中心已經通過在一個存儲區網路添加更多硬碟容量來解決擴充存儲的問題,更多的存儲伺服器,通常是更多的資料庫伺服器,因為雲環境的性能限制,這些方法卻失效了。在雲環境下,任何時候都可能有成千上萬的活躍用戶的數據,而且數據的讀寫在任何時刻都能達到數千TB。 這不僅僅是一個關於磁碟讀寫速度的簡單問題。以這些卷上的數據流來講,主要的問題是存儲網路的吞吐量;即使有最好的交換機和存儲伺服器,傳統的SAN架構也能成為數據處理的性能瓶頸。 接下來就是老生常談的擴大存儲的成本問題。超大規模網路公司增加容量的頻率(舉個例子,亞馬遜現在每天為其數據中心增加的容量相當於整個公司在2001年全年的容量,根據亞馬遜副總裁傑姆斯·漢密爾頓的說法),用大多數數據中心的同樣做法來擺平所需的存儲,依照所需的管理,硬體和軟體成本,花費將是巨大的。這種花費在關系資料庫被添加到混合資料庫時甚至更高,這取決於一個組織對它們的分割和復制如何處理。 對於這種不斷擴展和持久存儲的需求,驅使互聯網巨頭——谷歌,亞馬遜,Facebook,微軟等等——採取一種不同的存儲解決方案:基於對象存儲的分布式文件系統。這些系統至少都部分受到其他分布式集群文件系統的啟發,如Red Hat的全局文件系統和IBM的通用並行文件系統。 這些雲巨頭的分布式文件系統的架構把元數據(關於內容的數據)從它存儲的數據中分開。這能通過多個副本對數據進行大量並行讀寫操作,並且拋掉了像「文件鎖定」這樣的概念。 這些分布式文件系統的影響遠遠超出了它們為超大規模數據中心而創建的范疇——它們會直接影響那些使用公共雲服務的公司(比如亞馬遜的EC2,谷歌的AppEngine和微軟的Azure)如何開發和部署程序。公司,大學和政府機構尋找一種快速存儲和提供大量數據訪問的方法正日益變成受雲巨頭們啟發的數據存儲系統的新階段。因此有必要了解一下它們的發展史和過程中所做的工程折衷方案。谷歌文件系統 谷歌是最早面對存儲容量問題的主流網路公司中的一家。在2003年,谷歌工程師們找到了問題的答案,就是建立一個可為谷歌數據中心戰略定製的分布式文件系統——谷歌文件系統(GFS)。 谷歌文件系統幾乎是所有公司雲服務的基礎。它能夠處理數據存儲,包括公司的BigTable資料庫和為谷歌的AppEngine「平台即服務」的數 據儲存,並且為谷歌搜索引擎和其他程序提供數據。谷歌創建谷歌文件系統的設計決定推動了大量雲架構下的軟體工程技術,反之亦然。谷歌往往把程序數據儲存在 大量的文件里,並把文件作為「生產者-消費者隊列」使用,數以百計的機器收集的數據可能被寫入同一個文件。這個文件可能會由另一個合並或分析數據的應用程 序處理——或許甚至是在數據正被寫入的時候。 「這當中的某些伺服器一定會出錯——因此谷歌文件系統被設計為能夠容忍這種錯誤,不會丟失(太多)數據」。 谷歌為自己保留了大量技術細節,原因很明顯。但是由谷歌研究員Sanjay Ghemawat,首席工程師Howard Gobioff和高級工程師Shun-Tak Leung在2003首次發表的報告中提到,谷歌文件系統在設計上是帶有一些非常具體的優先考慮的:谷歌想把大量便宜的伺服器和硬碟驅動器變成一個可以儲 存數百TB數據的能夠在出錯時自行管理可靠的數據存儲。並且它需要被設計成按谷歌的方式收集和讀取數據,允許多個應用程序同時把大批量數據添加到系統上, 且能以高速訪問。 就像是一個RAID 5存儲陣列通過多磁碟放置數據進行出錯保護,谷歌文件系統把文件分成固定大小的塊,復制到整個伺服器集群。因為它們是用著廉價硬碟的電腦,其中一些伺服器肯定會出錯——因此谷歌文件系統被設計為能夠容忍這種錯誤,不會丟失(太多)數據。 但是RAID和GFS的相同點就到此為止了,因為那些伺服器可以分布於網路——既可以在第一個單獨的物理數據中心也可以分散於不同的數據中心,取決 於數據的用途。GFS設計主要用於批量處理大量數據。重點是高速讀取數據,而不是到文件中某個部分的訪問速度,也不是數據寫入到文件系統的速度。GFS提 供如此高輸出是以犧牲更高密度的讀寫和更快速度的數據寫入為代價的。正如Ghemawat和公司在文件中所說,「在文件中任意位置的小的寫入是支持的,但 不一定非要高效。」 這種分布式的性質,隨著GFS處理數據量的龐大——數百萬的文件,當中很多都超過100MB而且通常都會變成GB——需要一些取捨,以便讓GFS和 你通常安裝在一台伺服器上的文件系統有很大的不同。因為成百上千的獨立進程可能同時對一個文件進行寫入和讀取,GFS需要支持「原子性」數據——在不影響 其他程序的情況下回滾出錯的寫入。而且它需要以非常低的同步開銷保持數據的完整性以避免拖垮性能。 GFS由三層組成:GFS客戶端,處理程序數據請求;管理伺服器,用內存中的索引追蹤數據文件名和所在區塊的位置;還有數據存儲伺服器本身。最初, 為簡單起見,GFS為每個集群使用一個單獨的管理伺服器,因此系統被設計成讓管理伺服器盡可能避開數據訪問。谷歌已經發開出了一個分布式管理伺服器系統, 可以控制數百台管理伺服器,每一台都能處理大約1億個文件。 當GFS客戶端收到一個特定數據文件的請求,它需要從管理伺服器請求數據的位置。管理伺服器提供其中一個副本的位置,之後客戶端就可以直接與存儲伺服器進行溝通,用來讀寫剩下的其他部分。管理伺服器就不再參與其中了,除非有錯誤發生。 為確保數據是高度可用的,GFS舍棄了其他一些東西——比如各副本間的一致性。GFS確實堅持數據的原子性——如果寫入失敗,它將返回一個錯誤,然 後將寫入回滾到元數據,並產生一個舊數據的副本。但是管理伺服器在數據寫入上的介入缺失意味著當數據寫入到系統時,它不能立刻讓副本遍布整個GFS集群。 在處理對數據同時訪問和網路限制的必要性之外,該系統遵循谷歌所謂的「寬松一致性模型」。 這意味著GFS對於在必要時從舊的副本提供陳舊的數據完全不在乎——只要數據最終得以更新。管理伺服器的追蹤變化,或「突變」,當變化發生時,區塊中的數據會用版本號來指示。由於一些副本被留下了(或變「舊了」),GFS管理伺服器會確保這些區塊在更新前不會送至客戶端。 但這並不一定發生在已經連接到那些區塊的部分。元數據的變更在管理伺服器處理這些變更,並將它們反映在元數據前是不可見的。元數據也需要在多個位置 生成副本,以防管理伺服器出錯——那樣的話整個文件系統就丟失了。而且如果在寫入過程中管理伺服器有錯誤發生,變更同樣會消失。由於谷歌處理數據的方式, 這並不是一個大問題:程序使用的大部分的數據很少變化,而且當變化發生時,數據通常是擴充的而不是原地修改的。 當GFS在為2003年運行的谷歌應用設計出來時,離谷歌開始遭遇擴展性問題並不遠。甚至是在公司收購YouTube之前,GFS開始碰壁——很大 原因是谷歌新添加的應用在64M文件大小下工作的不是很好。為了繞過它,谷歌轉向了Bigtable,一種基於表格的數據存儲,那依稀類似於資料庫,位於 GFS之上。Bigtable大多是一次寫入,因此變更被作為對表的擴展進行存儲的——谷歌將其用於如對Google Docs進行版本控制的類似應用上。 如果你不是在谷歌工作,那上述內容太過於學術性了(雖然它可以幫助AppEngine,谷歌雲存儲和谷歌其他服務的用戶更好地了解檯面下是怎麼事 兒)。雖然谷歌雲存儲通過一個網路介面提供了一個公開方式來儲存和訪問位於GFS上的文件,但是操控GFS的真正介面和工具並不是公開的。但報告稱GFS 引領了更廣泛使用的分布式文件系統的發展,如:Hadoop分布式文件系統。Hadoop分布式文件系統(HDFS) Hadoop是用Java開發的,作為Apache基金會的一個開源項目,它在網路公司和其他有「大數據」問題的公司間已經有了如下的口碑,它被稱 之為「二十一世界的瑞士軍刀」。所有這些宣傳意味著,你很可能會發現你遲早要以某種形式用Hadoop處理問題而不是用其他的分布式文件系統——特別是當 微軟開始將其列入Windows Server的擴展中的時候。 Hadoop是由開發者Doug Cutting在他兒子給一隻玩具大象起名後用它命名的,「靈感」來自於GFS和谷歌的MapRece分布式計算環境。在2004年,Cutting 和其他工作於Apache Nutch搜索引擎項目的人試圖尋求一種可以將抓取器和索引帶向「網路規模」的方式,Cutting閱讀了谷歌關於GFS和MapRece的論文並開 始動手開發自己的項目。雖然對於Hadoop的大多數熱情來自於它由MapRece啟發的分布式處理管理衍生出的分布式數據處理能力,但使用 Hadoop分布式文件系統還是因為它能對大量數據進行處理。 Hadoop是在Apache許可證下開發的,有許多商業和自由發行版可用。我用的版本來自Cloudera公司(Doug Cutting現在的東家)——Cloudera發行版包括了Apache Hadoop(CDH),Cloudera企業平台的開源版本,和Cloudera服務和配置特別版,它可免費支持50個節點。 HortonWorks,該公司與微軟合作幫助後者把Hadoop移植到Azure和Windows Server,有其自己的基於Hadoop和HortonWorks數據平台,是一個受限的「技術預覽版」。同樣還有Apache Core的Debian包,和許多其他開源的或商業的基於Hadoop的某種形式的產品。 HDFS可被用於支持在大量廉價硬體和大數據下廣泛的應用。但由於其架構,它不完全適合於通用數據存儲,並且放棄了一定的靈活性。HDFS必須廢除 某些經常與文件系統有關的事情,以確保它能更好地處理在分布著數百甚至數千台物理機器上的大量數據——如對數據交互訪問這種事情。 雖然Hadoop運行於Java上,但是除了它的Java API之外還有許多種方式和HDFS進行交互。有一種C語言版本的API,通過Hadoop的命令行界面,文件可以通過HTTP請求瀏覽。還有 MountableHDFS,一個基於FUSE的擴展,允許HDFS被大多數操作系統作為一個文件系統掛載。開發者們正在製作一個WebDAV介面,讓系 統可以進行基於網路的數據寫入。 HDFS嚴格遵循了由谷歌的GFS奠定的架構路線,延續了它的三層,單管理伺服器模型。每個Hadoop集群有一個叫做「名位元組點」的管理伺服器, 它來追蹤關於位置和每個64M存儲「塊」副本的狀態的元數據。數據通過集群中的「數據節點」復制——從屬系統處理數據的讀寫。默認情況下每個塊都會被復制 三次,而且復制的次數還可以通過改變集群設置來增加。 像GFS一樣,HDFS讓管理伺服器盡可能快地避開讀寫循環,避免產生性能瓶頸。當從HDFS上訪問數據的請求產生時,名位元組點發回與這個請求最近 的數據節點上的塊的位置信息。名位元組點還可以通過一個「心跳」協議追蹤每個數據節點的健康度並停止向不響應的數據節點發送請求,把它們標記為「死的」。 在切換後,名位元組點就不處理任何更進一步的交互。對數據節點上數據的編輯被報告回名位元組點並記錄在日誌里,之後用變動的數據副本對其他數據節點進行 復制。同GFS一樣,這導致了一致性上相應的懶散形式,而且雖然名位元組點將為最近修改的數據塊發送新的請求,正在進行的工作仍然會碰到它們被分配到的數據 節點上的陳舊數據。 那不應該是經常發生的,然而,因為HDFS數據應該被「寫入一次」——變動通常是擴充數據,而不是改動現有數據,為了更簡單的一致性。而且由於Hadoop應用的性質,數據往往會大批量地寫入HDFS。 當一個客戶端發送要寫入HDFS的數據時,它首先被客戶端程序安置在一個臨時的本地文件中,直到寫入的數據達到了數據塊的大小——默認64MB。之 後客戶端聯系名位元組點並獲得一個數據節點和要寫入數據的塊位置。這一過程對每個塊的數據重復進行,一次一個塊。這減少了產生網路阻塞的數量,但也減慢了寫 入過程。但是HDFS是用於讀取的,而不是寫入。 HDFS可以減少網路寫入流量的另一個辦法是在於它處理復制的方式。通過激活一個叫做「機架感知」的HDFS特性來管理分布的副本,管理員可以為每 個節點指定一個機架序號,通過網路配置腳本中的一個變數指定它的物理位置。默認情況下,所有的節點都在同一個「機架」中。但是當機架感知被配置以 後,HDFS把每個塊上的一個副本放置於同一個數據中心機架的另一個節點上,另一個則在不同的機架上,來減少網路中數據寫入量——基於如下理由,就是一整 個機架出錯的幾率比一個單一節點出錯的幾率要小。理論上,它整體改善了HDFS的寫入性能而沒有犧牲掉可靠性。 與GFS早期版本一樣,對於一個要成為高度可用的分布式系統,HDFS的名位元組點創建一個單一的故障點。如果名位元組點中的元數據丟失了,整個 HDFS環境就變成不可讀了——就像一個缺少了文件分配表的硬碟。HDFS支持使用「備份節點」,它能與內存中的名位元組點的元數據保持版本同步,並儲存前 一系統狀態的快照,以便能夠在需要時回滾。快照也可以被分開儲存在叫做「檢查節點」的地方。
2. 如何搭建私有雲存儲
虛擬化技術在企業私有雲IT基礎架構中仍然占據重要地位,同時,為了進一步提升應用效率,越來越多的生產環境也正在逐步變革,從以虛擬機為中心的架構向以容器和微服務為中心的雲原生架構過渡,在這個過程中,存儲如何有效支撐各種雲主機應用與微服務應用,對於企業的私有雲數據中心提出了新的挑戰。
企業面臨的問題
存儲設施七國八制,硬體鎖定缺少彈性
多種雲平台對於存儲的要求各不相同,塊/文件/對象存儲對應不同類型的應用,對外提供不同的服務介面,一種存儲設備無法滿足多種類型的雲平台存儲需求,而且傳統存儲在擴展性方面不能滿足雲時代大規模雲平台對存儲在線彈性擴容的需求,在可維護性方面則面臨硬體架構綁定、運維復雜、難以維保等問題,而且這些問題會隨著存儲設備種類和數量的增多進一步放大。
業務調度變更頻繁,資源不能共享
隨著開發測試虛擬機以及容器、微服務平台在企業私有雲平台的上線,大型企業的應用快速迭代、頻繁發布對存儲系統的支撐提出了嚴峻挑戰,不同業務的數據保存在不同廠商的存儲設備中,數據流動性差,不僅導致存儲空間及性能資源浪費嚴重,數據災備方案也很難統一化。
開源產品難以維護,不能實現企業級產品化
基於開源虛擬化技術的雲平台如OpenStack為眾多客戶提供了快速構建私有雲基礎設施的能力,但是存儲部分卻不一樣,開源的存儲系統如Ceph雖然可以小規模部署試用, 但在大規模商用時會遇到很多問題:與硬體和企業級應用生態融合程度不高,嚴重依賴人工開發運維,在性能和服務質量方面不能滿足核心業務的需求
杉岩私有雲存儲解決方案
杉岩私有雲存儲解決方案充分發揮了杉岩統一存儲平台(USP)的雲適配、開放等優勢,支持各種復雜的應用負載,可靈活支撐私有雲的虛擬化平台,如VMware、Citrix、OpenStack等虛擬化和雲平台,以及通過Kubernetes軟體一致性認證的所有容器雲平台,如:Rancher、Openshift、Kubernetes等。
通過杉岩統一存儲平台,用戶可快速構建能夠兼容所有主流虛擬化平台與容器微服務平台的統一存儲資源池,面對各種虛擬機和微服務需求,池化的存儲平台為大規模雲環境提供了可靠的存儲基礎架構支撐,幫助用戶從紛繁復雜的基礎架構運維工作中解放出來,更關注於私有雲上運行的業務本身。
客戶價值
資源整合,鏈接企業信息孤島
單資源池提供塊、文件、對象多種存儲服務,支持虛擬化平台和資料庫應用;強大的存儲資源生命周期管理能力,跨雲平台在線遷移數據,實現數據共享和提高資源利用率;存儲卷QoS等級和性能優先順序在線調整,可根據企業資源和業務需求合理配置資源。
開放兼容,適配多種私有雲平台
通過VMware VAAI和Citrix Ready認證,針對主流虛擬化平台優化I/O性能,大幅提升虛擬機訪問的性能。通過OpenStack Cinder認證,可提供塊和對象存儲基礎架構支撐支持容器平台CSI介面認證,為Kubernetes生態的容器應用提供塊和文件存儲服務。
智能管理,解決規模化運維難題
向導式安裝部署和自助擴容配置,極大提升易用性和可維護性,管理自動化降低運維成本;針對大規模集群優化的可靠性管理,檢測和修復硬碟軟錯誤的專利技術,節約用戶硬體投資。存儲視角的管理功能,可視化展示主機、容器與存儲的映射關系和性能監控協助管理員快速定位和解決問題。
3. 如何建立雲存儲
建立雲存儲的步驟如下:
1、申請配置計算資源池、存儲資源池、網路資源池等。
2、開通網路資源池包括兩對防火牆、一對核心交換機、一對負載均衡設備。兩對防火牆主要實現地址映射和訪問控制;一對核心交換機實現各類伺服器的接入;一對負載均衡設備實現負載均衡。
3、配置伺服器無需操作系統,使用raid5存儲備份方案,分配同網段IP地址,根據實際運行情況,設定每台虛擬機使用各自系統、內存和硬碟。主要看你平台的規模,才能確定維護的人數。
4. 什麼是雲存儲技術
雲存儲是在雲計算(cloud computing)概念上延伸和發展出來的一個新的概念,是指通過集群應用、網格技術或分布式文件系統等功能,將網路中大量各種不同類型的存儲設備通過應用軟體集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。 當雲計算系統運算和處理的核心是大量數據的存儲和管理時,雲計算系統中就需要配置大量的存儲設備,那麼雲計算系統就轉變成為一個雲存儲系統,所以雲存儲是一個以數據存儲和管理為核心的雲計算系統。
雲存儲的兩個層面
雲存儲的兩個層面是作為雲計算支撐的存儲計算,主要涉及分布式存儲(如分布式文件系統、IPSAN、數據同步、復制)、數據存儲(如重復數據刪除、數據壓縮、數據編碼)和數據保護(如RAID、CDP、快照、備份與容災)等技術領域,如圖8-30所示,這在第6章中已有所介紹。和雲安全技術一樣,雲存儲技術也需要利用現有的所有存儲技術針對雲計算三層架構的各個環節採用適當的存儲技術,才能取得最佳效果,例如,對應不同需求,有時應該使用資料庫技術但有時卻應該使用LDAP技術,有些性能要求高的系統不能使用SAN或NAS,需直接使用基於RPC或Socket技術的並發文件系統,有些應用使用SAN成本太高等,這里不再做深入介紹。如圖8-31所示是一個採用NetApp FAS、思科 UCS和 VMWare vShpere 4技術打造的存儲系統,對上述兩種雲存儲技術和應用都有促進作用。雲存儲架構
分為兩類:一種是通過服務來架構;另一種是通過軟體或硬體設備來架構。
傳統的系統利用緊耦合對稱架構,這種架構的設計旨在解決HPC(高性能計算、超級運算)問題,現在其正在向外擴展成為雲存儲從而滿足快速呈現的市場需求。下一代架構已經採用了鬆弛耦合非對稱架構,集中元數據和控制操作,這種架構並不非常適合高性能HPC,但是這種設計旨在解決雲部署的大容量存儲需求。各種架構的摘要信息如下:
緊耦合對稱(TCS)架構
構建TCS系統是為了解決單一文件性能所面臨的挑戰,這種挑戰限制了傳統NAS系統的發展。HPC系統所具有的優勢迅速壓倒了存儲,因為它們需要的單一文件I/O操作要比單一設備的I/O操作多得多。業內對此的回應是創建利用TCS架構的產品,很多節點同時伴隨著分布式鎖管理(鎖定文件不同部分的寫操作)和緩存一致性功能。這種解決方案對於單文件吞吐量問題很有效,幾個不同行業的很多HPC客戶已經採用了這種解決方案。這種解決方案很先進,需要一定程度的技術經驗才能安裝和使用。
鬆弛耦合非對稱(LCA)架構
LCA系統採用不同的方法來向外擴展。它不是通過執行某個策略來使每個節點知道每個行動所執行的操作,而是利用一個數據路徑之外的中央元數據控制伺服器。集中控制提供了很多好處,允許進行新層次的擴展:
● 存儲節點可以將重點放在提供讀寫服務的要求上,而不需要來自網路節點的確認信息。
● 節點可以利用不同的商品硬體CPU和存儲配置,而且仍然在雲存儲中發揮作用。
● 用戶可以通過利用硬體性能或虛擬化實例來調整雲存儲。
● 消除節點之間共享的大量狀態開銷也可以消除用戶計算機互聯的需要,如光纖通道或infiniband,從而進一步降低成本。
● 異構硬體的混合和匹配使用戶能夠在需要的時候在當前經濟規模的基礎上擴大存儲,同時還能提供永久的數據可用性。
● 擁有集中元數據意味著,存儲節點可以旋轉地進行深層次應用程序歸檔,而且在控制節點上,元數據經常都是可用的。
5. 雲存儲全面發展 市場應用如何實現應用
網路磁碟是個在線存儲服務,使用者可通過WEB訪問方式來上傳和下載文件,實現個人重要數據的存儲和絡化備份。高級的網路磁碟可以提供web頁面和客戶端軟體等兩種訪問方式,本人在2002就用過Xdisk這個網路磁碟軟體系統,它可以通過客戶端軟體在本地創建一個名盤符為X的虛擬磁碟,實現重要文件的存儲和管理,使用的方式與使用本地磁碟相同。網路磁碟的容量空間一般取決與服務商的服務策略,或取決於使用者想服務商支付的費用多少。 2、在線文檔編輯 經過近幾年的快速發展,Google所能提供的服務早已經從當初單一的搜索引擎,擴展到了GoogleCalendar、GoogleDocs、GoogleScholar、GooglePicasa等多種在線應用服務。 Google一般都把這些在線的應用服務稱之為雲計算。相比較傳統的文檔編輯軟體,GoogleDocs的出現將會使我們的使用方式和使用習慣發生巨大轉變,今後我們將不再需要在個人PC上安裝office等軟體,只需要打開GoogleDocs網頁,通過GoogleDocs就可以進行文檔編輯和修改(使用雲計算系統),並將編輯完成的文檔保存在GoogleDocs服務所提供的個人存儲空間中(使用雲存儲系統)。無論我們走到哪兒,都可以再次登錄GoogleDocs,打開保存在雲存儲系統中的文檔。通過雲存儲系統的許可權管理功能,還有能輕松實現文檔的共享、傳送、以及版權管理。 3、在線的網路游戲 近年來,網路游戲越來越收到年輕人的喜愛,傳奇、魔獸、武林三國等各種不同主題和風格的游戲層出不窮,網路游戲公司也使出渾身解數來吸引玩家。 但很多玩家都會發現一個很重要的問題:那就是由於帶寬和單台伺服器的性能限制,要滿足成千上萬個玩家上線,網路游戲公司就需要在全國不同地區建設很多個游戲伺服器,而這些游戲伺服器上上玩家相互之間是完全隔離的,不同伺服器上的玩家根本不可能在游戲中見面,更不用說一起組隊來完成游戲任務。 以後,我們可以通過雲計算和雲存儲系統來構建一個龐大的、超能的游戲伺服器群,這個伺服器群系統對於游戲玩家來講,就如同是一台伺服器,所有玩家在一起進行競爭。雲計算和雲存儲的應用,可以代替現有的多伺服器架構,使所有玩家都能集中在一個游戲伺服器組的管理之下。 所有玩家聚集在一起,這將會使游戲變得更加精彩,競爭變得更加激烈。同事,雲計算和雲存儲系統的使用,可在最大限度上提升游戲伺服器的性能,實現更多的功能;各玩家除了不再需要下載、安裝大容量的游戲程序外,更免除了需要定期進行游戲升級等問題。 二、企業級雲存儲實例 除了個人級雲存儲應用外,企業級雲存儲應用也即將會面世,而且以後可能會成為雲存儲應用的主力軍。從目前不同行業的存儲應用現狀來看,以下幾類系統將有可能很快進入雲存儲時代。 1、企業空間租賃服務 信息化的不斷發展使得各企業、單位的信息數據量呈幾何曲線性增長。數據量的增長不僅僅意味著更多的硬體設備投入,還意味著更多的機房環境設備投入,以及運行維護成本和人力成本的增加。 即使是現在仍然有很多單位、特別是中小企業沒有資金購買獨立的、私有的存儲設備,更沒有存儲技術工程師可以有效地完成存儲設備的管理和維護。通過高性能、大容量雲存儲系統,數據業務運營商和IDC數據中心可以為無法單獨購買大容量存儲設備的企事業單位提供方便快捷的空間租賃服務,滿足企事業單位不斷增加的業務數據存儲和管理服務,同時,大量專業技術人員的日常管理和維護可以保障雲存儲系統運行安全,確保數據不會丟失。 2、企業級遠程數據備份和容災 隨著企業數據量的不斷增加,數據的安全性要求也在不斷增加。企業中的數據不僅要有足夠的容量空間去存儲,還需要實現數據的安全備份和遠程容災。不僅要保證本地數據的安全性,還要保證當本地發生重大的災難時,可通過遠程備份或遠程容災系統進行快速恢復。 通過高性能、大容量雲存儲系統和遠程數據備份軟體,數據業務運營商和IDC數據中心可以為所有需要遠程數據備份和容災的企事業單位提供空間租賃和備份業務租賃服務,普通的企事業單位、中小企業可租用IDC數據中心提供的空間服務和遠程數據備份服務功能,可以建立自己的遠程備份和容災系統。 3、視頻監控系統 近兩年來,電信和網通在全國各地建設了很多不同規模的「全球眼」、「寬視界」網路視頻監控系統。「全球眼」或「寬視界」系統的終極目標是建設一個類似話音網路和數據服務網路一樣的,遍布全國的視頻監控系統,為所有用戶提供遠程(城區內的或異地的)的實時視頻監控和視頻回放功能,並通過服務來收取費用。 但由於目前城市內部和城市之間網路條件限制,視頻監控系統存儲設備規模的限制,「全球眼」或「寬視界」一般都能在一個城市內部,甚至一個城市的某一個區縣內部來建設。假設我們有一個遍布全國的雲存儲系統,並在這個雲存儲系統中內嵌視頻監控平台管理軟體,建設「全球眼」或「寬視界」系統將會變成一件非常簡單的事情。 系統的建設者只需要考慮攝像頭和編碼器等前端設備,為每一個編碼器、IP攝像頭分配一個帶寬足夠的接入網鏈路,通過接入網與雲存儲系統連接,實時的視頻圖像就可以很方便地保存到雲存儲中,並通過視頻監控平台管理軟體實現圖像的管理和調用。用戶不僅可以通過電視牆或PC來監看圖像信號,還可以通過手機來遠程觀看實時圖像。 三、雲存儲的備份、歸檔、分布和協同 1、備份 像Mozy和Carbonite等廠商的備份實例已經開始從消費模式或者生產消費模式更多地滲透到中小企業市場。 在備份方面,最常見的方法就是使用混合配置方法,也就是將你最常用的數據組保存在本地,然後復制到雲存儲中。Axcient和DS3都提供了這種功能性。 2、歸檔 歸檔最終將在商業雲存儲市場占據大部分市場份額。歸檔是雲存儲的一個理想使用實例——將陳舊數據從你自己的設備遷移到其他人的設備中。這個遷移過程是安全的,可進行端對端的加密,很多提供商甚至不會保留密鑰,這樣他們就不能看到你的數據。混合模式在這方面也倍受歡迎。 這種模式讓歸檔變得非常簡單,只需要將數據復制到一個類似NFS或者CIFS掛接點上。Nirvanix、Bycast和IronMoundtain都提供了這種產品或者服務。在歸檔方面,用戶需要採用這些產品的API組。例如,我想對歸檔中某些特定的元數據打上標簽。理想地說,我應該在啟動歸檔之前設定歸檔時間和冗餘性。 3、分布和協同 目前來說,分布或者協同的使用實例更多是由服務提供商提供的。這兩種模式通常使用來自多長提供商的一種雲基礎架構產品,例如上面提到的Nirvanix或者Bycast,還有Mezeo、Parscale、EMCAtmos和Cleversafe。其他像Permabit或者Nexsan等傳統歸檔和可擴展存儲廠商也提供了這種專門的雲產品。 由此看來,服務提供商將利用並運行這些基礎架構。我們將開始看到這個領域廠商之間的分離。Box.net採用了一種類似於Facebook的協同模式,Sooner通過其備份功能將你的數據自動保存到雲存儲中,然後讓你基於使用需求共享或者處理這些內容。Dropbox和SpiderOak也開發出了很強大的多平台備份和同步代理,可以在不影響用戶操作的前提下同步和實現共享。 在共享方面存在著一種加強checkin/checkout文件狀態的需求。我需要持續了解誰正在對哪些文件進行操作。現在雲存儲和雲服務市場呈現一派繁榮景象,有成百上千種產品,在這篇文章中我沒有提到具體的一款產品並不意味著這些產品不可靠,只是因為我並不了解這些產品或者我忘記了。
6. 適合網站開發的雲存儲
你可以使用Windows Azure,高安全、高可靠,而且可以按需實時擴展
7. 雲存儲的核心技術:虛擬化存儲,究竟虛擬是怎樣實現的
虛擬化改變了計算機使用存儲的方式。就像物理機器抽象成虛擬機(VM:Virtual Machine)一樣,物理存儲設備也被抽象成虛擬磁碟(Virtual Disk)。今天我們就來聊聊虛擬化存儲(Storage Virtualization)技術,究竟虛擬磁碟是怎樣實現的?
虛擬磁碟的實現
我們知道,伺服器擴展存儲的手段主要有直連存儲(DAS)、存儲區域網路(SAN)和網路附加存儲(NAS)這三種類型。那麼哪種存儲類型可以用來實現虛擬磁碟呢?
在虛擬化環境中,類似VMWare這樣的虛擬機管理程序hypervisor,要同時給很多VM分配存儲空間。這個過程中,我們需要先把物理存儲資源重新劃分成虛擬磁碟,然後再分配給VM。
顯然我們不能用DAS方式把物理磁碟直連到VM上,如果這樣,需要的物理磁碟就太多了。SAN是以邏輯單元(LUN:Logic Unit)的形式提供存儲資源,但是虛擬環境中VM的數量是很大的,而且倫的數量不足以支持這么多虛擬磁碟。
更重要的是,虛擬磁碟是為大量VM共享的,由於VM需要隨時創建、刪除或遷移,所以需要在遷移VM時共享存儲空間,只有原始數據不會丟失。DAS還是SAN,都不適合共享存儲。
考慮到資源分配以及共享的問題,虛擬機管理程序以NAS的方式實現虛擬磁碟。VMware通常使用VMFS(虛擬機文件系統)或NFS協議實現虛擬磁碟,VMFS文件系統是專門針對虛擬機環境協議。
每一個虛擬機的數據實際上是一堆文件,及最重要的文件的虛擬磁碟文件(VMDK文件),也有交換分區文件(VSWP文件,等價交換),非易失性存儲器(NVRAM的文件相當於BIOS),等等。每個VM對虛擬磁碟的IO操作實際上是對虛擬磁碟文件的讀寫操作。
設計、施工、和虛擬伺服器環境和優化,允許多個虛擬機訪問集成的集群存儲池,從而大大提高了資源的利用率。使用和實現資源共享,管理員可以直接從更高的效率和存儲利用率中獲益。
那麼我們如何在雲計算中使用虛擬磁碟呢?
實例存儲
最主要的一種使用虛擬磁碟的方式就是實例存儲,每個VM都是虛擬機的一個實例,虛擬機管理程序在每個實例中提供一個模擬硬體環境,它包括CPU、內存和磁碟。這樣,虛擬磁碟就是虛擬機實例的一部分,就像物質世界。刪除VM後,虛擬磁碟也將被刪除。
在這個實例存儲模型中,虛擬磁碟與虛擬機之間的存儲關系,事實上,它是DAS存儲。但是虛擬磁碟的底層實現,我們說,它是以NAS的方式實現的。虛擬機管理程序的作用是存儲VM層的存儲模型,這是從實施協議分離(VMFS或NFS)的虛擬機的低層。
VMFS協議實現了存儲資源的虛擬化,再分配各VMs
卷存儲
實例存儲有它的限制,開發人員通常希望分離實例數據,例如OS和安裝的一些伺服器應用程序和用戶數據,這樣重建VM的時候可以保留用戶的數據。
這個需求衍生出另外一種存儲模型:卷存儲。卷是存儲的主要單元,相當於虛擬磁碟分區。它不是虛擬機實例的一部分,它可以被認為是虛擬機的外部存儲設備。
該卷可以從一個VM卸載,然後附加到另一個VM。通過這種方式,我們實現了實例數據與用戶數據的分離。OpenStack的煤渣是一個體積存儲的實現。
除了實例存儲和卷存儲之外,最後我們還提到另一種特殊的虛擬存儲:對象存儲。
對象存儲
很多雲應用需要在不同的VM之間共享數據,它常常需要跨越多個數據中心,而對象存儲可以解決這個問題。在前一篇文章中的雲計算IaaS管理平台的基本功能是什麼?》中曾經提到過對象存儲。
在對象存儲模型中,數據存儲在存儲段(bucket)中,桶也可以被稱為「水桶」,因為它字面意思。我們可以用硬碟來類推,對象像一個文件,而存儲段就像一個文件夾(或目錄)。可以通過統一資源標識符(URI:統一資源標識符)找到對象和存儲段。
對象存儲的核心設計思想實際上是虛擬化,它是文件的物理存儲位置,如卷、目錄、磁碟等,虛擬化是木桶,它將文件虛擬化為對象。對於應用層,簡化了對數據訪問的訪問,屏蔽了底層存儲技術的異構性和復雜性。
對象存儲模型
NAS與對象存儲各有所長
當然你也許會問,NAS存儲技術也是一個可以解決數據共享的問題嗎?由於對象存儲的大小和成本優勢,許多雲環境使用對象存儲而不是NAS。
因為對象存儲將跨多個節點傳播,最新數據並不總是可用的 因此,對象存儲的數據一致性不強。如果有強一致性的要求,然後你可以使用NAS。目前,在雲計算環境中,NAS和對象存儲是共存的。
和NAS一樣,對象存儲也是軟體體系結構,而不是硬體體系結構。應用程序通過REST API直接訪問對象存儲。公共對象存儲包括:Amazon S3和OpenStack的Swift。
結語
在實際的雲平台應用中,我們需要根據自己的實際情況來合理運用不同的虛擬化存儲技術。
對於非結構化的靜態數據文件,如音視頻、圖片等,我們一般使用對象存儲。
對於系統鏡像以及應用程序,我們需要使用雲主機實例存儲或者卷存儲。
對於應用產生的動態數據,我們一般還需要利用雲資料庫來對數據進行管理。
8. 雲存儲架構分哪些層次,各自實現了什麼功能
(1)存儲層
雲存儲系統對外提供多種不同的存儲服務,各種服務的數據統一存放在雲存儲系統中,形成一個海量數據池。從大多數網路服務後台數據組織方式來看,傳統基於單伺服器的數據組織難以滿足廣域網多用戶條件下的吞吐性能和存儲容量需求;基於P2P架構的數據組織需要龐大的節點數量和復雜編碼演算法保證數據可靠性。相比而言,基於多存儲伺服器的數據組織方法能夠更好滿足在線存儲服務的應用需求,在用戶規模較大時,構建分布式數據中心能夠為不同地理區域的用戶提供更好的服務質量。
雲存儲的存儲層將不同類型的存儲設備互連起來,實現海量數據的統一管理,同時實現對存儲設備的集中管理、狀態監控以及容量的動態擴展,實質是一種面向服務的分布式存儲系統。
(2)基礎管理層
雲存儲系統架構中的基礎管理層為上層提供不同服務間公共管理的統一視圖。通過設計統一的用戶管理、安全管理、副本管理及策略管理等公共數據管理功能,將底層存儲與上層應用無縫銜接起來,實現多存儲設備之間的協同工作,以更好的性能對外提供多種服務。
(3)應用介面層
應用介面層是雲存儲平台中可以靈活擴展的、直接面向用戶的部分。根據用戶需求,可以開發出不同的應用介面,提供相應的服務。比如數據存儲服務、空間租賃服務、公共資源服務、多用戶數據共享服務、數據備份服務等。
(4)訪問層
通過訪問層,任何一個授權用戶都可以在任何地方,使用一台聯網的終端設備,按照標準的公用應用介面來登錄雲存儲平台,享受雲存儲服務。
2雲存儲技術的優勢
作為新興的存儲技術,與傳統的購買存儲設備和部署存儲軟體相比,雲存儲方式存在以下優點:
(1)成本低、見效快
傳統的購買存儲設備或軟體定製方式下,企業根據信息化管理的需求,一次性投入大量資金購置硬體設備、搭建平台。軟體開發則經過漫長的可行性分析、需求調研、軟體設計、編碼、測試這一過程。往往在軟體開發完成以後,業務需求發生變化,不得不對軟體進行返工,不僅影響質量,提高成本,更是延誤了企業信息化進程,同時造成了企業之間的低水平重復投資以及企業內部周期性、高成本的技術升級。在雲存儲方式下,企業除了配置必要的終端設備接收存儲服務外,不需要投入額外的資金來搭建平台。企業只需按用戶數分期租用服務,規避了一次性投資的風險,降低了使用成本,而且對於選定的服務,可以立即投入使用,既方便又快捷。
(2)易於管理
傳統方式下,企業需要配備專業的IT人員進行系統的維護,由此帶來技術和資金成本。雲存儲模式下,維護工作以及系統的更新升級都由雲存儲服務提供商完成,企業能夠以最低的成本享受到最新最專業的服務。
(3)方式靈活
傳統的購買和定製模式下,一旦完成資金的一次性投入,系統無法在後續使用中動態調整。隨著設備的更新換代,落後的硬體平台難以處置;隨著業務需求的不斷變化,軟體需要不斷地更新升級甚至重構來與之相適應,導致維護成本高昂,很容易發展到不可控的程度。而雲存儲方式一般按照客戶數、使用時間、服務項目進行收費。企業可以根據業務需求變化、人員增減、資金承受能力,隨時調整其租用服務方式,真正做到「按需使用」。
3雲存儲技術趨勢
隨著寬頻網路的發展,集群技術、網格技術和分布式文件系統的拓展,CDN內容分發、P2P、數據壓縮技術的廣泛運用,以及存儲虛擬化技術的完善,雲存儲在技術上已經趨於成熟,以「用戶創造內容」和「分享」為精神的Web2.0推動了全網域用戶對在線服務的認知
9. 與雲計算、雲存儲相關的IT技術都有哪些
雲計算(Cloud Computing)是
分布式計算(Distributed Computing)、
並行計算(Parallel Computing)、
效用計算(Utility Computing)、
網路存儲(Network Storage Technologies)、
虛擬化(Virtualization)、
負載均衡(Load Balance)、
熱備份冗餘(High Available)等傳統計算機和網路技術發展融合的產物。
主要體現在虛擬化及其標准化和自動化。
雲存儲是在雲計算概念上延伸和發展出來的一個新的概念,是一種新興的網路存儲技術,是指通過集群應用、網路技術或分布式文件系統等功能,將網路中大量各種不同類型的存儲設備通過應用軟體集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。雲計算系統中廣泛使用的數據存儲系統是Google的GFS和Hadoop團隊開發的GFS的開源實現HDFS。
從軟體看,VMware、微軟的Hpyer-V、Citrix以及開源的KVM等是主要的虛擬化平台,是雲計算的基礎。Citrix的優勢在桌面虛擬化和應用虛擬化。
至於雲計算應用軟體開發工具,並沒有針對雲計算、雲存儲的獨特的編程語言。
許多人會將雲計算與大數據聯系起來,其實兩者既有聯系又有區別。雲計算就是硬體資源的虛擬化,主要是一虛多,充分利用高性能的硬體資源;而大數據就是海量數據的高效處理,通常需要多合一、或多虛一,跨越多台硬體處理海量數據任務。Amazon是雲計算應用領域的先驅,而Google則是大數據應用領域的先驅。大數據既可以採用以虛擬化為基礎的雲計算架構也可以基於高性能計算(HPC,集群技術、並行技術)來處理。
大數據相當於海量數據的「資料庫」,而且通觀大數據領域的發展也能看出,當前的大數據處理一直在向著近似於傳統資料庫體驗的方向發展,Hadoop的產生使我們能夠用普通機器建立穩定的處理TB級數據的集群,把傳統而昂貴的並行計算等概念一下就拉到了我們的面前,但是其不適合數據分析人員使用(因為MapRece開發復雜),所以PigLatin和Hive出現了(分別是Yahoo!和facebook發起的項目,說到這補充一下,在大數據領域Google、facebook、twitter等前沿的互聯網公司作出了很積極和強大的貢獻),為我們帶來了類SQL的操作,到這里操作方式像SQL了,但是處理效率很慢,絕對和傳統的資料庫的處理效率有天壤之別,所以人們又在想怎樣在大數據處理上不只是操作方式類SQL,而處理速度也能「類SQL」,Google為我們帶來了Dremel/PowerDrill等技術,Cloudera(Hadoop商業化最強的公司,Hadoop之父cutting就在這里負責技術領導)的Impala也出現了。
因此,雲計算、雲存儲均為計算資源的底層,通過虛擬化的方式提供「設備」級(或操作系統級)的服務,用戶可以方便地申請使用」設備「來獨立地實現自己的任務(就好像給你一台伺服器),而實際上在雲上提供給你的是一台虛擬機,至於這台虛擬機運行在哪台硬體設備上,卻不一定,甚至可以」無縫「漂移,硬體故障時幾乎不影響用戶使用。