1. 程式人生 > >塊儲存、檔案儲存、物件儲存及內容分發CDN

塊儲存、檔案儲存、物件儲存及內容分發CDN

工作6,7年了,在實際搭建私有云網路中常用NAS結構,而部署傳統RAC叢集的時候也需要配SAN網路,對這幾種儲存方式有直觀的瞭解,卻沒能理論化系統化的梳理,今天看到一篇講這方面的文章,我也就搞了個拿來主義,收錄到自己的BLOG下,同時又加入了一點自己的想法,和其他很多博主的想法,整理後供自己和大家學習交流。

塊儲存

典型裝置:磁碟陣列、硬碟
塊儲存主要是將裸磁碟空間整個對映給主機使用的。
就是說例如:磁碟陣列裡面有5塊硬碟,然後可以通過劃邏輯盤、做Raid、或者LVM等方式邏輯劃分出N個邏輯的硬碟。但是邏輯盤和物理盤是兩個完全不同的概念。假設每個硬碟100G,共有5個硬碟,劃分為邏輯盤也為5個,每個100G,但是這5個邏輯盤和原來的5個物理盤意義完全不同了。例如第一個邏輯盤第一個20G可能來自物理盤1,第二個20G來自物理盤2,所以邏輯盤是多個物理盤邏輯虛構出來的硬碟。
接著塊儲存會採用對映的方式將這幾個邏輯盤對映給主機,主機上面的作業系統會識別到有5塊硬碟,但是作業系統是無法區分到底是物理盤還是邏輯盤,它一概就認為只是5塊裸的物理硬碟而已,跟直接拿一塊物理硬碟掛載到作業系統沒區別,至少作業系統感知上沒有區別的。
在此方式下,作業系統還需要對掛載的裸硬碟進行分割槽、格式化後,才能使用,與平常主機內建的硬碟無差異。

優點
(1)這種方式的好處當然是因為通過了Raid與LVM等手段,對資料提供了保護;
(2)可以將多塊廉價的硬碟組合起來,稱為一個大容量的邏輯盤對外提供服務,提高了容量;
(3)寫入資料時,由於是多塊磁碟組合出來的邏輯盤,所以幾塊硬碟可以並行寫入的,提升了讀寫效率;
(4)很多時候塊儲存採用SAN架構組網,傳輸速度以及封裝協議的原因,使得傳輸速度和讀寫效率得到提升

缺點
(1)採用SAN架構組網時,需要額外為主機購買光纖通道卡,還要購買光纖交換機,造價成本高;
(2)主機之間資料無法共享,在伺服器不做叢集的情況下,塊儲存裸盤對映給主機,在格式化使用後,對於主機來說相當於本地盤,那麼主機A的本地盤根本不能給主機B去使用,無法共享資料
(3)不利於不同作業系統主機間的資料共享:因為作業系統使用不同的檔案系統,格式化後,不同的檔案系統間的資料是共享不了的。 例如一臺win7,檔案系統是FAT32/NTFS,而linux是EXT4,EXT4是無法識別NTFS的檔案系統的。

檔案儲存

典型裝置:FTP、NFS伺服器
為了克服檔案無法共享的問題,所以有了檔案儲存。
檔案儲存也有軟硬一體化的裝置,但是其實一臺普通的PC機,只要裝上合適的作業系統和軟體,就可以假設FTP與NFS服務了,架上該類服務之後的伺服器,就是檔案儲存的一種了。
主機A可以直接對檔案儲存進行檔案的上傳和下載,與塊儲存不同,主機A是不需要再對檔案儲存進行格式化的,因為檔案管理功能已經由檔案儲存自己搞定了。

優點
 (1)造價低:隨便一臺機器就可以,另外普通的乙太網就可以,根本不需要專用的SAN網路,所以造價低
 (2)方便檔案共享

缺點
 (1)讀寫速率低,傳輸速率慢:乙太網,上傳下載速度較慢,另外所有讀寫都要1臺伺服器裡面的硬碟來承受,相比起磁碟陣列動不動就十幾上百塊硬碟同時讀寫,速率慢了許多。

