日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
文件系統(tǒng)vs對象存儲——選型和趨勢

文件系統(tǒng)vs對象存儲——選型和趨勢

作者:李明宇 2015-08-12 14:35:47

云計算 目前,對象存儲已經(jīng)得到了廣泛的應(yīng)用。具有代表性的大規(guī)模實現(xiàn)主要在各個公有云服務(wù)商,比如AWS的S3、Rackspace的CloudFiles,國內(nèi)的七牛云存儲、阿里云的開放存儲服務(wù)OSS也屬于對象存儲,最近,青云也發(fā)布了對象存儲服務(wù)。對象存儲也有一些著名的開源實現(xiàn),如OpenStack Swift,開源的統(tǒng)一存儲系統(tǒng)Ceph也可以通過Ceph Object Gateway提供對象存儲服務(wù),也稱作RADOS Gateway,縮寫為RADOSGW。

安岳網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

如果我們在服務(wù)端存儲文件,例如一個O2O應(yīng)用中的圖片或者企業(yè)級云盤里的文檔,以前我們可能會毫不猶豫地把它們放到文件系統(tǒng)里,比如說NAS設(shè)備或者GlusterFS等分布式文件系統(tǒng),但是,隨著技術(shù)的發(fā)展,我們有了一個新的選擇——對象存儲,今天我們來討論一下,對象存儲相對于文件系統(tǒng)有什么特點(diǎn)?什么時候我們應(yīng)該選擇對象存儲?文件系統(tǒng)將來的發(fā)展方向是什么?

一、對象存儲的概念

對象存儲和我們經(jīng)常接觸到的硬盤和文件系統(tǒng)等存儲形態(tài)不同,它提供Key-Value(簡稱K/V)方式的RESTful數(shù)據(jù)讀寫接口,并且常以網(wǎng)絡(luò)服務(wù)的形式提供數(shù)據(jù)的訪問。

在早些年,特別是2006年以前,人們提到對象存儲,往往指的是以類似標(biāo)準(zhǔn)化組織SNIA定義的OSD(object storage device)和MDS(Metadata Server)為基本組成部分的分布式存儲,通常是分布式文件系統(tǒng)。我們經(jīng)常聽到的分布式存儲Ceph的底層RADOS(Reliable Autonomous Distributed Object Store),即屬于這類對象存儲。

(圖片部分內(nèi)容引用自Ceph官網(wǎng)和SwiftStack)

而2006年以后,人們說到對象存儲,往往指的是以AWS的S3為代表的,通過HTTP接口提供訪問的存儲服務(wù)或者存儲系統(tǒng)。類似的系統(tǒng)還有Rackspace于2009年開始研發(fā)并于2010年開源的OpenStack Swift(Rackspace的對象存儲服務(wù)開始于2008年,但是Swift項目的開發(fā)是從2009年開始的,Rackspace用Swift項目對其云存儲系統(tǒng)進(jìn)行了徹底重構(gòu))。這里的“對象”(Object)和我們平時說的文件類似,如果我們把一個文件傳到對象存儲系統(tǒng)里面存起來,就叫做一個對象。

從另一個角度來說,2006年以前常說的對象存儲,指的是一種存儲系統(tǒng)的架構(gòu);而2006年以后,人們說到對象存儲常指的是一種存儲形態(tài),我們這里討論的對象存儲也正是后者。

目前,對象存儲已經(jīng)得到了廣泛的應(yīng)用。具有代表性的大規(guī)模實現(xiàn)主要在各個公有云服務(wù)商,比如AWS的S3、Rackspace的CloudFiles,國內(nèi)的七牛云存儲、阿里云的開放存儲服務(wù)OSS也屬于對象存儲,最近,青云也發(fā)布了對象存儲服務(wù)。

對象存儲也有一些著名的開源實現(xiàn),如OpenStack Swift,開源的統(tǒng)一存儲系統(tǒng)Ceph也可以通過Ceph Object Gateway提供對象存儲服務(wù),也稱作RADOS Gateway,縮寫為RADOSGW。

二、對象存儲與文件系統(tǒng)的比較

與文件系統(tǒng)相比,以AWS S3和Swift為代表的對象存儲有兩個顯著的特征——REST風(fēng)格的接口和扁平的數(shù)據(jù)組織結(jié)構(gòu)。

1、對象存儲的接口

對于大多數(shù)文件系統(tǒng)來說,尤其是POSIX兼容的文件系統(tǒng),提供open、close、read、write和lseek等接口。

而對象存儲的接口是REST風(fēng)格的,通常是基于HTTP協(xié)議的RESTful Web API,通過HTTP請求中的PUT和GET等操作進(jìn)行文件的上傳即寫入和下載即讀取,通過DELETE操作刪除文件。

(圖片內(nèi)容來自SwiftStack)

