當前位置:首頁 » 雲伺服器 » 泰山伺服器搭建ceph存儲

泰山伺服器搭建ceph存儲

發布時間: 2022-09-14 03:08:32

A. Ceph 架構與原理

Ceph 是一個開源項目,它提供軟體定義的、統一的存儲解決方案 。Ceph 是一個具有高性能、高度可伸縮性、可大規模擴展並且無單點故障的分布式存儲系統 。
Ceph 是軟體定義存儲解決方案
Ceph 是統一存儲解決方案
Ceph 是雲存儲解決方案

高可用性

高擴展性

特性豐富

Ceph獨一無二地統一的系統提供了對象存儲、塊存儲和文件存儲功能。Ceph存儲集群由幾個不同的軟體守護進程組成(比較重要的兩個是MON和OSD),每個守護進程負責Ceph的一個獨特功能並將值添加到相應的組件中。

RADOS是CEPH存儲系統的核心,也稱為Ceph 存儲集群。Ceph的數據訪問方法(如RBD,CephFS,RADOSGW,librados)的所有操作都是在RADOS層之上構建的。當Ceph 集群接收到來自客戶端的請求時,CRUSH演算法首先計算出存儲位置,最後將這些對象存儲在OSD中,當配置的復制數大於1時,RADOS負責的形式將數據分發到集群內的所有節點,最後將這些對象存儲在OSD中。當配置的復制數大於1時,RADOS負責數據的可靠性,它復制對象,創建副本並將它們存儲在不同的故障區域中。
RADOS包含兩個核心組件: OSD和MON

OSD 是Ceph 存儲集群中最重要的一個基礎組件,他負責將實際的數據以對象的形式存儲在每一個集群節點的物理磁碟中。對於任何讀寫操作,客戶端首先向MON請求集群MAP,然後客戶端舊可以直接和OSD進行I/O操作。
一個Ceph 集群包含多個OSD。一個典型的Ceph集群方案會為集群節點上的每個物理磁碟創建一個ODS守護進程,這個是推薦的做法。OSD上的每個對象都有一個主副本和幾個輔副本,輔副本分散在其他OSD。一個OSD對於一些對象是主副本,同時對於其他對象可能是輔副本,存放輔副本的OSD主副本OSD控制,如果主副本OSD異常(或者對應的磁碟故障),輔副本OSD可以成為主副本OSD。
OSD是有一個已經存在的linux文件系統的物理磁碟驅動器和OSD服務組成。Ceph 推薦OSD使用的文件系統是XFS。OSD的所有寫都是先存到日誌,再到存儲.

MON 負責監控整個集群的健康狀況。它以守護進程的形式存在,一個MON為每一個組件維護一個獨立的MAP,如OSD,MON,PG,CRUSH 和MDS map。這些map 統稱為集群的MAP。MON 不為客戶端存儲和提供數據,它為客戶端以及集群內其他節點提供更新集群MAP的服務。客戶端和集群內其他節點定期與MON確認自己持有的是否是集群最新的MAP.一個Ceph集群通常包含多個MON節點,但是同一時間只有一個MON。

librados是一個本地的C語言庫,通過它應用程序可以直接和RADOS通信,提高性能

Ceph 塊存儲,簡稱 RBD,是基於 librados 之上的塊存儲服務介面。RBD 的驅動程序已經被集成到 Linux 內核(2.6.39 或更高版本)中,也已經被 QEMU/KVM Hypervisor 支持,它們都能夠無縫地訪問 Ceph 塊設備。Linux 內核 RBD(KRBD)通過 librados 映射 Ceph 塊設備,然後 RADOS 將 Ceph 塊設備的數據對象以分布式的方式存儲在集群節點中

RGW,Ceph對象網關,也稱做RADOS網關,它是一個代理,可以將HTTP請求轉換為RADOS,也可以把RADOS轉換為HTTP請求,從而提供restful介面,兼容S3和Swift。Ceph對象網關使用Ceph對象網關守護進程(RGW)與librgw、librados交互。Ceph對象網關支持三類介面:S3、Swift、管理API(通過restful介面管理Ceph集群)。RGW有自己的用戶管理體系

Ceph 元數據伺服器服務進程,簡稱 MDS。只有在啟用了 Ceph 文件存儲(CephFS)的集群中才需要啟用 MDS,它負責跟蹤文件層次結構,存儲和管理 CephFS 的元數據。MDS 的元數據也是以 Obejct 的形式存儲在 OSD 上。除此之外,MDS 提供了一個帶智能緩存層的共享型連續文件系統,可以大大減少 OSD 讀寫操作頻率。

CephFS在RADOS層之上提供了一個兼容POSIX的文件系統。它使用MDS作為守護進程,負責管理其元數據並將它和其他數據分開。CephFS使用cephfuse模塊(FUSE)擴展其在用戶空間文件系統方面的支持(就是將CephFS掛載到客戶端機器上)。它還允許直接與應用程序交互,使用libcephfs庫直接訪問RADOS集群。

Ceph管理器軟體,可以收集整個集群的所有狀態。有儀錶板插件

一個對象通常包含綁定在一起的數據和元數據,並且用一個全局唯一的標識符標識。這個唯一的標識符確保在整個存儲集群中沒有其他對象使用相同的對象ID,保證對象唯一性。基於文件的存儲中,文件大小是有限制的,與此不同的是,對象的大小是可以隨著大小可變的元數據而變得很大。對象不使用一個目錄層次結構或樹結構來存儲,相反,它存儲在一個包含數十億對象且沒有任何復雜性的線性地址空間中。對象可以存儲在本地,也可以存放在地理上分開的線性地址空間中,也就是說,在一個連續的存儲空間中。任何應用程序都可以基於對象ID通過調用restful API從對象中獲取數據。這個URL可以以同樣的方式工作在網際網路上,一個對象ID作為一個唯一的指針指向對象。這些對象都以復制的方式存儲在OSD中,因為能提供高可用性。

