塊存儲:典型設(shè)備卫病;磁盤陣列,硬盤
作用:主要是將裸磁盤空間映射給主機(jī)使用典徘,磁盤陣列(內(nèi)含多塊硬盤)做RAID操作或者LVM操作蟀苛,邏輯劃分出N塊Logic盤并映射給主機(jī)使用,操作系統(tǒng)會識別到N塊硬盤逮诲,但是無法感知到底是邏輯盤還是物理盤帜平,所以還是會對其進(jìn)行分區(qū)和格式化(無法共享數(shù)據(jù))。每塊邏輯盤實(shí)際上是由多塊硬盤共同組成梅鹦,在讀寫數(shù)據(jù)的時候裆甩,幾塊物理硬盤可以并行尋址和操作,大大提高了IO效率齐唆。
優(yōu)點(diǎn):對塊磁盤組成邏輯盤淑掌,讀寫效率增加
缺點(diǎn):相當(dāng)于自己主機(jī)的硬盤,無法進(jìn)行數(shù)據(jù)共享
文件存儲
典型設(shè)備:FTP蝶念、NFS服務(wù)器
優(yōu)點(diǎn):客服了塊存儲文件無法共享的問題
缺點(diǎn):讀寫抛腕、傳輸速率低
場景:日志、郵箱媒殉、目錄結(jié)構(gòu)文件存儲
備注:常見的存儲中 NFS担敌、NAS也是屬于文件系統(tǒng)存儲
對象存儲
對象存儲:也叫做基于對象的存儲,是用來描述解決和處理離散單元的方法的通用術(shù)語廷蓉,這些離散單元被稱作為對象全封。
對象存儲經(jīng)常被比作在一家高級餐廳代客停車。當(dāng)一個顧客需要代客停車時桃犬,他就把鑰匙交給別人刹悴,換來一張收據(jù)。這個顧客不用知道他的車被停在哪攒暇,也不用知道在他用餐時服務(wù)員會把他的車移動多少次土匀。在這個比喻中,一個存儲對象的唯一標(biāo)識符就代表顧客的收據(jù)形用。
優(yōu)點(diǎn):綜合了塊讀寫高速就轧、文件共享特性
存儲數(shù)據(jù)類型:指非結(jié)構(gòu)化數(shù)據(jù),如圖片田度、音視頻妒御、文檔等
應(yīng)用場景:即一次寫入多次讀取。
分布式存儲
分布式存儲:是將數(shù)據(jù)分散存儲在多臺獨(dú)立的設(shè)備上镇饺。傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù)乎莉,存儲服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點(diǎn)奸笤,不能滿足大規(guī)模存儲應(yīng)用的需要惋啃。分布式網(wǎng)絡(luò)存儲系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷揭保,利用位置服務(wù)器定位存儲信息肥橙,它不但提高了系統(tǒng)的可靠性、可用性和存取效率秸侣,還易于擴(kuò)展存筏。
1、高可用性味榛,副本數(shù)靈活控制椭坚,支持故障域分割,數(shù)據(jù)強(qiáng)一致性搏色,沒有單點(diǎn)故障
2善茎、高可擴(kuò)展性
3、特性豐富
簡介:不管你是想為云平臺提供Ceph 對象存儲和/或 Ceph 塊設(shè)備频轿,還是想部署一個 Ceph 文件系統(tǒng)或者把 Ceph 作為他用垂涯,所有 Ceph 存儲集群的部署都始于部署一個個 Ceph 節(jié)點(diǎn)烁焙、網(wǎng)絡(luò)和 Ceph 存儲集群。 Ceph 存儲集群至少需要一個 Ceph Monitor 和兩個 OSD 守護(hù)進(jìn)程耕赘。而運(yùn)行 Ceph 文件系統(tǒng)客戶端時骄蝇,則必須要有元數(shù)據(jù)服務(wù)器( Metadata Server )
Ceph簡介
Ceph是一個統(tǒng)一的分布式存儲系統(tǒng),設(shè)計初衷是提供較好的性能操骡、可靠性和可擴(kuò)展性九火。 Ceph 存儲集群至少需要一個 Ceph Monitor 和兩個 OSD 守護(hù)進(jìn)程。而運(yùn)行 Ceph 文件系統(tǒng)客戶端時册招,則必須要有元數(shù)據(jù)服務(wù)器( Metadata Server )
Ceph優(yōu)點(diǎn)
1. CRUSH算法:
ceph摒棄了傳統(tǒng)的集中式存儲元數(shù)據(jù)尋址的方案岔激,轉(zhuǎn)而使用CRUSH算法完成數(shù)據(jù)的尋址操作。CRUSH在一致性哈鲜顷基礎(chǔ)上很好的考慮了容災(zāi)域的隔離虑鼎,能夠?qū)崿F(xiàn)各類負(fù)載的副本放置規(guī)則
2.高可用:
Ceph中的數(shù)據(jù)副本數(shù)量可以由管理員自行定義,并可以通過CRUSH算法指定副本的物理存儲位置以分隔故障域冀惭,支持?jǐn)?shù)據(jù)強(qiáng)一致性震叙; ceph可以忍受多種故障場景并自動嘗試并行修復(fù)。
3 高擴(kuò)展性:
Ceph不同于swift散休,客戶端所有的讀寫操作都要經(jīng)過代理節(jié)點(diǎn)媒楼。一旦集群并發(fā)量增大時,代理節(jié)點(diǎn)很容易成為單點(diǎn)瓶頸戚丸。Ceph本身并沒有主控節(jié)點(diǎn)划址,擴(kuò)展起來比較容易,并且理論上限府,它的性能會隨著磁盤數(shù)量的增加而線性增長夺颤。
4 特性豐富
Ceph支持三種調(diào)用接口:對象存儲,塊存儲胁勺,文件系統(tǒng)掛載世澜。三種方式可以一同使用。在國內(nèi)一些公司的云環(huán)境中署穗,通常會采用ceph作為openstack的唯一后端存儲來提升數(shù)據(jù)轉(zhuǎn)發(fā)效率寥裂。
Ceph的基本組成結(jié)構(gòu)如下圖:
Ceph OSDs: Ceph OSD 守護(hù)進(jìn)程( Ceph OSD )的功能是存儲數(shù)據(jù),處理數(shù)據(jù)的復(fù)制案疲、恢復(fù)封恰、回填、再均衡褐啡,并通過檢查其他OSD 守護(hù)進(jìn)程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息诺舔。當(dāng) Ceph 存儲集群設(shè)定為有2個副本時,至少需要2個 OSD 守護(hù)進(jìn)程,集群才能達(dá)到 active+clean 狀態(tài)( Ceph 默認(rèn)有3個副本低飒,但你可以調(diào)整副本數(shù))许昨。
Monitors: Ceph Monitor維護(hù)著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖逸嘀、 OSD 圖车要、歸置組( PG )圖、和 CRUSH 圖崭倘。 Ceph 保存著發(fā)生在Monitors 、 OSD 和 PG上的每一次狀態(tài)變更的歷史信息(稱為 epoch )类垫。
MDSs: Ceph 元數(shù)據(jù)服務(wù)器( MDS )為 Ceph 文件系統(tǒng)存儲元數(shù)據(jù)(也就是說司光,Ceph 塊設(shè)備和 Ceph 對象存儲不使用MDS )。元數(shù)據(jù)服務(wù)器使得 POSIX 文件系統(tǒng)的用戶們悉患,可以在不對 Ceph 存儲集群造成負(fù)擔(dān)的前提下残家,執(zhí)行諸如 ls、find 等基本命令售躁。
開始部署工作:
官網(wǎng)指導(dǎo)部署
https://docs.ceph.com/en/latest/cephadm/install/
1.配置基礎(chǔ)環(huán)境
準(zhǔn)備三臺服務(wù)器
192.168.106.100 ceph-admin
192.168.106.101 ceph-node1
192.168.106.1002 ceph-node2
2坞淮、三臺服務(wù)器關(guān)閉防火墻、核心防護(hù)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '7s/enforcing/disabled/' /etc/selinux/config
3陪捷、配置hosts
cat /etc/hosts
192.168.106.100 ceph-admin
192.168.106.101 ceph-node1
192.168.106.1002 ceph-node2
4.免密登錄
配置互信(各個節(jié)點(diǎn))
ssh-keygen -t rsa
ssh-copy-id ceph-node1
ssh-copy-id ceph-node2
5.配置初始環(huán)境
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
6回窘、配置NTP時間同步
服務(wù)端:
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
7、安裝docker 環(huán)境
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 #各個節(jié)點(diǎn)安裝
首先啟動主節(jié)點(diǎn)mon(ceph-admin節(jié)點(diǎn))
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文件系統(tǒng)的硬盤市袖,需要在配置文件中加以下配置:
vim /etc/ceph/ceph.conf
osd max object name len = 256
osd max object namespace len = 64
8 拷貝配置文件
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執(zhí)行
9 創(chuàng)建mon
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執(zhí)行
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
10.掛載osd (三臺服務(wù)器都要執(zhí)行格式化和掛載)
mkdir /osd0
mkfs.xfs /dev/sdb
mount /dev/sdb /osd0
11啟動OSD服務(wù)
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
12在node1啟動mgr:
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
13在ceph中創(chuàng)建一個pool存儲池
rdb是存儲池名字啡直,64是pg數(shù)量,pg值計算參考https://ceph.com/pgcalc/
docker exec mon ceph osd pool create rbd 64
14配置crushmap苍碟,根據(jù)osd數(shù)目酒觅,0.15做相應(yīng)調(diào)整,整體之和不大于1
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
15微峰、更新crushmap使得節(jié)點(diǎn)都?xì)w屬于root default
docker exec mon ceph osd crush move node0 root=default
docker exec mon ceph osd crush move node1 root=default
16舷丹、檢查ceph運(yùn)行情況
docker exec mon ceph -s
17測試
測試ceph集群在塊存儲下鏡像的創(chuàng)建和文件的上傳,如果成功才能說明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