對象存儲和文件系統(tǒng)在接口上的本質(zhì)區(qū)別是對象存儲不支持和fread和fwrite類似的隨機(jī)位置讀寫操作,即一個文件PUT到對象存儲里以后,如果要讀取,只能GET整個文件,如果要修改一個對象,只能重新PUT一個新的到對象存儲里,覆蓋之前的對象或者形成一個新的版本。

如果結(jié)合平時使用云盤的經(jīng)驗,就不難理解這個特點(diǎn)了,用戶會上傳文件到云盤或者從云盤下載文件。如果要修改一個文件,會把文件下載下來,修改以后重新上傳,替換之前的版本。實際上幾乎所有的互聯(lián)網(wǎng)應(yīng)用,都是用這種存儲方式讀寫數(shù)據(jù)的,比如微信,在朋友圈里發(fā)照片是上傳圖像、收取別人發(fā)的照片是下載圖像,也可以從朋友圈中刪除以前發(fā)送的內(nèi)容;微博也是如此,通過微博API我們可以了解到,微博客戶端的每一張圖片都是通過REST風(fēng)格的HTTP請求從服務(wù)端獲取的,而我們要發(fā)微博的話,也是通過HTTP請求將數(shù)據(jù)包括圖片傳上去的。在沒有對象存儲以前,開發(fā)者需要自己為客戶端提供HTTP的數(shù)據(jù)讀寫接口,并通過程序代碼轉(zhuǎn)換為對文件系統(tǒng)的讀寫操作。

能夠放棄隨機(jī)讀寫接口而采用REST接口的一個重要原因是計算機(jī)系統(tǒng)本身的演進(jìn)呼喚存儲系統(tǒng)的變革,目前的計算機(jī)的內(nèi)存大小已經(jīng)和當(dāng)初設(shè)計POSIX文件系統(tǒng)接口時大不一樣了。文件系統(tǒng)誕生于1960年代,當(dāng)時的內(nèi)存是以KB為單位的,內(nèi)存資源非常寶貴,同時外存的數(shù)據(jù)讀寫速率也非常低,所以把文件中的一小部分?jǐn)?shù)據(jù)加載進(jìn)內(nèi)存進(jìn)行操作顯得非常有必要。而如今,計算機(jī)的內(nèi)存是以GB為單位的,往往在幾十、幾百GB量級,而常常需要存取的文件——如圖片、文檔等,則是在MB級別,GB以上的文件數(shù)量非常少(多為長視頻、歸檔文件、虛擬機(jī)鏡像等,這一類數(shù)據(jù)我們會在本系列的后面幾篇中進(jìn)行討論),外存和網(wǎng)絡(luò)的吞吐率較之1960年代,也有了數(shù)千倍的提升,把一個文件完全加載到內(nèi)存中進(jìn)行處理和可視化的已經(jīng)開銷微不足道了,而帶來的計算效率和用戶體驗的提升卻是顯著的。

#p#

2、扁平的數(shù)據(jù)組織結(jié)構(gòu)

對比文件系統(tǒng),對象存儲的第二個特點(diǎn)是沒有嵌套的文件夾,而是采用扁平的數(shù)據(jù)組織結(jié)構(gòu),往往是兩層或者三層,例如AWS S3和華為的UDS,每個用戶可以把它的存儲空間劃分為“容器”(Bucket),然后往每個容器里放對象,對象不能直接放到租戶的根存儲空間里,必須放到某個容器下面,而不能嵌套,也就是說,容器下面不能再放一層容器,只能放對象。OpenStack Swift也類似

這就是所謂“扁平數(shù)據(jù)組織結(jié)構(gòu)”,因為它和文件夾可以一級一級嵌套不同,層次關(guān)系是固定的,而且只有兩到三級,是扁平的。每一級的每個元素,例如S3中的某個容器或者某個對象,在系統(tǒng)中都有唯一的標(biāo)識,用戶通過這個標(biāo)識來訪問容器或者對象,所以,對象存儲提供的是一種K/V的訪問方式。

(圖片內(nèi)容來自華為)

采用扁平的數(shù)據(jù)組織結(jié)構(gòu)拋棄了嵌套的文件夾,避免維護(hù)龐大的目錄樹。隨著大數(shù)據(jù)和互聯(lián)網(wǎng)的發(fā)展,如今的存儲系統(tǒng)中,動輒數(shù)百萬、千萬甚至上億個文件/對象,單位時間內(nèi)的訪問次數(shù)和并發(fā)訪問量也達(dá)到了***的量級,在這種情況下,目錄樹會給存儲系統(tǒng)帶來很大的開銷和諸多問題,成為系統(tǒng)的瓶頸。反觀目錄結(jié)構(gòu)的初衷——數(shù)據(jù)管理,如今作用非常有限,我們已經(jīng)很難通過目錄的劃分對文件進(jìn)行歸類和管理了,因為一個文件最終只能放到一個文件夾下,作為目錄樹的葉子節(jié)點(diǎn)存在,而文件的屬性是多維度的。目前各類應(yīng)用中廣泛采用元數(shù)據(jù)檢索的方式進(jìn)行數(shù)據(jù)的管理,通過對元數(shù)據(jù)的匹配得到一個Index或者Key,再根據(jù)這個Index或者Key找到并讀取數(shù)據(jù),所以,對象存儲的扁平數(shù)據(jù)組織形式和K/V訪問方式更能滿足數(shù)據(jù)管理的需求。