物件儲存

物件儲存是無層次結構的資料儲存方法 ,和Hadoop處理大資料的切片分割,元資料分離,通過管理節點中儲存的元資料索引資訊找到物件檔案本身的概念很相似。

典型裝置:內建大容量硬碟的分散式伺服器
物件儲存最常用的方案,就是多臺伺服器內建大容量硬碟,再裝上物件儲存軟體,然後再額外搞幾臺服務作為管理節點,安裝上物件儲存管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。
之所以出現物件儲存這種東西,是為了克服塊儲存與檔案儲存各自的缺點,發揚各自的優點。簡單來說塊儲存讀寫快,不利於共享,檔案儲存讀寫慢,利於共享。能否弄一個讀寫塊,利於共享的儲存出來呢?於是就有了物件儲存。

首先,一個檔案包含了屬性(術語:metadata,元資料,例如該檔案的大小、修改時間、儲存路徑等)以及內容(資料)。
像FAT32這種檔案系統,是直接將一份檔案與metadata一起儲存的,儲存過程先將檔案按照檔案系統的最小塊大小來打散(例如4M的檔案,假設檔案系統要求一個塊4K,那麼就將檔案打散稱為1000個小塊),再寫進硬盤裡,過程中沒有區分資料和metadata的。而每個塊最後會告知你下一個要讀取的塊地址,然後一直這樣順序的按圖索驥,最後完成整份檔案的所有塊的讀取。
這種情況下讀寫速率很慢,因為就算你有100個機械臂在讀寫,但是由於你只有讀取到第一個塊,才能知道下一個塊在哪裡,其實相當於只能有1個機械臂在實際工作。

而物件儲存則將元資料獨立出來了,控制節點叫元資料伺服器(伺服器+物件儲存管理軟體),裡面主要負責儲存物件的屬性(主要是物件的資料被打散存放到了那幾臺分散式伺服器中的資訊)而其他負責儲存資料的分散式伺服器叫做OSD,主要負責儲存檔案的資料部分。當用戶訪問物件,會先訪問元資料伺服器,元資料伺服器只負責反饋物件儲存在哪裡OSD,假設反饋檔案A儲存在B、C、D三臺OSD,那麼使用者就會再次直接訪問3臺OSD伺服器去讀取資料。
這時候由於是3臺OSD同時對外傳輸資料,所以傳輸的速度就會加快了,當OSD伺服器數量越多,這種讀寫速度的提升就越大,通過此種方式,實現了讀寫快的目的。

另一方面,物件儲存軟體是有專門的檔案系統的,所以OSD對外又相當於檔案伺服器,那麼就不存在共享方面的困難了,也解決了檔案共享方面的問題
所以物件儲存的出現,很好的結合了塊儲存和檔案儲存的優點

為什麼物件儲存兼具塊儲存和檔案儲存的好處,還要使用塊儲存和檔案儲存呢?

 (1)有一類應用是需要儲存直接裸盤對映的,例如資料庫。因為資料需要儲存樓盤對映給自己後,再根據自己的資料庫檔案系統來對裸盤進行格式化的,所以是不能夠採用其他已經被格式化為某種檔案系統的儲存的。此類應用更合適使用塊儲存。
(2)物件儲存的成本比起普通的檔案儲存還要較高,需要購買專門的物件儲存軟體以及大容量硬碟。如果對資料量要求不是海量,只是為了做檔案共享的時候,直接用檔案儲存的形式好了,價效比高。

儲存形態拓撲
在這裡插入圖片描述
三者之間的差異
在這裡插入圖片描述
物件儲存檔案系統的關鍵技術是什麼?

(1)分佈元資料
(2)併發資料訪問,物件儲存體系結構定義了一個新的、更加智慧化的磁碟介面OSD

什麼是OSD?

儲存區域網(SAN)和網路附加儲存(NAS)是我們比較熟悉的兩種主流網路儲存架構,而物件儲存是一種新的網路儲存架構,基於物件儲存技術的裝置就是物件儲存裝置,簡稱:OSD

