一、概述
云計算(cloud computing),是分布式計算技術的一種。云計算透過網絡連接,將一切隱沒在云端,普通用戶不在關心數據存在哪里,不在關心數據的安全,不在關心應用程序是否需要升級,不在關心計算機病毒,這一切工作都由云計算中心負責解決,普通用戶要做的就是選擇自己喜愛的云服務商并購買自己需要的服務。云計算使普通用戶有了享受高性能計算的機會,云計算中心幾乎可能提供無限制的計算能力。
Google 提出的云計算強調的是云的重要性,因為Google從來都沒有端,并且將GFS 拋出作為誘餌欲占主動;微軟則強調“云”加“端”才是云計算,因為微軟的視窗一直是“端”的霸主;VMware 則認為虛擬化是云計算的核心技術;Sun 公司則重提多年前他們說的老話“網絡就是計算機”;Adobe則通過Flex 占領用戶的眼球,使Flash Player 進軍云計算;另外大量的服務器托管公司則將服務器的租用稱為云計算。云存儲是在云計算概念上延伸和發展出來的一個新的概念,是云存儲重要的存儲資源。它通過集群計算、網格計算和分布式計算等功能,透過網絡,將不同類型的存儲設備通過軟件協同工作,對網絡用戶提供數據存儲和訪問功能。
二、云存儲結構
云存儲將云系統的存儲資源進行統一整合管理,提供存儲虛擬化功能,為用戶提供一個統一的存儲空間,具有集中存儲、分布式擴展、安全認證、數據加密等方面的優點。在云狀存儲系統中,所有存儲資源對使用者都是透明的,使用者不必知道存儲設備的型號、接口和傳輸協議,也不必建立龐大的獨立的數據備份系統和應急容災系統,這些狀態監控、維護、備份和應急容災在云存儲系統中都能夠自動完成,已經作為云的很自然的一部分。云存儲的結構如圖1 所示。云存儲結構模型由4 層組成。
1. 存儲層
云存儲設備可以是光纖通道存儲設備,也可以是NAS 或者 iSCSI 等網絡存儲設備。在云中,存儲設備數量龐大,通常會分布在不同的地方,通過廣域網、互聯網或者專用的光纖網絡連接。通常需要提供一個統一的存儲設備管理系統,實現物理存儲設備的邏輯化和虛擬化管理。
2. 基礎管理層
基礎管理層是云存儲核心的部分。該層通過集群存儲、分布式存儲和網格存儲等技術,實現眾多存儲設備之間的協同工作,對外提供統一的存儲訪問服務。
3. 應用接口層
是由眾多的第三方軟硬件廠商提供的插件層。運營單位可以根據實際業務需要,利用應用接口快速開發滿足需求的應用程序,如云存儲的視頻監控應用、視頻點播應用、網絡存儲的硬盤、遠程數據備份應用等。
4. 訪問層
訪問層提供給用戶統一的訪問登錄接口。用戶只有登錄后,才可以使用云存儲服務。不同的云存儲系統提供的訪問類型和訪問手段不同,安全需求也會千差萬別。用戶可以根據自己的需求選擇相應的服務。
三、云存儲平臺設計與實現
。ㄒ唬┰O計方案論證比較
Google GFS Google 的數據存儲與管理技術具有以下特點:基于大規模( 幾千到上萬節點) 通用PC 構建集群;集群節點同時提供存儲與計算服務;基于不可靠硬件環境實現了高可靠的集群軟件系統;用于處理與生成海量數據集的分布式計算模型高度抽象,在數據密集型業務中應用廣泛;數據管理系統不支持完整的關系模型,結構簡單而輕量。
Hadoop 實現了一個分布式文件系統,簡稱HDFS。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。HDFS 有著高容錯性的特點,并且設計用來部署在低廉的硬件上。而且它提供高傳輸率來訪問應用程序的數據,適合那些有著超大數據集的應用程序。HDFS 采用master/slave 架構。一個Namenod 以及一定數目的Datanode 組成一個HDFS 集群。在集群中,每一個節點包含一個Datanode。一個文件則分割成一個或多個block,由Datanode 集合提供存儲block。HDFS 采用java 語言開發,這給運存儲的部署帶來很大的方便。
Dynamo 是亞馬遜的key-value 模式的存儲平臺,可用性和擴展性都很好,性能也不錯:讀寫訪問中99.9% 的響應時間都在300ms 內。Dynamo 的可擴展性和可用性采用的都比較成熟的技術,數據分區采用改進的一致性哈希(consistent hashing) 方式進行復制,利用數據對象的版本化實現一致性。復制時因為更新產生的一致性問題的維護采取NRW 機制以及去中心化的復制同步協議。Dynamo 是完全去中心化的系統,人工管理工作很小。Dynamo 按分布式系統常用的哈希算法切分數據,分放在不同的node 上。Read 操作時,也是根據key 的哈希值尋找對應的node。Dynamo 使用了ConsistentHashing 算法,node 對應的不再是一個確定的hash 值,而是一個hash 值范圍,key 的hash 值落在這個范圍內,則順時針沿ring 找,碰到的第一個node 即為所需。Dynamo 對Consistent Hashing 算法的改進在于:它放在環上作為一個node 的是一組機器(而不是memcached 把一臺機器作為node),這一組機器是通過同步機制保證數據一致的。如果一個ring 內的訪問量大了,則可以在兩個node 間加入一個新node 以緩解壓力,這時會影響到其后繼node 的hash 范圍,需要調整數據。假設一個ring 中原本只有node2、node3、node4,在加入新的node1 之后,原先從node2 查詢的部分key 將改為從node1 查詢,node1 和node2 中的數據就需要調整,主要是node1 從node2 中提取出屬于它的數據,這樣做需要選取性能壓力不高的時候。Dynamo 的一個node 中一臺機器建有一個Merkle Tree,當兩臺機器不一致時,通過這個tree 結構,可以快速定位不一致的Object 來恢復數據。Merkle Tree 又叫Hash Tree,它把key 分成幾個range,每個range 算出一個hash 值,作為葉子,再一層層合并計算上去,這樣,從root 開始比較hash 值,就可以快速找到哪幾段range 中的hash 值變化了。
SAN 系統是在存儲端構建存儲的網絡,將多個存儲設備構成一個存儲區域網絡。前端的主機可以通過網絡的方式訪問后端的存儲設備。而且,由于提供了塊設備的訪問方式,與前端操作系統無關。在SAN 連接方式上,可以有多種選擇。一種選擇是使用光纖網絡,能夠操作快速的光纖磁盤。另外一種選擇是使用以太網,采取iSCSI 協議,能夠運行在普通的局域網環境下。由于存儲區域網絡中的磁盤設備并沒有與某一臺主機綁定在一起,而是采用了非常靈活的結構,因此對于主機來說可以訪問多個磁盤設備,從而能夠獲得性能的提升。SAN 系統與分布式文件系統例如Google File System并不是相互對立的系統,而是在構建集群系統的時候可供選擇的兩種方案。其中,在選擇SAN 系統的時候,為了應用程序的讀寫,還需要為應用程序提供上層的語義接口,此時就需要在SAN 之上構建文件系統。而Google File System 正好是一個分布式的文件系統,因此能夠建立在SAN 系統之上。總體來說,SAN 與分布式文件系統都可以提供類似的功能。
(二)使用hadoop 實現私有云存儲
Hadoop 作為Google 的開源實現,其具有以下幾個優點?蓴U展,不論是存儲的可擴展還是計算的可擴展都是Hadoop的設計根本。經濟,框架可以運行在任何普通的PC 上?煽浚植际轿募到y的備份恢復機制以及MapReduce 的任務監控保證了分布式處理的可靠性。高效:分布式文件系統的高效數據交互實現以及MapReduce 結合LocalData 處理的模式,為高效處理海量的信息作了基礎準備。HDFS 采用java 語言開發,因此很少存在兼容性問題。Hadoop 這些特點適合于企業實現私有云平臺。
所設計的云存儲系統的體系結構由web 客戶端、Web 操作系統、云存儲服務器、云存儲中心五個部分構成。其結構如圖2 所示。
1. 客戶端
客戶端機群是云存儲系統的前臺系統,客戶端機器上只需要安裝瀏覽器就能夠滿足用戶訪問需求。用戶通過瀏覽器訪問云存儲系統,其他的服務都由云存儲系統在后臺自動。
2.Web 操作系統
這里的web 操作系統采用了eysOS。EyeOS 負責接收客戶的訪問請求,對客戶的訪問請求實施合法性驗證。EyeOS中提供了大量的應用,允許用戶根據自己的喜好下載和使用這些應用,實現系統的個性化配置,真正達到“一次配置,到處使用”。eysOS 同時提供用戶文件的存取接口,通過該接口可以將文件存儲到Hadoop 云端,同時可以通過它對文件進行各種操作。
3. 云存儲服務器
云存儲服務器由大量的集群“云端服務器”構成,同時為Hadoop 提供管理節點(NameNode),負責管理文件系統名稱空間和控制外部客戶機的訪問。當然用戶的數據也都是存儲在這里的。
4. 云存儲中心
云存儲中心由眾多的服務器構成Hadoop 的數據節點(DataNodes),負責保存文件數據,實現文件的分布式存儲、負載平衡以及文件的容錯控制。
其實施過程主要包括:
1. 新建系統Hadoop 用戶
Hadoop 要求所有機器上hadoop 的部署目錄結構要相同,并且都有一個相同的用戶名的帳戶,所以需要每臺機器建一個同名的用戶。在這4 臺機器上建hadoop 用戶并加入到root 組,密碼:hadoop,默認路徑/home/hadoop/。
2.SSH 設置
Hadoop 需要namenode 到datanode 的無密碼SSH,所以需要設置namenode 到其他3 臺datanode 的無密碼公鑰認證方式的SSH。設置完成后,測試一下namenode 到各個節點的SSH 鏈接,包括到本機,如果不需要輸入密碼就可以SSH 登錄,說明設置成功了。
3. 安裝JDK
到sun 網站下載JDK 安裝包,并在每臺機器的root 用戶下面安裝。安裝軟件會將JDK 自動安裝到 /usr/java/jdk1.6.0_26 目錄下。安裝完成后再設置JDK 的環境變量。考慮到JDK 可能會有其他系統用戶也會用到,建議將環境變量直接設置在/etc/profile 中。
4.Hadoop 集群配置
用hadoop 用戶登錄namenode, 在 namenode 上下載hadoop-0.20.2.tar.gz,將其解壓到/home/hadoop/ 目錄下,然后在 hadoop 下創建tmp 文件夾并把Hadoop 的安裝路徑添加到/etc/profile 中修改/etc/profile 文件( 配置 java環境變量的文件),設置HADOOP_HOME 和PATH 的路徑,并使其有效。另外在datanode 上也需要如namenode 一樣修改配置HADOOP_HOME 和PATH。
編輯Hadoop 配置文件。hadoop 配置文件在conf 目錄下,包括:hadoop-env.sh: 配置JAVA_HOME 路徑;core-site.xml:配置Common 組件的屬性;hdfs-site.xml:配置HDFS組件的屬性;mapred-site.xml:配置map-reduce 組件的屬性;配置masters 文件,加入namenode 的ip 地址;配置slaves文件,加入所有datanode 的ip 地址等。
四、私有云中文件讀寫流程
讀文件的流程:讀一個文件用戶首先需要從Hadoop 的數據節點把文件下載到本地,然后再由相應的軟件打開顯示給用戶。讀文件過程如下:(1)通過瀏覽器,用戶訪問運存儲的Web 操作系統,雙擊想要訪問的文件圖標,使得eyeOS 向Hadoop 管理節點發出獲取文件請求。(2)管理節點查找要訪問的文件信息,透過數據節點把文件內容發送到客戶端。(3)客戶端下載數據節點傳過來的文件塊,并自動將這些塊合并成一個文件。
。4)在Web 操作系統中,自動啟動該文件關聯的應用程序,顯示文件內容。
寫文件的流程:用戶對文件進行修改,并提交保存請求,WEB 操作系統會將用戶修改后的文件自動上傳到云中。另外,用戶也可以自主選擇上傳文件到云存儲系統。(1)用戶使用瀏覽器客戶端,訪問運存儲的web 操作系統,自動啟動相關聯的程序修改并保存想要訪問的文件,使得eyeOS 向Hadoop 節點發出上傳文件請求。(2)管理節點接收到文件上傳請求,自動計算文件大小,查找系統數據節點存儲狀況,分配存儲空間。(3)客戶端上傳文件塊到各個數據節點,完成文件的修改存儲。
五、結論
歸根到底,云存儲是分布式存儲技術的發展和延續。透過廣域網,云存儲實現比傳統的分布式存儲更透明、更快速、更可靠的遠程存儲訪問技術。
本文實現了構建私有云存儲平臺上云存儲的管理與應用,以hadoop 開源平臺實現了一個以Web 操作系統為云存儲接口的云存儲系統。下一步將繼續對系統進行逆向測試、壓力測試、兼容性測試等實用性方面的測試。以及進一步優化的工作。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:私有云存儲平臺技術及應用
本文網址:http://www.guhuozai8.cn/html/consultation/10839712727.html