不難看出,對象存儲有著鮮明的互聯(lián)網(wǎng)和大數(shù)據(jù)時代的特點(diǎn),隨著“互聯(lián)網(wǎng)+”的推進(jìn),互聯(lián)網(wǎng)技術(shù)正在滲透到各行各業(yè),數(shù)據(jù)量也在成指數(shù)倍數(shù)增長,對象存儲將發(fā)揮越來越大的作用。

三、文件系統(tǒng)和對象存儲系統(tǒng)的優(yōu)劣和發(fā)展趨勢分析

上述分析了對象存儲的特點(diǎn)并與文件系統(tǒng)做了比較,接下來就不得不回答一個問題:文件系統(tǒng)是不是沒有生命力了?答案當(dāng)然是否定的。對象存儲打破了文件系統(tǒng)一統(tǒng)天下的局面,給我們帶來了更多的選擇,并不意味著我們就要否定文件系統(tǒng)。

而對于一些場景,比如虛擬機(jī)活動鏡像的存儲,或者說虛擬機(jī)硬盤文件的存儲,還有大數(shù)據(jù)處理等場景,對象存儲就顯得捉襟見肘了。而文件系統(tǒng)在這些領(lǐng)域有突出的表現(xiàn),比如Nutanix的NDFS(Nutanix Distributed Filesystem)和VMware的VMFS(VMware Filesystem)在虛擬機(jī)鏡像存儲方面表現(xiàn)很出色,Google文件系統(tǒng)GFS及其開源實現(xiàn)HDFS被廣泛用于支撐基于MapReduce模型的大數(shù)據(jù)處理支持得很好,而且能夠很好地支持百GB級、TB級甚至更大文件的存儲。

由此看來文件系統(tǒng)將來的發(fā)展趨勢更多的是專用文件系統(tǒng),而不再是像以前那樣,以前一套Filesystem適用于所有場景,更有一些部分要讓位于對象存儲或者其他存儲形態(tài)。

從另一個角度來看,現(xiàn)代對象存儲系統(tǒng)的“甜區(qū)”在哪里:1. 互聯(lián)網(wǎng)和類似互聯(lián)網(wǎng)的應(yīng)用場景,這不僅僅是因為REST風(fēng)格的HTTP的接口,而且還因為大多數(shù)對象存儲系統(tǒng)在設(shè)計上能夠非常方便地進(jìn)行橫向擴(kuò)展以適應(yīng)大量用戶高并發(fā)訪問的場景;2. 海量十KB級到GB級對象/文件的存儲,小于10KB的數(shù)據(jù)更適用于使用K/V數(shù)據(jù)庫,而大于10GB的文件***將其分割為多個對象并行寫入對象存儲系統(tǒng)中,多數(shù)對象存儲系統(tǒng)都有單個對象大小上限的限制。所以,如果應(yīng)用具有上述兩種特點(diǎn),對象存儲是***。

也有人在對象存儲上做出進(jìn)一步的開發(fā)或者改進(jìn),使其能夠很好地支持歸檔備份、MapReduce大數(shù)據(jù)處理等場景,甚至將對象存儲的接口轉(zhuǎn)為文件系統(tǒng)接口;反之,OpenStack Swift等對象存儲系統(tǒng)也支持使用GlusterFS等通用文件系統(tǒng)作為存儲后端。人們?yōu)槭裁磿谶@些對象存儲和文件系統(tǒng)相互轉(zhuǎn)換的技術(shù)上進(jìn)行人力和資金的投入?這些做法的意義何在?應(yīng)該在什么時候使用這些技術(shù)?我們將在本系列的后續(xù)章節(jié)中給出答案。

本系列還將以O(shè)penStack Swift為例來剖析對象存儲的設(shè)計與實現(xiàn),并且討論對象存儲在實際應(yīng)用中所遇到的問題以及在Swift中是如何解決的,進(jìn)而討論對象存儲的發(fā)展對底層硬件帶來的挑戰(zhàn)和機(jī)遇。另外,由于對象存儲和傳統(tǒng)存儲形態(tài)的差別,性能評估已經(jīng)不能以IOPS和讀寫速率等傳統(tǒng)指標(biāo)來衡量,應(yīng)當(dāng)如何對對象存儲進(jìn)行評估?我們也將在后續(xù)章節(jié)中進(jìn)行探討。


本文標(biāo)題:文件系統(tǒng)vs對象存儲——選型和趨勢
URL鏈接:http://m.5511xx.com/article/cddhiig.html