對於Ceph集群的一次讀寫操作,客戶端首先聯系MON獲取一個集群map副本,然後使用對象和池名/ID將數據轉換為對象。接著將對象和PG數一起經過散列來生成其在Ceph池中最終存放的那一個PG。然後前面計算好的PG經過CRUSH查找來確定存儲或獲取數據所需的主OSD的位置。得到准確的OSD ID之後,客戶端直接聯系這個OSD來存取數據。所有這些計算操作都由客戶端來執行,因此它不會影響Ceph集群的性能。一旦數據被寫入主OSD,主OSD所在節點將執行CRUSH查找輔助PG和OSD的位置來實現數據復制,進而實現高可用。
  簡單地說,首先基於池ID將對象名和集群PG數應用散列函數得到一個PG ID,然後,針對這個PG ID執行CRUSH查找得到主OSD和輔助OSD,最後寫入數據。

PG是一組對象地邏輯集合,通過復制它到不同的OSD上來提供存儲系統的可靠性。根據Ceph池的復制級別,每個PG的數據會被復制並分發到Ceph集群的多個OSD上。可以將PG看成一個邏輯容器,這個容器包含多個對象,同時這個邏輯容器被映射到多個OSD。
  計算正確的PG數對一個Ceph存儲集群來說是至關重要的一步。PG數計算公式如下

Ceph池是一個用來存儲對象的邏輯分區,每個池都包含一定數量的PG,進而實現把一定數量的對象映射到集群內部不同OSD上的目的。每一個池都是交叉分布在集群所有節點上的,這樣就能提供足夠的彈性。池可以通過創建需要的副本數來保障數據的高可用性。
  Ceph的池還支持快照功能,我們可以使用ceph osd pool mksnap命令來給特定的池製作快照。此外,Ceph池還允許我們為對象設置所有者和訪問許可權。

數據管理始於客戶端向Ceph池中寫數據。一旦客戶端准備寫數據到Ceph池中,數據首先寫入基於池副本數的主OSD中。主OSD再復制相同的數據到每個輔助OSD中,並等待它們確認寫入完成。只要輔助OSD完成數據寫入,就會發送一個應答信號給主OSD。最後主OSD再返回一個應答信號給客戶端,以確認完成整個寫入操作。

B. Ceph高可用部署和主要組件介紹

本教程用官網最近的cephadm來搭建ceph集群。

第一周作業:1.ceph的組件和功能2.ceph的數據讀寫流程3.使用ceph-deploy安裝一個最少三個節點的ceph集群 推薦3個或以上的磁碟作為專用osd 4.測試ceph的rbd使用

1·Ceph組件和功能

組件

Ceph OSDs : ( Ceph OSD )object storage daemon的功能是存儲數據,處理數據的復制、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集群設定為有2個副本時,至少需要2個 OSD 守護進程,集群才能達到 active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。

Monitors : 維護著展示集群狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存著發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱為 epoch )。

MDSs : Ceph 元數據伺服器為 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據伺服器使得 POSIX 文件系統的用戶們,可以在不對 Ceph 存儲集群造成負擔的前提下,執行諸如 ls、find 等基本命令。

CephMgr :在一個主機上的守護進程,負責運行指標,運行狀態,性能負載,

其他術語:

RADOS:多個主機組成的存儲集群,即可靠,自動化,分布式的對象存儲系統。

File:  就是普通文件,ObjectRADOS看到的對象,Object與File的區別是, Object的最大尺寸由RADOS限定(通常為2MB或4MB) ,以便實現底層存儲的組織管理。因此,當上層應用向RADOS存入尺寸很大的File時,需要將File切分成統一大小的一系列Objet (最後一個的大小可以不同)進行存儲。

librados:RADOS集群的API,支持大部分主流語言。

Pool:存儲池,大小取決於底層的存儲空間。

PG:placeholder group,一個pool(存儲池)內可以有多個PG,pool個pg都是抽象的邏輯概念,可以通過公示計算。PG的用途是對Object的存儲進行組織和位置映射的。具體而言,一個PG負責組織若干個Object,但一個Obiect只能被映射到一個PG中,即PG和Object之間是「一對多」的映射關系。同時,一個PG會被映射到n個OSD上,而每個OSD上都會承載大量的PG,即PG和OSD之間是「多對多」的映射關系。在實踐當中,n至少為2,如果用於生產環境,則至少為3。一個OSD上的PG可達到數百個。事實上, PG數量的設置關繫到數據分布的均勻性問題。

OSD daemon:默認每2秒發送狀態數據給monitor,(同時監控組內其他OSD的狀態)(up 可以提供IO,down不能提供,in有數據,out沒有數據)

PG和OSD之間的關系通過CRUSH演算法得出的。常規這三個 OSD daemon 可以在一台機器上,也可以在不同機器上;那麼根據 CRUSH 演算法會盡可能的保證一個平衡,就是不在同一個機器上;畢竟Ceph中的數據是一個為平衡的狀態,一切都是通過CRUSH 演算法來實現的數據平衡,而 PG 本身是個有序列表,位於第一的位置是 master;這個列表的產生是由 monitor 來產生的;

定址流程