在儲存物件中通過什麼物件方式訪問物件?

在儲存裝置中,所有物件都有一個物件標識,通過物件標識OSD命令訪問物件

OSD的主要功能是什麼?

(1)資料儲存。OSD管理物件資料,並將它們放置在標準的磁碟系統上,OSD不提供塊介面訪問方式,Client請求資料時用物件ID、偏移進行資料讀寫;
(2)智慧分佈。OSD用其自身的CPU和記憶體優化資料分佈,並支援資料的預取。由於OSD可以智慧的支援物件的預取,從而可以優化磁碟的效能
(3)每個物件元資料的管理。OSD管理儲存在其上物件的元資料,該元資料與傳統的inode元資料相似,通常包括物件的資料塊和物件的長度。

物件儲存與CDN
物件儲存主要用來儲存圖片、音訊、視訊等非結構化資料,核心是計算能力(圖片處理).
物件儲存將資料通道(需要訪問的資料)和控制通路(元資料,即索引)分離,先根據索引(也就是元資料)找到資料儲存的位置,進而通過底層的儲存介面來訪問資料。
CDN(Content Delivery Network)核心是內容分發,基本思路就是在網路各處部署服務節點,系統實時地根據網路流量、負載狀況、服務節點到使用者的響應時間等資訊,自動將使用者請求到導向離使用者最近的節點上。目的就是讓使用者就近取得資料,提高響應速度。但CDN不會給使用者提供直接操作儲存的入口,所以一般是物件儲存和CDN配合使用。

在這裡插入圖片描述

CDN節點解決了跨運營商和跨地域訪問
在這裡插入圖片描述
CDN的關鍵技術

(1)內容釋出:藉助於索引、快取、流分裂、組播等技術,將內容釋出或投遞到距離使用者最近的服務節點;

(2)內容路由:整體性的網路負載均衡技術,通過內容路由器中的重定向機制,在多個服務節點上均衡使用者的請求;

(3)內容交換:根據內容、服務節點以及使用者的資訊,利用應用層交換、流分裂等技術,智慧地平衡負載流量;

(4)效能管理:通過內部和外部監控系統,獲取網路部件的狀況資訊,測量內容釋出的端到端效能。

CDN本質上是一個分散式快取系統,每個服務節點上都快取了源站的一部分資料,也就是使用者最近經常訪問的資料。這樣大部分使用者請求其實都是在CDN邊緣節點上完成,並沒有達到源站,這樣減少了響應時間,也減輕了源站的負擔,可以實現高流量、大併發的網站訪問。

CDN對動態資源是無效的,主要適合對靜態資源的訪問加速。比如一些網頁內容需要資料查詢才能獲得,而每次要獲得查詢結果都要經過資料庫的操作,再經過Web應用伺服器的一些邏輯處理才能得到,這樣就沒法用CDN來加速。因為每次請求的資料都不一樣,快取過去訪問過的資料沒有意義。

隨著點播、直播等視訊類應用的紅火,CDN又迎來了一個新的增長點。直播平臺都需要CDN來加速視訊播放,可以說直播提高了CDN服務商和網路主播的收入。

我們知道,物件儲存裡面存的就是一些圖片、視訊、檔案等等,都是靜態資料,正好適合用CDN做加速。我們要做的就是購買CDN服務,並把我們的靜態資料URL新增到CDN的加速域名列表中。

CDN主要應用於站點加速,提高網站中靜態資料的訪問效能,比如圖片、音訊、視訊、靜態HTML網頁等。網站靜態資料以前一般是用檔案儲存的形式儲存,現在則主要用物件儲存。

以圖片儲存為例,簡單說,物件儲存是存圖片的,CDN是加速下載圖片的。物件儲存+CDN,已經成為網際網路應用的一個必不可少的組成部分。

參考:https://www.ibm.com/cloud-computing/cn-zh/object-storage/;http://www.cnblogs.com/hukey/p/8323853.html;https://www.sohu.com/a/234219738_130419