ceph 存儲


 

第1章 概念

1.1 存儲概念

總結:

文件存儲

設備:FTP、NFS服務器

特點:一個大文件夾,大家都可以獲取文件

優點:可以共享

缺點:傳輸速率低

塊存儲

設備:cinder,磁盤陣列,硬盤,虛擬硬盤

特點:分區、格式化后,可以使用,與平常主機內置硬盤的方式完全無異

優點:直接掛載使用

缺點:不能共享數據

對象存儲

設備:swift,鍵值存儲

特點:具備塊存儲的高速以及文件存儲的共享等特性

優點:速率快,共享方便

缺點:不兼容現有模式

對象存儲(Object-based Storage)是一種新的網絡存儲架構,基於對象存儲技術的設備就是對象存儲設備(Object-based Storage Device)簡稱OSD。對象存儲: 也就是通常意義的鍵值存儲,其接口就是簡單的GET、PUT、DEL和其他擴展,如七牛、又拍、Swift、S3

 

【塊存儲】

 典型設備:磁盤陣列,硬盤

 塊存儲主要是將裸磁盤空間整個映射給主機使用的,就是說例如磁盤陣列里面有5塊硬盤(為方便說明,假設每個硬盤1G),然后可以通過划邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯划分出N個邏輯的硬盤。(假設划分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬盤意義完全不同了。例如第一個邏輯硬盤A里面,可能第一個200M是來自物理硬盤1,第二個200M是來自物理硬盤2,所以邏輯硬盤A是由多個物理硬盤邏輯虛構出來的硬盤。)

 接着塊存儲會采用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬盤,但是操作系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操作系統沒有區別的,至少操作系統感知上沒有區別。

 此種方式下,操作系統還需要對掛載的裸硬盤進行分區、格式化后,才能使用,與平常主機內置硬盤的方式完全無異。

 優點:

 1、 這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護。

 2、 另外也可以將多塊廉價的硬盤組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。

 3、 寫入數據的時候,由於是多塊磁盤組合出來的邏輯盤,所以幾塊磁盤可以並行寫入的,提升了讀寫效率。

 4、 很多時候塊存儲采用SAN架構組網,傳輸速率以及封裝協議的原因,使得傳輸速度與讀寫速率得到提升。

 缺點:

 1、采用SAN架構組網時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。

 2、主機之間的數據無法共享,在服務器不做集群的情況下,塊存儲裸盤映射給主機,再格式化使用后,對於主機來說相當於本地盤,那么主機A的本地盤根本不能給主機B去使用,無法共享數據。

 3、不利於不同操作系統主機間的數據共享:另外一個原因是因為操作系統使用不同的文件系統,格式化完之后,不同文件系統間的數據是共享不了的。例如一台裝了WIN7/XP,文件系統是FAT32/NTFS,而Linux是EXT4,EXT4是無法識別NTFS的文件系統的。就像一只NTFS格式的U盤,插進Linux的筆記本,根本無法識別出來。所以不利於文件共享。

 【文件存儲】

 典型設備:FTP、NFS服務器

 為了克服上述文件無法共享的問題,所以有了文件存儲。

 文件存儲也有軟硬一體化的設備,但是其實普通拿一台服務器/筆記本,只要裝上合適的操作系統與軟件,就可以架設FTP與NFS服務了,架上該類服務之后的服務器,就是文件存儲的一種了。

 主機A可以直接對文件存儲進行文件的上傳下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經由文件存儲自己搞定了。

 優點:

 1、造價交低:隨便一台機器就可以了,另外普通以太網就可以,根本不需要專用的SAN網絡,所以造價低。

 2、方便文件共享:例如主機A(WIN7,NTFS文件系統),主機B(Linux,EXT4文件系統),想互拷一部電影,本來不行。加了個主機C(NFS服務器),然后可以先拷到C,然后AB掛載就OK了。

 缺點:

 讀寫速率低,傳輸速率慢:以太網,上傳下載速度較慢,另外所有讀寫都要1台服務器里面的硬盤來承擔,相比起磁盤陣列動不動就幾十上百塊硬盤同時讀寫,速率慢了許多。

 【對象存儲】

 典型設備:內置大容量硬盤的分布式服務器

 對象存儲最常用的方案,就是多台服務器內置大容量硬盤,再裝上對象存儲軟件,然后再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟件。管理節點可以管理其他服務器對外提供讀寫訪問功能。

 之所以出現了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了對象存儲。

 首先,一個文件包含了了屬性(術語叫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 Ceph概念

無論您想為雲平台提供Ceph對象存儲和/或Ceph塊設備服務、部署Ceph文件系統或將Ceph用於其他目的,所有Ceph存儲集群部署都是從設置每個Ceph節點、您的網絡和Ceph存儲集群開始的。Ceph存儲集群至少需要一個Ceph Monitor,Ceph Manager和Ceph OSD (對象存儲守護進程)。運行Ceph Filesystem客戶端時也需要Ceph元數據服務器。

監視器:Ceph Monitor(ceph-mon)維護集群狀態的映射,包括監視器映射,管理器映射,OSD映射和CRUSH映射。這些映射是Ceph守護進程相互協調所需的關鍵集群狀態。監視器還負責管理守護進程和客戶端之間的身份驗證。冗余和高可用性通常至少需要三個監視器。

管理器:Ceph Manager守護程序(ceph-mgr)負責跟蹤運行時指標和Ceph集群的當前狀態,包括存儲利用率,當前性能指標和系統負載。Ceph Manager守護進程還托管基於python的插件來管理和公開Ceph集群信息,包括基於Web的Ceph Manager Dashboard和 REST API。高可用性通常至少需要兩名經理。

Ceph OSD:Ceph OSD(對象存儲守護進程 ceph-osd)存儲數據,處理數據復制,恢復,重新平衡,並通過檢查其他Ceph OSD守護進程來獲取心跳,為Ceph監視器和管理器提供一些監視信息。冗余和高可用性通常至少需要3個Ceph OSD。

MDS:Ceph元數據服務器(MDS ceph-mds)代表Ceph文件系統存儲元數據(即,Ceph塊設備和Ceph對象存儲不使用MDS)。Ceph的元數據服務器允許POSIX文件系統的用戶來執行基本的命令(如 ls,find沒有放置在一個Ceph存儲集群的巨大負擔,等等)。

Ceph將數據存儲為邏輯存儲池中的對象。使用 CRUSH算法,Ceph計算應該包含對象的放置組,並進一步計算哪個Ceph OSD守護進程應該存儲放置組。CRUSH算法使Ceph存儲集群能夠動態擴展,重新平衡和恢復。

Ceph對cpu,ram(內存),磁盤的要求

Ceph元數據服務器動態地重新分配其負載,這是CPU密集型的。因此,您的元數據服務器應具有強大的處理能力(例如,四核或更好的CPU)。Ceph OSD運行RADOS服務,使用CRUSH計算數據放置,復制數據,並維護自己的集群映射副本。因此,OSD應具有合理數量的處理能力(例如,雙核處理器)。監視器只是維護集群映射的主副本,因此它們不是CPU密集型的。除了Ceph守護進程之外,您還必須考慮主機是否將運行CPU密集型進程。例如,如果您的主機將運行計算VM(例如,OpenStack Nova),則需要確保這些其他進程為Ceph守護程序留下足夠的處理能力。我們建議在不同的主機上運行其他CPU密集型進程。

元數據服務器和監視器必須能夠快速提供數據,因此它們應該有足夠的RAM(例如,每個守護進程實例有1GB的RAM)。OSD不需要為常規操作提供盡可能多的RAM(例如,每個守護進程實例有500MB RAM); 但是,在恢復期間,他們需要更多的RAM(例如,每個守護進程每1TB存儲大約1GB)。通常,RAM越多越好。

我們建議每台主機至少有兩個1Gbps網絡接口控制器(NIC)。由於大多數商用硬盤驅動器的吞吐量大約為100MB /秒,因此您的NIC應該能夠處理主機上OSD磁盤的流量。我們建議至少使用兩個NIC來考慮公共(前端)網絡和群集(后端)網絡。群集網絡(最好不連接到Internet)處理數據復制的額外負載,並幫助阻止阻止群集實現的拒絕服務攻擊active + cleanOSD的狀態,因為OSD會在群集中復制數據。考慮從機架中的10Gbps網絡開始。

1:默認內核的版本較舊btrfs,我們不建議用於ceph-osd存儲節點。我們建議使用XFS。

2:默認內核有一個舊的Ceph客戶端,我們不建議內核客戶端(內核RBD或Ceph文件系統)。升級到推薦的內核。

3:btrfs 使用文件系統時,默認內核在QA中經常失敗。我們不建議btrfs用於支持Ceph OSD。

Ceph的軟件庫為客戶端應用程序提供了直接訪問RADOS基於對象的存儲系統的基礎,同時也為Ceph的一些高級功能提供了基礎,包括RADOS Block Device(RBD),RADOS Gateway(RGW)和Ceph File System CephFS)。