File->Object映射 這次映射的目的是,將用戶要操作的File映射為RADOS能夠處理的Object,其十分簡單,本質上就是按照Object的最大尺寸(默認4M)對File進行切分,相當於磁碟陣列中的條帶化過程。這種切分的好處有兩個:一是讓大小不限的File變成具有一致的最大尺寸、可以被RADOS高效管理的Object;二是讓對單一File實施的串列處理變為對多個Object實施的並行化處理。每一個切分後產生的Object將獲得唯一的oid,即Object ID,其產生方式也是線性映射,極其簡單。 Object →PG映射 在File被映射為1個或多個Object之後,就需要將每個Object獨立地映射到1個PG中去。這個映射過程也很簡單,如圖所示,其計算公式如下:Hash(oid) & mask -> pgid由此可見,其計算由兩步組成。首先,使用Ceph系統指定的一個靜態哈希演算法計算oid的哈希值,將oid映射為一個近似均勻分布的偽隨機值。然後,將這個偽隨機值和mask按位相與,得到最終的PG序號(pgid) 。根據RADOS的設計,給定PG的總數為m(m應該為2的整數冪),則mask的值為m-1。因此,哈希值計算和按位與操作的整體結果事實上是從所有m個PG中近似均勻地隨機選擇1個。基於這一機制,當有大量Object和大量PG時, RADOS能夠保證Object和PG之間的近似均勻映射。又因為Object是由File切分而來的,大部分Object的尺寸相同,因此,這一映射最終保證了各個PG中存儲的Object的總數據量近似均勻。這里反復強調了「大量」 ,意思是只有當Object和PG的數量較多時,這種偽隨機關系的近似均勻性才能成立, Ceph的數據存儲均勻性才有保證。為保證「大量」的成立,一方面, Object的最大尺寸應該被合理配置,以使得同樣數量的File能夠被切分成更多的Object;另一方面, Ceph也推薦PG總數應該為OSD總數的數百倍,以保證有足夠數量的PG可供映射。 PG→ OSD映射 第3次映射就是將作為Object的邏輯組織單元的PG映射到數據的實際存儲單元OSD上。RADOS採用一個名為CRUSH的演算法,將pgid代入其中,然後得到一組共n個OSD。這n個OSD共同負責存儲和維護一個PG中的所有Objecto前面提到過, n的數值可以根據實際應用中對於可靠性的需求而配置,在生產環境下通常為3。具體到每個OSD,則由其上運行的OSD Daemon負責執行映射到本地的Object在本地文件系統中的存儲、訪問、元數據維護等操作。和「Object →PG"映射中採用的哈希演算法不同, CRUSH演算法的結果不是絕對不變的,而會受到其他因素的影響。其影響因素主要有兩個。一是當前系統狀態,也就是在前面有所提及的集群運行圖。當系統中的OSD狀態、數量發生變化時,集群運行圖也可能發生變化,而這種變化將會影響到PG與OSD之間的映射關系。二是存儲策略配置。這里的策略主要與安全相關。利用策略配置,系統管理員可以指定承載同一個PG的3個OSD分別位於數據中心的不同伺服器或機架上,從而進一步改善存儲的可靠性。因此,只有在系統狀態和存儲策略都不發生變化的時候, PG和OSD之間的映射關系才是固定不變的。在實際使用中,策略一經配置通常不會改變。而系統狀態的改變或是因為設備損壞,或是因為存儲集群規模擴大。好在Ceph本身提供了對這種變化的自動化支持,因而,即便PG與OSD之間的映射關系發生了變化,也並不會對應用產生影響。事實上, Ceph正是利用了CRUSH演算法的動態特性,可以將一個PG根據需要動態遷移到不同的OSD組合上,從而自動化地實現高可靠性、數據分布再平衡等特性。之所以在此次映射中使用CRUSH演算法,而不使用其他哈希演算法,一方面原因是CRUSH演算法具有上述可配置特性,可以根據管理員的配置參數決定OSD的物理位置映射策略;另一方面原因是CRUSH演算法具有特殊的「穩定性" ,也即,當系統中加入新的OSD,導致系統規模增大時,大部分PG與OSD之間的映射關系不會發生改變,只有少部分PG的映射關系會發生變化並引發數據遷移。這種可配置性和穩定性都不是普通哈希演算法所能提供的。因此, CRUSH演算法的設計也是Ceph的核心內容之一。 至此為止, Ceph通過3次映射,完成了從File到Object. Object到PG,PG再到OSD的整個映射過程。從整個過程可以看到,這里沒有任何的全局性查表操作需求。至於唯一的全局性數據結構:集群運行圖。它的維護和操作都是輕量級的,不會對系統的可擴展性、性能等因素造成影響 。

存儲過程總結:

1.計算文件到對象的映射

2.通過哈希演算法計算計算出文件對應的pool的PG

3.通過CRUSH把對象映射到PG中的OSD

4.PG種的OSD將對象寫入到磁碟

5.主OSD將數據同步到備份OSD,待備份OSD返回確認

6.主OSD的到備份OSD寫完操作以後給客戶的返回寫入成功

2. ceph的讀寫流程

當某個客戶端需要向Ceph集群寫入一個File時,首先需要在本地完成定址流程,將File變為一個Object,然後找出存儲該Object的一組共3個OSD,這3個OSD具有各自不同的序號,序號最靠前的那個OSD就是這一組中的Primary OSD,而後兩個則依次Secondary OSD和Tertiary OSD。找出3個OSD後,客戶端將直接和Primary OSD進行通信,發起寫入操作(步驟1)。 Primary OSD收到請求後,分別向Secondary OSD和Tertiary OSD發起寫人操作(步驟2和步驟3)。當Secondary OSD和Tertiary OSD各自完成寫入操作後,將分別向Primary OSD發送確認信息(步驟4和步驟5)。當Primary OSD確認其他兩個OSD的寫入完成後,則自己也完成數據寫入,並向客戶端確認Object寫入操作完成(步驟6)。之所以採用這樣的寫入流程,本質上是為了保證寫入過程中的可靠性,盡可能避免出現數據丟失的情況。同時,由於客戶端只需要向Primary OSD發送數據,因此在互聯網使用場景下的外網帶寬和整體訪問延遲又得到了一定程度的優化。當然,這種可靠性機制必然導致較長的延遲,特別是,如果等到所有的OSD都將數據寫入磁碟後再向客戶端發送確認信號,則整體延遲可能難以忍受。因此, Ceph可以分兩次向客戶端進行確認。當各個OSD都將數據寫入內存緩沖區後,就先向客戶端發送一次確認,此時客戶端即可以向下執行。待各個OSD都將數據寫入磁碟後,會向客戶端發送一個最終確認信號,此時客戶端可以根據需要刪除本地數據。分析上述流程可以看出,在正常情況下,客戶端可以獨立完成OSD定址操作,而不必依賴於其他系統模塊。因此,大量的客戶端可以同時和大量的OSD進行並行操作。同時,如果一個File被切分成多個Object,這多個Object也可被並行發送至多個OSD上。從OSD的角度來看,由於同一個OSD在不同的PG中的角色不同,因此,其工作壓力也可以被盡可能均勻地分擔,從而避免單個OSD變成性能瓶頸。

