做用:主要是將裸磁盤空間映射給主機使用,磁盤陣列(內含多塊硬盤)作RAID操做或者LVM操做,邏輯劃分出N塊Logic盤並映射給主機使用,操做系統會識別到N塊硬盤,可是沒法感知究竟是邏輯盤仍是物理盤,因此仍是會對其進行分區和格式化(沒法共享數據)。每塊邏輯盤其實是由多塊硬盤共同組成,在讀寫數據的時候,幾塊物理硬盤能夠並行尋址和操做,大大提升了IO效率。node
優勢:對塊磁盤組成邏輯盤,讀寫效率增長linux
缺點:至關於本身主機的硬盤,沒法進行數據共享算法
典型設備:FTP、NFS服務器
優勢:客服了塊存儲文件沒法共享的問題
缺點:讀寫、傳輸速率低
場景:日誌、郵箱、目錄結構文件存儲
備註:常見的存儲中 NFS、NAS也是屬於文件系統存儲docker
對象存儲:也叫作基於對象的存儲,是用來描述解決和處理離散單元的方法的通用術語,這些離散單元被稱做爲對象。
swift
對象存儲常常被比做在一家高級餐廳代客停車。當一個顧客須要代客停車時,他就把鑰匙交給別人,換來一張收據。這個顧客不用知道他的車被停在哪,也不用知道在他用餐時服務員會把他的車移動多少次。在這個比喻中,一個存儲對象的惟一標識符就表明顧客的收據。vim
優勢:綜合了塊讀寫高速、文件共享特性後端
存儲數據類型:指非結構化數據,如圖片、音視頻、文檔等centos
應用場景:即一次寫入屢次讀取。安全
分佈式存儲:是將數據分散存儲在多臺獨立的設備上。傳統的網絡存儲系統採用集中的存儲服務器存放全部數據,存儲服務器成爲系統性能的瓶頸,也是可靠性和安全性的焦點,不能知足大規模存儲應用的須要。分佈式網絡存儲系統採用可擴展的系統結構,利用多臺存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,它不但提升了系統的可靠性、可用性和存取效率,還易於擴展。bash
一、高可用性,副本數靈活控制,支持故障域分割,數據強一致性,沒有單點故障
二、高可擴展性
三、特性豐富
簡介:無論你是想爲雲平臺提供Ceph 對象存儲和/或 Ceph 塊設備,仍是想部署一個 Ceph 文件系統或者把 Ceph 做爲他用,全部 Ceph 存儲集羣的部署都始於部署一個個 Ceph 節點、網絡和 Ceph 存儲集羣。 Ceph 存儲集羣至少須要一個 Ceph Monitor 和兩個 OSD 守護進程。而運行 Ceph 文件系統客戶端時,則必需要有元數據服務器( Metadata Server )
Ceph是一個統一的分佈式存儲系統,設計初衷是提供較好的性能、可靠性和可擴展性。 Ceph 存儲集羣至少須要一個 Ceph Monitor 和兩個 OSD 守護進程。而運行 Ceph 文件系統客戶端時,則必需要有元數據服務器( Metadata Server )
1. CRUSH算法:
ceph摒棄了傳統的集中式存儲元數據尋址的方案,轉而使用CRUSH算法完成數據的尋址操做。CRUSH在一致性哈希基礎上很好的考慮了容災域的隔離,可以實現各種負載的副本放置規則
2.高可用:
Ceph中的數據副本數量能夠由管理員自行定義,並能夠經過CRUSH算法指定副本的物理存儲位置以分隔故障域,支持數據強一致性; ceph能夠忍受多種故障場景並自動嘗試並行修復。
3 高擴展性:
Ceph不一樣於swift,客戶端全部的讀寫操做都要通過代理節點。一旦集羣併發量增大時,代理節點很容易成爲單點瓶頸。Ceph自己並無主控節點,擴展起來比較容易,而且理論上,它的性能會隨着磁盤數量的增長而線性增加。
4 特性豐富
Ceph支持三種調用接口:對象存儲,塊存儲,文件系統掛載。三種方式能夠一同使用。在國內一些公司的雲環境中,一般會採用ceph做爲openstack的惟一後端存儲來提高數據轉發效率。
Ceph的基本組成結構以下圖:
Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的複製、恢復、回填、再均衡,並經過檢查其餘OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集羣設定爲有2個副本時,至少須要2個 OSD 守護進程,集羣才能達到 active+clean 狀態( Ceph 默認有3個副本,但你能夠調整副本數)。
Monitors: Ceph Monitor維護着展現集羣狀態的各類圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變動的歷史信息(稱爲 epoch )。
MDSs: Ceph 元數據服務器( MDS )爲 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,能夠在不對 Ceph 存儲集羣形成負擔的前提下,執行諸如 ls、find 等基本命令。
官網指導部署
https://docs.ceph.com/en/latest/cephadm/install/
準備三臺服務器
192.168.106.100 ceph-admin 192.168.106.101 ceph-node1 192.168.106.1002 ceph-node2
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i '7s/enforcing/disabled/' /etc/selinux/config
cat /etc/hosts 192.168.106.100 ceph-admin 192.168.106.101 ceph-node1 192.168.106.1002 ceph-node2
配置互信(各個節點)
ssh-keygen -t rsa ssh-copy-id ceph-node1 ssh-copy-id ceph-node2
yum -y install wget curl net-tools bash-completion wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置ceph源
cat << EOF > /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 EOF
服務端:
vim /etc/chrony.conf allow 192.168/16 local stratum 10 systemctl restart chronyd.service
客戶端
vim /etc/chrony.conf server 192.168.106.100 iburst systemctl restart chronyd.service chronyc sources
yum -y install docker-ce systemctl restart docker systemctl enable docker docker pull ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 #各個節點安裝
首先啓動主節點mon(ceph-admin節點)
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.100 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
若直接使用非xfs文件系統的硬盤,須要在配置文件中加如下配置:
vim /etc/ceph/ceph.conf osd max object name len = 256 osd max object namespace len = 64
scp -r /etc/ceph/ ceph-node1:/etc/ scp -r /etc/ceph/ ceph-node2:/etc/ scp -r /var/lib/ceph ceph-node1:/var/lib/ scp -r /var/lib/ceph ceph-node2:/var/lib/
ceph-node1執行
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.101 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
ceph-node2執行
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.102 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
mkdir /osd0 mkfs.xfs /dev/sdb mount /dev/sdb /osd0
docker run -d --net=host --name=osd1 -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /dev:/dev -v /osd0:/var/lib/ceph/osd --privileged=true ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 osd_directory
docker run -d --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mgr
rdb是存儲池名字,64是pg數量,pg值計算參考https://ceph.com/pgcalc/
docker exec mon ceph osd pool create rbd 64
docker exec mon ceph osd crush add osd.0 0.15 host=admin docker exec mon ceph osd crush add osd.1 0.15 host=admin
檢查osd tree
docker exec mon ceph osd tree
docker exec mon ceph osd crush move node0 root=default docker exec mon ceph osd crush move node1 root=default
docker exec mon ceph -s
測試ceph集羣在塊存儲下鏡像的建立和文件的上傳,若是成功才能說明ceph集羣安裝成功
docker exec mon rbd create rbd/test-image --size 100M docker exec mon rbd info rbd/test-image docker exec mon rados -p rbd ls