RADOS網關(RGW)

Ceph對象網關是構建在librados之上的對象存儲接口,用於為應用程序提供Ceph存儲集群的RESTful網關。Ceph對象存儲支持兩個接口:與S3兼容:通過與Amazon S3 RESTful API的大型子集兼容的界面提供對象存儲功能。Swift兼容:通過一個與OpenStack Swift API的大型子集兼容的接口提供對象存儲功能。

LIBRADOS

Ceph librados軟件庫支持用C,C ++,Java,Python,PHP和其他語言編寫的應用程序使用本機API訪問Ceph的對象存儲系統。librados庫提供了高級功能,包括:

部分或完整的讀取和寫入

快照

具有附加,截斷和克隆范圍等特性的原子事務

對象級關鍵值映射

Ceph的對象存儲系統不限於本地綁定或RESTful API。您可以將Ceph安裝為精簡配置的塊設備!當您使用塊設備將數據寫入Ceph時,Ceph會自動分條並在集群中復制數據。Ceph的RADOS塊設備(RBD)還與內核虛擬機(KVM)集成,將Ceph的無限存儲空間帶給Ceph客戶端上運行的KVM。

Ceph RBD與提供librados接口和Ceph FS文件系統的Ceph對象存儲系統連接,並將塊設備映像存儲為對象。由於RBD構建在librad之上,RBD繼承了librados功能,包括只讀快照並恢復為快照。通過在整個集群中分散圖像,Ceph提高了大型塊設備映像的讀取訪問性能。