問:為什麼要設計三層映射而不是一層?

答:如果將object直接映射到一組OSD上,如果這種演算法是固定的哈希演算法,則意味著一個object被固定映射在一組OSD上,當其中一個OSD損壞時,object也無法部署到新的OSD上(因為映射函數不允許)。

如果設計一個動態演算法(例如CRUSH演算法)來完成這一映射,結果將是各個OSD所處理的本地元數據暴增,由此帶來的計算復雜度和維護工作量也是難以承受的。

綜上所訴,引入PG的好處至少有二:一方面試下呢object和OSD之間的動態映射,從而為Ceph的可靠性、自動化等特性的實現留下了空間;另一方面也有效簡化了數據的存儲組織,大大降低了系統的維護管理開銷。

1.准備工作

時間同步`

安裝ntpdate(時間同步工具)

# apt install ntpate

0* * * * ntpdate time1.aliyun.com

echo'0 * * * * ntpdate time1.aliyun.com'>> /var/spool/cron/crontabs/root

或者 可以通過

ansible all-mshell-a"echo  '0 * * * * ntpdate time1.aliyun.com' >> /var/spool/cron/crontabs/root"

關閉 selinux 和防火牆

root@node1:~# sudo ufw status  ##查看狀態

Status: inactive

root@node1:~# sudo ufw disable

Firewall stopped and disabled on system startup##禁用

root@node1:~#

配置域名解析或通過 DNS 解析

root@node1:~# cat /etc/hosts

127.0.0.1 localhost

root@node1:~# hostnamectl set-hostname 對應的名稱

## 以下是新增的 可以按照自己的習慣配置

192.168.106.101  node1

192.168.106.102  node2

192.168.106.103  node3

安裝python

root@node1:~# apt install python  ##python2

源修改成國內源  -- 具體步驟自行網路

https://mirrors.aliyun.com/ceph/#阿里雲鏡像倉庫

http://mirrors.163.com/ceph/#網易鏡像倉庫

https://mirrors.tuna.tsinghua.e.cn/ceph/#清華大學鏡像源

ceph用到的埠 (防火牆和安全中記得放開)

Ceph Monitor:啟用 Ceph MON 服務或埠 6789 (TCP)。

Ceph OSD 或元數據伺服器:啟用 Ceph OSD/MDS 服務或埠 6800-7300 (TCP)。

iSCSI 網關:打開埠 3260 (TCP)。

對象網關:打開對象網關通訊所用的埠。此埠在 /etc/ceph.conf 內以 rgw frontends = 開頭的行中設置。HTTP 的默認埠為 80,HTTPS (TCP) 的默認埠為 443。

NFS Ganesha:默認情況下,NFS Ganesha 使用埠 2049(NFS 服務、TCP)和 875 (rquota 支持、TCP)。

SSH:打開埠 22 (TCP)。

NTP:打開埠 123 (UDP)。

2.搭建ceph集群

安裝cephadm

root@node1:~#  wget https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm ## node1 管理節點上執行

root@node1:~#  chmod +x cephadm

root@node1:~# ./cephadm add-repo --release pacific  ##設置要安裝的版本

root@node1:~#  which cephadm   ##確認是否安裝成功

初始化集群

root@node1:~# cephadm bootstrap --mon-ip 192.168.106.101   ##ceph集群第一個節點的ip

初始化完了以後就可以訪問dashboard了 地址 : https://node1:8443/#/dashboard 訪問用戶密碼上一步生成

添加其他節點和其他組件

root@node1:~# ssh-keygen

## 配置免密通信

root@node1:~#  ssh--id -f -i /etc/ceph/ceph.pub root@node2

root@node1:~#  ssh--id -f -i /etc/ceph/ceph.pub root@node3

## 添加node

root@node1:~#  ceph orch host add node2 192.168.106.102

root@node1:~#  ceph orch host add node3 192.168.106.103

## 添加osd

root@node1:~#  ceph orch daemon add osd node1:/dev/sdb

root@node1:~#  ceph orch daemon add osd node1:/dev/sdb

root@node1:~#  ceph orch daemon add osd node3:/dev/sdb

測試

root@node1:~#  ceph fs volume create testfs  ##添加測試fs

root@node1:~#  ceph orch apply mds testfs --placement="3" ##設置備份數

root@node1:~#   ceph orch daemon add mds testfs node1

root@node1:~#   ceph mds stat

## 在集群之外的或者任意機器上操作

root@node4:~#  apt install ceph-common -y

node1初始化集群的節點操作

root@node1:~#  scp /etc/ceph/ceph.client.admin.keyring user@node4:/etc/ceph

##  集群之外的clinet或者測試節點執行

root@node4:~#  mount -t ceph node1:/ /mnt/testfs -o name=admin,secret=AQAoJjBh7OPVNhAAQZyzLhDfgSj+KPmeU5RVlA==,fs=testfs  

root@node4:~#  mount -t ceph node2:/ /mnt/cephfs -o name=admin,secret=AQAoJjBh7OPVNhAAQZyzLhDfgSj+KPmeU5RVlA==,fs=testfs

root@node4:~#  df -h

Filesystem                  Size  Used Avail Use% Mounted on

udev1.4G01.4G0% /dev

tmpfs                       293M1.2M  292M1% /run

....

192.168.106.101:/            18G 1000M   17G6% /mnt/testfs

192.168.106.102:/            18G 1000M   17G6% /mnt/cephfs

root@node4:~#  cd /mnt/cephfs

root@node4:/mnt/cephfs#  dd if=/dev/zero of=test bs=1M count=100 ##生成文件

這時候文件是直接寫在ceph集群上看了, 可以通過dashboard觀察👀。

C. 請教:基於塊存儲和基於文件系統的存儲

Ceph布式存儲系統支持象文件快介面設計目標:

? 所組件橫向擴展

? 沒單點故障

? 普通廠商硬體使用

? 所機制都能自我管理

? 源

布式存儲應用場景相於其存儲介面現流行三種:

  1. 象存儲: 通意義鍵值存儲其介面簡單GET,PUTDEL其擴展七牛、拍SwiftS3等

  2. 2.塊存儲: 種介面通QEMUDriver或者KernelMole式存種介面需要實現LinuxBlock Device介面或者QEMU提供Block Driver介面SheepdogAWSEBS青雲雲硬碟阿雲盤古系統CephRDB(RDBCeph面向塊存儲介面)

  3. 3、文件存儲: 通意義支持POSIX介面跟傳統文件系統Ext4類型區別於布式存儲提供並行化能力CephCephFS(CephFSCeph面向文件存儲介面)候GFSHDFS種非POSIX介面類文件存儲介面歸入類

  4. 提存儲種類提另外題:存儲能做統化必須要同軟體棧管理同存儲設備:SSDSATA等

  5. Ceph提同觀點RADOS提供基礎存儲設備管理、數據控制流訪問管理提供靠持久數據存儲平台基於其我實現同介面戶實現面向同需求接比象存儲我單獨庫實現滿足同存儲需要比我塊存儲通RDP實現

  6. 統存儲並意味著所存儲都同介面同實現同軟體棧其實使用同設備管理命周期數據訪問效控制提供相合理非適合運維利於本利於軟體靠性控制機制保證我存儲靠

  7. 舉例部存儲廠商甚至網路廠商都自核軟體棧文件系內核基於其演化各種同產品線廠商要追求各產品線極致應該每產品完全獨立追求極致事實核底層技術棧需要高質量代碼、完備測試期使用Ceph布式系統並發IO、布式恢復、數據端端校驗等等關鍵實現唯實現熟系統系統些實現需要經定量級間考驗才Ceph所謂統存儲其介面堆疊式發

  8. 【Ceph其源布式存儲、其商用存儲區別處哪】

  9. 眾所周知傳統廠商立、富士通等存儲廠採用Ceph作存儲硬體載體Ceph能提供企業級存儲服務定優勢才能讓傳統存儲廠商棄採用源存儲案

  10. 1、化系統我認數據控制系統面做較遷移運維面提供較實現卻元數據瓶頸訪問數據需要經元數據伺服器查詢再尋找相應數據伺服器規模擴展遇性能瓶頸問題

  11. 2、全布式系統雖提供較數據訪問能力能高效處理客戶端LO請求卻沒提供非數據控制實現比故障處理能力足數據恢復困難跳化元數據存儲系統沒辦做強致性數據恢復

  12. 彈性數據布策略物理拓撲輸入實現高用性高持久性Ceph高性能重構體現利用CRush算數進行約束避免數據布所集群節點利用Ceph設計並提供由CRush算支持高自由化存儲集群設計實現高靠性高持久性高性能

D. 如何搭建私有雲存儲

虛擬化技術在企業私有雲IT基礎架構中仍然占據重要地位,同時,為了進一步提升應用效率,越來越多的生產環境也正在逐步變革,從以虛擬機為中心的架構向以容器和微服務為中心的雲原生架構過渡,在這個過程中,存儲如何有效支撐各種雲主機應用與微服務應用,對於企業的私有雲數據中心提出了新的挑戰。

企業面臨的問題

存儲設施七國八制,硬體鎖定缺少彈性

多種雲平台對於存儲的要求各不相同,塊/文件/對象存儲對應不同類型的應用,對外提供不同的服務介面,一種存儲設備無法滿足多種類型的雲平台存儲需求,而且傳統存儲在擴展性方面不能滿足雲時代大規模雲平台對存儲在線彈性擴容的需求,在可維護性方面則面臨硬體架構綁定、運維復雜、難以維保等問題,而且這些問題會隨著存儲設備種類和數量的增多進一步放大。

業務調度變更頻繁,資源不能共享

隨著開發測試虛擬機以及容器、微服務平台在企業私有雲平台的上線,大型企業的應用快速迭代、頻繁發布對存儲系統的支撐提出了嚴峻挑戰,不同業務的數據保存在不同廠商的存儲設備中,數據流動性差,不僅導致存儲空間及性能資源浪費嚴重,數據災備方案也很難統一化。

開源產品難以維護,不能實現企業級產品化

基於開源虛擬化技術的雲平台如OpenStack為眾多客戶提供了快速構建私有雲基礎設施的能力,但是存儲部分卻不一樣,開源的存儲系統如Ceph雖然可以小規模部署試用, 但在大規模商用時會遇到很多問題:與硬體和企業級應用生態融合程度不高,嚴重依賴人工開發運維,在性能和服務質量方面不能滿足核心業務的需求

杉岩私有雲存儲解決方案

杉岩私有雲存儲解決方案充分發揮了杉岩統一存儲平台(USP)的雲適配、開放等優勢,支持各種復雜的應用負載,可靈活支撐私有雲的虛擬化平台,如VMware、Citrix、OpenStack等虛擬化和雲平台,以及通過Kubernetes軟體一致性認證的所有容器雲平台,如:Rancher、Openshift、Kubernetes等。

通過杉岩統一存儲平台,用戶可快速構建能夠兼容所有主流虛擬化平台與容器微服務平台的統一存儲資源池,面對各種虛擬機和微服務需求,池化的存儲平台為大規模雲環境提供了可靠的存儲基礎架構支撐,幫助用戶從紛繁復雜的基礎架構運維工作中解放出來,更關注於私有雲上運行的業務本身。

客戶價值

資源整合,鏈接企業信息孤島

單資源池提供塊、文件、對象多種存儲服務,支持虛擬化平台和資料庫應用;強大的存儲資源生命周期管理能力,跨雲平台在線遷移數據,實現數據共享和提高資源利用率;存儲卷QoS等級和性能優先順序在線調整,可根據企業資源和業務需求合理配置資源。

開放兼容,適配多種私有雲平台

通過VMware VAAI和Citrix Ready認證,針對主流虛擬化平台優化I/O性能,大幅提升虛擬機訪問的性能。通過OpenStack Cinder認證,可提供塊和對象存儲基礎架構支撐支持容器平台CSI介面認證,為Kubernetes生態的容器應用提供塊和文件存儲服務。

智能管理,解決規模化運維難題

向導式安裝部署和自助擴容配置,極大提升易用性和可維護性,管理自動化降低運維成本;針對大規模集群優化的可靠性管理,檢測和修復硬碟軟錯誤的專利技術,節約用戶硬體投資。存儲視角的管理功能,可視化展示主機、容器與存儲的映射關系和性能監控協助管理員快速定位和解決問題。

E. 如何自己在linux上搭建類似雲盤的分布式雲存儲

我們常用的系統大多數是Windows和Mac,但是相比較來說在Linux上部署雲盤更穩定。樓主的想要的是如何從0到1,一步步開發、搭建雲存儲,但相對於大眾來說,難度系數太高,畢竟不是人人都有IT技術,也不是每個公司都有IT人員能夠完成開發、搭建、部署、運維的。

樓上已經有答案說到開發的層面,那我就來說說更適合大眾的搭建方式,那就是拿成熟的雲盤產品直接搭建。

現在雲盒子企業私有雲盤的官網上提供了雲盒子Linux伺服器安裝包,大家有伺服器或者閑置電腦的話,可以直接進入下載板塊下載適用,為方便大家搭建,雲盒子還附上了使用幫助,根據提示輕松部署。

Linux搭建雲存儲

關於運維也不用擔心,雲盒子配備了實施工程師,排查、解決、更新都不用你操心。

有興趣的朋友可以試試

F. 如何在Ubuntu 16.04中安裝Ceph存儲集群

第 1 步 - 配置所有節點
這次安裝,我將配置所有的 6 個節點來准備安裝 Ceph 集群軟體。所以你必須在所有節點運行下面的命令。然後確保所有節點都安裝了 ssh-server。
創建 Ceph 用戶
在所有節點創建一個名為 cephuser 的新用戶
useradd -m -s /bin/bash cephuserpasswd cephuser

創建完新用戶後,我們需要給 cephuser 配置無密碼的 sudo 許可權。這意味著 cephuser 可以不先輸入密碼而獲取到 sudo 許可權運行。
運行下面的命令來完成配置。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuserchmod 0440 /etc/sudoers.d/cephusersed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

安裝和配置 NTP
安裝 NTP 來同步所有節點的日期和時間。先運行 ntpdate 命令通過 NTP 設置日期。我們將使用 US 池的 NTP 伺服器。然後開啟並使 NTP 服務在開機時啟動。
sudo apt-get install -y ntp ntpdate ntp-docntpdate 0.us.pool.ntp.orghwclock --systohcsystemctl enable ntpsystemctl start ntp

安裝 Open-vm-tools

G. 如何在CentOS 7.0上配置Ceph存儲

Ceph 是一個將數據存儲在單一分布式計算機集群上的開源軟體平台。當你計劃構建一個雲時,你首先需要決定如何實現你的存儲。開源的 Ceph 是紅帽原生技術之一,它基於稱為 RADOS 的對象存儲系統,用一組網關 API 表示塊、文件、和對象模式中的數據。由於它自身開源的特性,這種便攜存儲平台能在公有雲和私有雲上安裝和使用。Ceph 集群的拓撲結構是按照備份和信息分布設計的,這種內在設計能提供數據完整性。它的設計目標就是容錯、通過正確配置能運行於商業硬體和一些更高級的系統。

Ceph 能在任何 Linux 發行版上安裝,但為了能正確運行,它需要最近的內核以及其它最新的庫。在這篇指南中,我們會使用最小化安裝的 CentOS-7.0。

系統資源
**CEPH-STORAGE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.136.163
FQDN: ceph-storage.linoxide.com
**CEPH-NODE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.171.138
FQDN: ceph-node.linoxide.com

安裝前的配置
在安裝 Ceph 存儲之前,我們要在每個節點上完成一些步驟。第一件事情就是確保每個節點的網路已經配置好並且能相互訪問。
配置 Hosts
要在每個節點上配置 hosts 條目,要像下面這樣打開默認的 hosts 配置文件(LCTT 譯註:或者做相應的 DNS 解析)。
#vi/etc/hosts
45.79.136.163 ceph-storage ceph-storage.linoxide.com
45.79.171.138 ceph-node ceph-node.linoxide.com
安裝 VMware 工具
工作環境是 VMWare 虛擬環境時,推薦你安裝它的 open VM 工具。你可以使用下面的命令安裝。
#yum install -y open-vm-tools
配置防火牆
如果你正在使用啟用了防火牆的限制性環境,確保在你的 Ceph 存儲管理節點和客戶端節點中開放了以下的埠。
你必須在你的 Admin Calamari 節點開放 80、2003、以及4505-4506 埠,並且允許通過 80 號埠訪問到 Ceph 或 Calamari 管理節點,以便你網路中的客戶端能訪問 Calamari web 用戶界面。
你可以使用下面的命令在 CentOS 7 中啟動並啟用防火牆。
#systemctl start firewalld
#systemctl enable firewalld
運行以下命令使 Admin Calamari 節點開放上面提到的埠。
# firewall-cmd --zone=public--add-port=80/tcp --permanent
# firewall-cmd --zone=public--add-port=2003/tcp --permanent
# firewall-cmd --zone=public--add-port=4505-4506/tcp --permanent
# firewall-cmd --reload
在 Ceph Monitor 節點,你要在防火牆中允許通過以下埠。
# firewall-cmd --zone=public--add-port=6789/tcp --permanent
然後允許以下默認埠列表,以便能和客戶端以及監控節點交互,並發送數據到其它 OSD。
# firewall-cmd --zone=public--add-port=6800-7300/tcp --permanent
如果你工作在非生產環境,建議你停用防火牆以及 SELinux 設置,在我們的測試環境中我們會停用防火牆以及 SELinux。
#systemctl stop firewalld
#systemctl disable firewalld
系統升級
現在升級你的系統並重啟使所需更改生效。
#yum update
#shutdown-r 0

設置 Ceph 用戶
現在我們會新建一個單獨的 sudo 用戶用於在每個節點安裝 ceph-deploy工具,並允許該用戶無密碼訪問每個節點,因為它需要在 Ceph 節點上安裝軟體和配置文件而不會有輸入密碼提示。
運行下面的命令在 ceph-storage 主機上新建有獨立 home 目錄的新用戶。
[root@ceph-storage ~]#useradd-d /home/ceph -m ceph
[root@ceph-storage ~]#passwd ceph
節點中新建的每個用戶都要有 sudo 許可權,你可以使用下面展示的命令賦予 sudo 許可權。
[root@ceph-storage ~]#echo"ceph ALL = (root) NOPASSWD:ALL"|sudotee/etc/sudoers.d/ceph
ceph ALL =(root) NOPASSWD:ALL
[root@ceph-storage ~]#sudochmod0440/etc/sudoers.d/ceph

設置 SSH 密鑰
現在我們會在 Ceph 管理節點生成 ssh 密鑰並把密鑰復制到每個 Ceph 集群節點。
在 ceph-node 運行下面的命令復制它的 ssh 密鑰到 ceph-storage。
[root@ceph-node ~]#ssh-keygen
Generatingpublic/private rsa key pair.
Enterfilein which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (emptyforno passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Yourpublic key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
5b:*:*:*:*:*:*:*:*:*:c9 root@ceph-node
The key's randomart image is:
+--[ RSA 2048]----+
[root@ceph-node ~]#ssh--id ceph@ceph-storage

SSH key

配置 PID 數目
要配置 PID 數目的值,我們會使用下面的命令檢查默認的內核值。默認情況下,是一個小的最大線程數 32768。
如下圖所示通過編輯系統配置文件配置該值為一個更大的數。

更改 PID 值

配置管理節點伺服器
配置並驗證了所有網路後,我們現在使用 ceph 用戶安裝 ceph-deploy。通過打開文件檢查 hosts 條目(LCTT 譯註:你也可以用 DNS 解析來完成)。
#vim/etc/hosts
ceph-storage 45.79.136.163
ceph-node 45.79.171.138
運行下面的命令添加它的庫。
# rpm -Uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm

添加 Ceph 倉倉庫
或者創建一個新文件並更新 Ceph 庫參數,別忘了替換你當前的 Release 和版本號。
[root@ceph-storage ~]#vi/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
之後更新你的系統並安裝 ceph-deploy 軟體包。

安裝 ceph-deploy 軟體包
我們運行下面的命令以及 ceph-deploy 安裝命令來更新系統以及最新的 ceph 庫和其它軟體包。
#yum update -y &&yum install ceph-deploy -y

配置集群
使用下面的命令在 ceph 管理節點上新建一個目錄並進入新目錄,用於收集所有輸出文件和日誌。
#mkdir~/ceph-cluster
#cd~/ceph-cluster
# ceph-deploy new storage

設置 ceph 集群
如果成功執行了上面的命令,你會看到它新建了配置文件。
現在配置 Ceph 默認的配置文件,用任意編輯器打開它並在會影響你公共網路的 global 參數下面添加以下兩行。
#vim ceph.conf
osd pool defaultsize=1
public network =45.79.0.0/16

安裝 Ceph
現在我們准備在和 Ceph 集群關聯的每個節點上安裝 Ceph。我們使用下面的命令在 ceph-storage 和 ceph-node 上安裝 Ceph。
# ceph-deploy install ceph-node ceph-storage

安裝 ceph
處理所有所需倉庫和安裝所需軟體包會需要一些時間。
當兩個節點上的 ceph 安裝過程都完成後,我們下一步會通過在相同節點上運行以下命令創建監視器並收集密鑰。
# ceph-deploy mon create-initial

Ceph 初始化監視器

設置 OSD 和 OSD 守護進程
現在我們會設置磁碟存儲,首先運行下面的命令列出你所有可用的磁碟。
# ceph-deploy disk list ceph-storage
結果中會列出你存儲節點中使用的磁碟,你會用它們來創建 OSD。讓我們運行以下命令,請使用你的磁碟名稱。
# ceph-deploy disk zap storage:sda
# ceph-deploy disk zap storage:sdb
為了最後完成 OSD 配置,運行下面的命令配置日誌磁碟以及數據磁碟。
# ceph-deploy osd prepare storage:sdb:/dev/sda
# ceph-deploy osd activate storage:/dev/sdb1:/dev/sda1
你需要在所有節點上運行相同的命令,它會清除你磁碟上的所有東西。之後為了集群能運轉起來,我們需要使用以下命令從 ceph 管理節點復制不同的密鑰和配置文件到所有相關節點。
# ceph-deploy admin ceph-node ceph-storage

測試 Ceph
我們快完成了 Ceph 集群設置,讓我們在 ceph 管理節點上運行下面的命令檢查正在運行的 ceph 狀態。
# ceph status
# ceph health
HEALTH_OK
如果你在 ceph status 中沒有看到任何錯誤信息,就意味著你成功地在 CentOS 7 上安裝了 ceph 存儲集群。

H. 如何搭建ceph虛擬基礎設施 windows環境

搭建虛擬化伺服器,在Hyper-v管理器中,安裝windows server 2012虛擬機系統。
打開Hyper-v管理器,右擊hyper-v伺服器—新建---虛擬機。
在彈出虛擬機新建向導頁面,單擊下一步。
指定虛擬機在Hyper-v中的顯示名稱,選擇虛擬機的存儲位置,選擇完畢後,單擊下一步。
根據虛擬機具體需求,分配內存。
選擇虛擬機要使用的網路連接。
選擇創建虛擬硬碟,指定虛擬硬碟的位置和大小。
選擇安裝介質,可使用物理CD/DVD驅動器安裝,也可直接用映像文件進行安裝。
虛擬機摘要中,確認相關信息無誤後,單擊完成,完成創建虛擬機向導。
打開Hyper-v管理器,右擊新建的虛擬機,單擊啟動選項,開始安裝虛擬機系統,再次右擊虛機選擇選項,即可打開虛擬機的控制台界面。
安裝過程與物理機安裝操作系統相同。

I. 如何基於Ceph構建高性能塊存儲服務

Ceph是一個分布式存儲系統,支持對象文件快介面,設計目標是:
• 所有組件橫向擴展
• 沒有單點故障
• 可以在普通廠商硬體使用
• 所有機制都能自我管理
• 開源
分布式存儲的應用場景相對於其存儲介面,現在流行分為三種:
1.對象存儲: 也就是通常意義的鍵值存儲,其介面就是簡單的GET,PUT,DEL和其他擴展,如七牛、又拍,Swift,S3等。
2.塊存儲: 這種介面通常以QEMUDriver或者KernelMole的方式存在,這種介面需要實現Linux的Block Device的介面或者QEMU提供的Block Driver介面,如Sheepdog,AWS的EBS,青雲的雲硬碟和阿里雲的盤古系統,還有Ceph的RDB(RDB是Ceph面向塊存儲的介面)。
3、文件存儲: 通常意義是支持POSIX介面,它跟傳統的文件系統如Ext4是一個類型的,但區別在於分布式存儲提供了並行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲的介面),但是有時候又會把GFS,HDFS這種非POSIX介面的類文件存儲介面歸入此類。
提到存儲的種類就不得不提到另外一個話題:存儲不能做統一化嗎?因為必須要有多個不同的軟體棧去管理不同的存儲設備:SSD,SATA等。
Ceph就此提出了不同觀點,RADOS提供了基礎的存儲設備的管理、數據控制流訪問的管理,提供的是一個可靠持久的數據存儲平台,基於其上,我們可以實現多個不同的介面戶來實現面向不同需求的對接,比如對象存儲我們有一個單獨的庫實現去滿足不同的存儲需要,比如我們塊存儲是通過RDP來實現。
統一存儲並不意味著所有存儲都的同一個介面,同一個實現,同一個軟體棧,它其實只是使用了同一個設備管理的生命周期和數據訪問的有效控制,它提供了一個相對合理,非常適合運維的,利於成本,利於軟體可靠性控制的的機制去保證我們的存儲的可靠。
舉一個例子,大部分存儲廠商甚至網路廠商都有一個自己的核心軟體棧,如文件系內核。基於其上演化出各種不同的產品線。如果廠商要追求各個產品線的極致是不是就應該每個產品完全獨立來追求極致,但事實上一個核心的底層技術棧需要高質量的代碼、完備的測試和長期的使用。在Ceph這里,一個分布式系統的並發IO、分布式恢復、數據端到端校驗等等關鍵實現是唯一實現,成熟的系統系統在這些實現上需要經過一定量級和時間的考驗,這才是Ceph所謂的統一存儲,而不是其他的介面堆疊式開發。
【Ceph和其他開源分布式存儲、其他商用存儲的區別之處在哪?】
眾所周知,很多傳統廠商如日立、富士通等存儲大廠也採用了Ceph作為它們存儲硬體的載體,Ceph能提供企業級的存儲服務一定有它的優勢,才能讓傳統的存儲廠商棄而採用開源的存儲方案。
1、中心化系統我們認為它在數據控制系統方面做的較好,在遷移運維方面提供較好的實現,但卻有元數據的瓶頸。在訪問數據時需要經過元數據伺服器的查詢再去尋找相應的數據伺服器會在大規模擴展時遇到性能瓶頸問題。
2、全分布式系統雖然提供較好的數據訪問能力,能高效處理客戶端的LO請求,但是卻沒有提供一個非常好的數據控制的實現,比如故障處理能力不足,數據恢復的困難,如果跳出中心化的元數據存儲系統它沒辦法做到強一致性的數據恢復。
彈性的數據分布策略和物理拓撲輸入實現了高可用性和高持久性,Ceph的高性能重構還體現在利用CRush演算法對數進行約束,避免數據分布到所有的集群的一個節點上,利用Ceph設計並提供的一個由CRush演算法來支持一個高自由化的存儲集群的設計,實現高可靠性,高持久性,高性能。

J. 如何使用國內源部署Ceph

Ceph是一個 Linux PB 級分布式文件系統。 其命名和UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是 "Sammy",一個香蕉色的蛞蝓,就是頭足類中無殼的軟體動物。這些有多觸角的頭足類動物,是對一個分布式文件系統高度並行的形象比喻。 Ceph 最初是一項關於存儲系統的 PhD 研究項目,由 Sage Weil 在 University of California, SantaCruz(UCSC)實施。 簡單定義為以下3項: 1. 可輕松擴展到數 PB 容量 2. 支持多種工作負載的高性能(每秒輸入/輸出操作[IOPS]和帶寬) 3. 高可靠性 但是,這些目標之間會互相競爭(例如,可擴展性會降低或者抑制性能或者影響可靠性)。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級存儲)存儲故障是常見現象而不是例外情況。 它的設計並沒有假設某種特殊工作負載,但包括了適應變化的工作負載,並提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 為目標的改進)的應用進行透明的部署。 Ceph 生態系統架構可以劃分為四部分: 1. Clients:客戶端(數據用戶) 2. cmds:Metadata server cluster,元數據伺服器(緩存和同步分布式元數據) 3. cosd:Object storage cluster,對象存儲集群(將數據和元數據作為對象存儲,執行其他關鍵職能) 4. cmon:Cluster monitors,集群監視器(執行監視功能)

熱點內容
安川編程招工 發布:2024-04-30 15:21:31 瀏覽:641
lru缺頁演算法 發布:2024-04-30 15:19:29 瀏覽:496
伺服器內網ip和外網ip是什麼 發布:2024-04-30 15:13:13 瀏覽:752
c編譯的產物 發布:2024-04-30 15:07:07 瀏覽:58
sql2000服務 發布:2024-04-30 15:00:05 瀏覽:530
如何導出土豆緩存視頻 發布:2024-04-30 14:39:36 瀏覽:470
圖論環的演算法 發布:2024-04-30 14:39:35 瀏覽:641
演算法課項目 發布:2024-04-30 14:23:34 瀏覽:245
路由器無線密碼從哪裡看 發布:2024-04-30 13:41:07 瀏覽:765
安卓由哪個公司提供 發布:2024-04-30 12:27:03 瀏覽:417