優點

Thinly provisioned

Resizable images

Image import/export

Image copy or rename

Read-only snapshots

Revert to snapshots

Ability to mount with Linux or QEMU KVM clients!

 

與許多當今可用的對象存儲系統相比,Ceph的對象存儲系統提供了一個顯着的特性:Ceph提供了一個具有POSIX語義的傳統文件系統接口。對象存儲系統是一項重大的創新,但它們補充而不是取代傳統的文件系統。隨着傳統應用程序對存儲需求的增長,企業可以將其傳統應用程序配置為使用Ceph文件系統!這意味着您可以為對象,數據塊和基於文件的數據存儲運行一個存儲群集。

Ceph的文件系統運行在提供對象存儲和塊設備接口的同一個對象存儲系統之上。Ceph元數據服務器群集提供了一種將文件系統的目錄和文件名映射到存儲在RADOS群集中的對象的服務。元數據服務器集群可以擴展或收縮,並且可以動態地重新平衡文件系統以在集群主機之間均勻分配數據。這確保了高性能並防止集群內特定主機的負載過重。

優點

為任務關鍵型應用提供更強大的數據安全性。

為文件系統提供幾乎無限的存儲。

使用文件系統的應用程序可以使用Ceph FS和POSIX語義。無需整合或定制!

Ceph自動平衡文件系統以實現最高性能。

https://ceph.com/install/ 官網

所有 Ceph 部署都始於 Ceph 存儲集群。一個 Ceph 集群可以包含數千個存儲節點,最簡系統至少需要一個監視器和兩個 OSD 才能做到數據復制。Ceph 文件系統、 Ceph 對象存儲、和 Ceph 塊設備從 Ceph 存儲集群讀出和寫入數據。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM