ceph
分布式文件系統(tǒng)
- 分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連
- 分布式文件系統(tǒng)的設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式
常用的分布式文件系統(tǒng)
- Lustre
- Hadoop
- FastDFS
- Ceph
- GlusterFS
什么是Ceph
- Ceph是一個(gè)分布式文件系統(tǒng)
- 具有高擴(kuò)展,高可用,高性能的特點(diǎn)
- Ceph可以提供對(duì)象存儲(chǔ),塊存儲(chǔ),文件系統(tǒng)存儲(chǔ)
- 塊存儲(chǔ)(iscsi)客戶端多了一個(gè)磁盤,文件系統(tǒng)(NFS)客戶端直接mount
- Ceph可以提供PB級(jí)別的存儲(chǔ)空間(PB→TB→GB),1024G*1024G=1058576G
- 軟件定義存儲(chǔ)(Software Defined Storage)作為存儲(chǔ)行業(yè)的一大發(fā)展趨勢(shì),已經(jīng)越來越受到市場(chǎng)的認(rèn)可
鏈接在此!
Ceph組件
- OSDs 存儲(chǔ)設(shè)備
- Monitors 集群監(jiān)控軟件
- RadosGateway(RGW) 對(duì)象存儲(chǔ)網(wǎng)關(guān)
- MDSs 存放文件系統(tǒng)的元數(shù)據(jù)(對(duì)象存儲(chǔ)和 塊存儲(chǔ)不需要該組件)
- Client ceph客戶端
實(shí)驗(yàn)準(zhǔn)備
問題
準(zhǔn)備四臺(tái)KVM虛擬機(jī),其三臺(tái)作為存儲(chǔ)集群節(jié)點(diǎn), 一臺(tái)安裝為客戶端,實(shí)現(xiàn)如下功能:
- 創(chuàng)建1臺(tái)客戶端虛擬機(jī)
- 創(chuàng)建3臺(tái)存儲(chǔ)集群虛擬機(jī)
- 配置主機(jī)名、IP地址、YUM源
- 修改所有主機(jī)的主機(jī)名
- 配置無密碼SSH連接
– 配置NTP時(shí)間同步 - 創(chuàng)建虛擬機(jī)磁盤
實(shí)驗(yàn)拓?fù)鋱D
- 1臺(tái)客戶端虛擬機(jī)
- 3臺(tái)存儲(chǔ)集群虛擬機(jī)
所有主機(jī)的主機(jī)名及對(duì)應(yīng)的IP地址如表-1所示。
注意:所有主機(jī)基本系統(tǒng)光盤的YUM源必須提前配置好。
步驟
1)物理機(jī)為所有節(jié)點(diǎn)配置yum源服務(wù)器。所有主機(jī)都要做!!!
提示:前提ceph.iso已經(jīng)掛載好才可以進(jìn)行下一步!!
3)修改/etc/hosts并同步到所有主機(jī)。
警告:/etc/hosts解析的域名必須與本機(jī)主機(jī)名一致!!!!
4)配置NTP時(shí)間同步(client做時(shí)間服務(wù)器,所有node節(jié)點(diǎn)與client時(shí)間同步)
[root@client ~]# vim /etc/chrony.conf26 allow 192.168.4.0/1629 local stratum 10 [root@client ~]# systemctl restart chronyd [root@client ~]# firewall-cmd --set-default-zone=trusted success [root@client ~]# vim /etc/sysconfig/selinux 7 SELINUX=permissive [root@client ~]# setenforce 0所有node節(jié)點(diǎn)與client同步時(shí)間 [root@node1 ~]# vim /etc/chrony.conf3 server 192.168.4.10 iburst [root@node1 ~]# for i in node1 node2 node3 > do > scp /etc/chrony.conf $i:/etc > ssh $i "systemctl restart chronyd" > done chrony.conf 100% 991 1.1MB/s 00:00 chrony.conf 100% 991 1.1MB/s 00:00 chrony.conf 100% 991 962.8KB/s [root@node1 ~]# chronyc sources -V #快速測(cè)試時(shí)間同步,*表示已經(jīng)同步 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* client 10 10 377 609 -12us[ -18us] +/- 150us5)打開VMware,給除了client的每臺(tái)虛擬機(jī)添加兩塊磁盤(20G)
一路下一步,最后呈現(xiàn)的效果如下:
添加完后,重啟虛擬機(jī),使用lsblk查看是否添加成功
部署ceph集群
問題
部署Ceph集群服務(wù)器,實(shí)現(xiàn)以下目標(biāo):
- 安裝部署工具ceph-deploy
- 創(chuàng)建ceph集群
- 準(zhǔn)備日志磁盤分區(qū)
- 創(chuàng)建OSD存儲(chǔ)空間
- 查看ceph狀態(tài),驗(yàn)證
步驟
- 步驟一:安裝部署軟件ceph-deploy
1)在node1安裝部署工具,學(xué)習(xí)工具的語法格式。
[root@node1 ~]# yum -y install ceph-deploy #一定要在有ssh密鑰的主機(jī)上安裝 [root@node1 ~]# mkdir ceph-cluster #但凡執(zhí)行ceph-cluster腳本,必須在該目錄下,否則會(huì)出錯(cuò) [root@node1 ~]# cd ceph-cluster- 步驟二:部署Ceph集群
1)給所有節(jié)點(diǎn)安裝ceph相關(guān)軟件包。
[root@node1 ceph-cluster]# for i in node1 node2 node3> do > ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw" > done部署mon集群,一定要確保 在ceph-cluster目錄下!!!
首先關(guān)閉所有節(jié)點(diǎn)的防火墻和selinux [root@node1 ceph-cluster]# firewall-cmd --set-default-zone=trusted success [root@node1 ceph-cluster]# vim /etc/sysconfig/selinux 7 SELINUX=permissive [root@node1 ceph-cluster]# setenforce 0 ############################################################ [root@node1 ceph-cluster]# pwd /root/ceph-cluster2)創(chuàng)建Ceph集群配置,在ceph-cluster目錄下生成Ceph配置文件。
在ceph.conf配置文件中定義monitor主機(jī)是誰。
3)初始化所有節(jié)點(diǎn)的mon服務(wù),也就是啟動(dòng)mon服務(wù)(主機(jī)名解析必須對(duì))。
[root@node1 ceph-cluster]# ceph-deploy mon create-initial #把當(dāng)前目錄下的ceph配置文件遠(yuǎn)程拷貝到目標(biāo)主機(jī)(node1 node2 node3)放到/etc/ceph目錄,并且啟動(dòng)ceph-mon服務(wù)(服務(wù)名為ceph-mon@主機(jī)名) ############################################################# 查看狀態(tài): [root@node1 ceph-cluster]# systemctl status ceph-mon@node1 #確認(rèn)mon服務(wù)是否已經(jīng)啟動(dòng) [root@node1 ceph-cluster]# ceph -scluster 3b2ca6aa-8018-42c4-8bfe-05902cd313ddhealth HEALTH_ERR64 pgs are stuck inactive for more than 300 seconds64 pgs stuck inactiveno osdsmonmap e2: 3 mons at {node1=192.168.4.11:6789/0,node2=192.168.4.12:6789/0,node3=192.168.4.13:6789/0} #6789為起完服務(wù)后monitior的端口號(hào)election epoch 8, quorum 0,1,2 node1,node2,node3osdmap e1: 0 osds: 0 up, 0 inflags sortbitwisepgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects0 kB used, 0 kB / 0 kB avail64 creating常見錯(cuò)誤及解決方法(非必要操作,有錯(cuò)誤可以參考):
如果提示如下錯(cuò)誤信息:
解決方案如下(在node1操作):
先檢查自己的命令是否是在ceph-cluster目錄下執(zhí)行的!!!!如果確認(rèn)是在該目錄下執(zhí)行的create-initial命令,依然報(bào)錯(cuò),可以使用如下方式修復(fù)。
修改后重新推送配置文件:
[root@node1 ceph-cluster]# ceph-deploy --overwrite-conf config push node1 node2 node3- 步驟三:創(chuàng)建OSD
每臺(tái)虛擬機(jī)都添加了 兩塊磁盤(/dev/sdb、/dev/sdc)
sdb用來做緩存盤,sdc做數(shù)據(jù)盤
讀寫操作 緩存 數(shù)據(jù)
client<-------->ceph集群[sdb]<-------->[sdc] 硬盤分為傳統(tǒng)磁盤和固態(tài)盤
傳統(tǒng)磁盤:性能較低,容量大
固態(tài)盤(SSD):容量很小,性能很好 可以使用固態(tài)盤做緩存盤,磁盤做數(shù)據(jù)盤
假設(shè)每個(gè)磁盤是20G,最終我們的ceph集群提供60G的容量(不考慮冗余備份)
node1 [sdb]+[sdc]=20G #sdb為緩存盤,只能臨時(shí)讀寫數(shù)據(jù),不能算作容量?jī)?nèi)
node2 [sdb]+[sdc]=20G
node3 [sdb]+[sdc]=20G
1)把所有磁盤初始化(格式化,僅在node1操作)
[root@node1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sr0 11:0 1 284M 0 rom /media sr1 11:1 1 8.8G 0 rom /mnt [root@node1 ~]# cd ceph-cluster/ [root@node1 ceph-cluster]# ceph-deploy disk zap node1:sdb node1:sdc #相當(dāng)于遠(yuǎn)程加for循環(huán),寫幾個(gè)參數(shù)就循環(huán)幾次 [root@node1 ceph-cluster]# ceph-deploy disk zap node2:sdb node2:sdc [root@node1 ceph-cluster]# ceph-deploy disk zap node3:sdb node3:sdc ######################################################## 也可以直接一次性初始化 [root@node1 ceph-cluster]# ceph-deploy disk zap node1:sdb node1:sdc node2:sdb node2:sdc node3:sdb node3:sdc2)啟動(dòng)OSD服務(wù),共享這些磁盤
[root@node1 ceph-cluster]# ceph-deploy osd create node1:sdc:/dev/sdb //遠(yuǎn)程node1啟動(dòng)osd服務(wù),把/dev/sdc共享給用戶,/dev/sdb做為緩存盤 并且把sdc掛載到了/var/lib/ceph/xxx目錄 [root@node1 ceph-cluster]# ceph-deploy osd create node2:sdc:/dev/sdb [root@node1 ceph-cluster]# ceph-deploy osd create node3:sdc:/dev/sdb ######################################################### 也可以一次性遠(yuǎn)程多臺(tái)主機(jī) [root@node1 ceph-cluster]# ceph-deploy osd create node1:sdc:/dev/sdb node2:sdc:/dev/sdb node3:sdc:/dev/sdb- 常見錯(cuò)誤及解決方法(非必須操作)。
使用osd create創(chuàng)建OSD存儲(chǔ)空間時(shí),如提示下面的錯(cuò)誤提示:
[ceph_deploy][ERROR ] RuntimeError: bootstrap-osd keyring not found; run 'gatherkeys'可以使用如下命令修復(fù)文件,重新配置ceph的密鑰文件:
[root@node1 ceph-cluster]# ceph-deploy gatherkeys node1 node2 node33)驗(yàn)證測(cè)試,檢查集群狀態(tài):
[root@node1 ceph-cluster]# ceph -scluster 3b2ca6aa-8018-42c4-8bfe-05902cd313ddhealth HEALTH_OKmonmap e2: 3 mons at {node1=192.168.4.11:6789/0,node2=192.168.4.12:6789/0,node3=192.168.4.13:6789/0}election epoch 14, quorum 0,1,2 node1,node2,node3osdmap e14: 3 osds: 3 up, 3 inflags sortbitwisepgmap v28: 64 pgs, 1 pools, 0 bytes data, 0 objects100 MB used, 61306 MB / 61406 MB avail64 active+clean 此時(shí)可以看到,有三個(gè)osd,容量為60G,狀態(tài)為OK驗(yàn)證是否掛載成功
[root@node1 ceph-cluster]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) /dev/mapper/centos-root 17G 1.4G 16G 8% / devtmpfs 224M 0 224M 0% /dev tmpfs 236M 0 236M 0% /dev/shm tmpfs 236M 5.6M 230M 3% /run tmpfs 236M 0 236M 0% /sys/fs/cgroup /dev/sr0 284M 284M 0 100% /media /dev/sr1 8.8G 8.8G 0 100% /mnt /dev/sda1 1014M 142M 873M 14% /boot tmpfs 48M 0 48M 0% /run/user/0 /dev/sdc1 20G 34M 20G 1% /var/lib/ceph/osd/ceph-0 可以看到/dev/sdc已經(jīng)掛載到ceph集群中了 [root@node1 ceph-cluster]# systemctl status ceph-osd@0.service #服務(wù)已經(jīng)成功啟動(dòng),OSD的服務(wù)名稱ceph-osd@數(shù)字(可以在@后tab) ● ceph-osd@0.service - Ceph object storage daemonLoaded: loaded (/usr/lib/systemd/system/ceph-osd@.service; enabled; vendor preset: disabled)Active: active (running) since 四 2020-02-06 18:49:43 CST; 40min agoMain PID: 1973 (ceph-osd) [root@node1 ceph-cluster]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.05846 root default -2 0.01949 host node1 0 0.01949 osd.0 up 1.00000 1.00000 -3 0.01949 host node2 1 0.01949 osd.1 up 1.00000 1.00000 -4 0.01949 host node3 2 0.01949 osd.2 up 1.00000 1.000002)常見錯(cuò)誤(非必須操作)。
如果查看狀態(tài)包含如下信息:
clock skew表示時(shí)間不同步,解決辦法:請(qǐng)先將所有主機(jī)的時(shí)間都使用NTP時(shí)間同步!!!
Ceph要求所有主機(jī)時(shí)差不能超過0.05s,否則就會(huì)提示W(wǎng)ARN。
如果狀態(tài)還是失敗,可以嘗試執(zhí)行如下命令,重啟ceph服務(wù):
Ceph塊存儲(chǔ)
- 單機(jī)塊設(shè)備
1.光盤
2.磁盤 - 分布式塊存儲(chǔ)
1.ceph
2.cinder
什么是塊存儲(chǔ)
- ceph塊設(shè)備也叫做RADOS塊設(shè)備 RADOS block device : RBD
- RBD驅(qū)動(dòng)已經(jīng)很好地集成在了linux內(nèi)核中
- RBD提供了企業(yè)功能,如快照,COW克隆等
- RBD還支持內(nèi)存緩存,從而能夠大大的提高性能
- Linux內(nèi)核可以直接訪問ceph塊存儲(chǔ)
- KVM可用于j借助于librbd訪問
創(chuàng)建Ceph塊存儲(chǔ)
問題
使用Ceph集群的塊存儲(chǔ)功能,實(shí)現(xiàn)以下目標(biāo):
-
創(chuàng)建塊存儲(chǔ)鏡像
-
客戶端映射鏡像
-
創(chuàng)建鏡像快照
-
使用快照還原數(shù)據(jù)
-
使用快照克隆鏡像
-
刪除快照與鏡像
步驟 -
步驟一:創(chuàng)建鏡像
1)查看存儲(chǔ)池。
[root@node1 ~]# ceph osd lspools 0 rbd,2)創(chuàng)建鏡像、查看鏡像
[root@node1 ~]# rbd create jacob --image-feature layering --size 5G#這里的jacob為創(chuàng)建的鏡像名稱,可以為任意字符。
#–image-feature參數(shù)指定我們創(chuàng)建的鏡像有哪些功能,layering是開啟COW(寫實(shí)復(fù)制)功能。
#提示:ceph鏡像支持很多功能,但很多是操作系統(tǒng)不支持的,我們只開啟layering。
- 步驟二:動(dòng)態(tài)調(diào)整
1)擴(kuò)容容量
[root@node1 ~]# rbd resize --size 15G jacob Resizing image: 100% complete...done. [root@node1 ~]# rbd info jacob rbd image 'jacob':size 15360 MB in 3840 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.5e3a2ae8944aformat: 2features: layeringflags:2)縮減容量
[root@node1 ~]# rbd resize --size 10G jacob rbd: shrinking an image is only allowed with the --allow-shrink flag #此時(shí)縮減容量會(huì)報(bào)錯(cuò),如果確認(rèn)要縮減,添加--allow-shrink選項(xiàng) [root@node1 ~]# rbd resize --size 10G jacob --allow-shrink Resizing image: 100% complete...done. [root@node1 ~]# rbd info jacob rbd image 'jacob':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.5e3a2ae8944aformat: 2features: layeringflags:客戶端訪問共享(client做客戶端主機(jī))
首先確保客戶端的yum源已經(jīng)加載 [root@client ~]# yum repolist 已加載插件:fastestmirror Loading mirror speeds from cached hostfile 源標(biāo)識(shí) 源名稱 狀態(tài) MON mon 41 OSD osd 28 Tools tools 33 centos centos 9,911 repolist: 10,013 [root@client ~]# yum -y install ceph-common.x86_64 #客戶端需要安裝ceph-common軟件包 [root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph #拷貝配置文件,配置文件中記錄的有ceph集群服務(wù)器的IP信息 [root@client ~]# scp node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph #拷貝訪問集群的密鑰文件,有了密鑰才有權(quán)限訪問集群 [root@client ~]# lsblk 查看磁盤分布情況 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 284M 0 rom /media sr1 11:1 1 8.8G 0 rom /mnt [root@client ~]# rbd map jacob #客戶端連接jacob鏡像 /dev/rbd0 [root@client ~]# lsblk #再次查看 ,此時(shí)磁盤中多了一個(gè)rbd0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 284M 0 rom /media sr1 11:1 1 8.8G 0 rom /mnt rbd0 252:0 0 10G 0 disk- 步驟三:客戶端進(jìn)行快照還原數(shù)據(jù)的實(shí)驗(yàn):
快照:寫數(shù)據(jù);快照;模擬人為的誤操作;還原快照
副本:寫數(shù)據(jù),可以自動(dòng)備份3份;刪數(shù)據(jù)時(shí),刪除3份,主要用來解決單點(diǎn)故障的問題
1)格式化,掛載,寫數(shù)據(jù)
- 步驟四:回到node集群,創(chuàng)建快照
到client模擬數(shù)據(jù)被誤操作刪除(ceph不支持在線還原快照)
[root@client ~]# ls /data test.txt [root@client ~]# rm -rf /data/test.txt [root@client ~]# umount /data [root@client ~]# ls /data到node集群還原快照
[root@node1 ~]# rbd snap rollback jacob --snap jacob-snap1 Rolling back to snapshot: 100% complete...done.客戶端再次掛載訪問共享
[root@client ~]# mount /dev/rbd0 /data [root@client ~]# ls /data test.txt [root@client ~]# cat /data/test.txt abc hello world- 步驟五:創(chuàng)建塊照克隆
- 使用快照克隆一個(gè)新的鏡像盤image
jacob--------3G數(shù)據(jù)(快照)--------->創(chuàng)建新的共享
創(chuàng)建一個(gè)新的共享
1)保護(hù)快照(防止快照被誤刪除)
2)克隆快照
[root@node1 ~]# rbd clone jacob --snap jacob-snap1 jacob-clone --image-feature layering #使用現(xiàn)有jacob鏡像盤的jacob-snap1這個(gè)快照,克隆一個(gè)新的共享鏡像盤,名稱為jacob-clone [root@node1 ~]# rbd ls jacob jacob-clone3)查看克隆鏡像與父鏡像快照之間的關(guān)系
[root@node1 ~]# rbd info jacob rbd image 'jacob':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.5e3a2ae8944aformat: 2features: layeringflags: [root@node1 ~]# rbd info jacob-clone rbd image 'jacob-clone':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.5e3e2ae8944aformat: 2features: layeringflags: parent: rbd/jacob@jacob-snap1 #克隆鏡像此時(shí)顯示有父鏡像overlap: 10240 MB #克隆鏡像很多數(shù)據(jù)都來自于快照鏈 #如果希望克隆鏡像可以獨(dú)立工作,就需要將父快照中的數(shù)據(jù),全部拷貝一份,但比較耗時(shí)!!! [root@node1 ~]# rbd flatten jacob-clone Image flatten: 100% complete...done. [root@node1 ~]# rbd info jacob-clone rbd image 'jacob-clone':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.5e3e2ae8944aformat: 2features: layeringflags: #此時(shí)父快照的信息不見了! [root@node1 ~]# rbd snap unprotect jacob --snap jacob-snap1 #取消快照保護(hù) [root@node1 ~]# rbd snap rm jacob --snap jacob-snap1 #刪除快照,此時(shí)快照就可以被刪除客戶端取消對(duì)ceph的掛載實(shí)驗(yàn)
[root@client ~]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) /dev/mapper/centos-root 17G 1.2G 16G 8% / devtmpfs 224M 0 224M 0% /dev tmpfs 236M 0 236M 0% /dev/shm tmpfs 236M 5.6M 230M 3% /run tmpfs 236M 0 236M 0% /sys/fs/cgroup /dev/sr0 284M 284M 0 100% /media /dev/sda1 1014M 142M 873M 14% /boot /dev/sr1 8.8G 8.8G 0 100% /mnt tmpfs 48M 0 48M 0% /run/user/0 /dev/rbd0 10G 33M 10G 1% /data [root@client ~]# umount /data #卸載 [root@client ~]# lsblk #查看,此時(shí),rbd0依然存在 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 284M 0 rom /media sr1 11:1 1 8.8G 0 rom /mnt rbd0 252:0 0 10G 0 disk [root@client ~]# rbd showmapped id pool image snap device 0 rbd jacob - /dev/rbd0 [root@client ~]# rbd unmap /dev/rbd0 #也可以寫rbd unmap jacob [root@client ~]# lsblk #此時(shí),rbd0不存在了 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 284M 0 rom /media sr1 11:1 1 8.8G 0 rom /mnt [root@client ~]# rbd map jacob-clone /dev/rbd0 [root@client ~]# mount /dev/rbd0 /data [root@client ~]# ls /data test.txt [root@client ~]# umount /data [root@client ~]# rbd unmap /dev/rbd0Ceph文件系統(tǒng)存儲(chǔ)
什么是CephFS
- 分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連
- CephFS使用Ceph集群提供與POSIX兼容的文件系統(tǒng)
- 允許 Linux直接將Ceph存儲(chǔ)mount到本地
什么是元數(shù)據(jù)
- 元數(shù)據(jù)(Metadata)
- 任何文件系統(tǒng)中的數(shù)據(jù)分為數(shù)據(jù)和元數(shù)據(jù)
- 數(shù)據(jù)是指普通文件中的實(shí)際數(shù)據(jù)
- 而元數(shù)據(jù)指用來描述一個(gè)文件特征的系統(tǒng)數(shù)據(jù)
- 比如:訪問權(quán)限、文件擁有者以及文件數(shù)據(jù)塊的分布信息(inode…)等
- 所以CephFS必須要有MDSs節(jié)點(diǎn)
ceph集群支持塊共享,文件系統(tǒng)共享,對(duì)象存儲(chǔ)共享
塊共享(同一時(shí)間僅可以同一個(gè)客戶端訪問)
iscsi服務(wù) server[掛載]格式化 mount 寫數(shù)據(jù)10個(gè)文件
desktop 掛載 mount 寫10個(gè)文件
server 再次訪問 看到20個(gè)文件
文件系統(tǒng)共享
NFS(/common)
desktop (mount) 寫數(shù)據(jù),讀數(shù)據(jù)
node1 (mount) 寫數(shù)據(jù),讀數(shù)據(jù)
Ceph 集群支持塊共享、文件系統(tǒng)共享、對(duì)象存儲(chǔ)共享 塊共享(同一時(shí)間僅可以一個(gè)客戶端訪問) 塊(沒有格式化) 文件系統(tǒng)(格式化,NFS,fat32,ext4,xfs文件系統(tǒng)) 硬盤沒有格式化,就相當(dāng)于一幢空的大廈
假設(shè)一塊硬盤此時(shí)有100G,將硬盤分為inode區(qū)域和block兩個(gè)區(qū)域 inode block
2G 98G 再將inode區(qū)域的空間劃分為每塊256字節(jié),block區(qū)域空間劃分為每塊4k的字節(jié)
寫數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)被寫入到block中(4M的文件,會(huì)占用多個(gè)block)
block中存數(shù)據(jù),inode中存儲(chǔ)元數(shù)據(jù)(metadata)【元數(shù)據(jù)是數(shù)據(jù)的數(shù)據(jù),描述數(shù)據(jù)的數(shù)據(jù),比如一個(gè)文件,有文件名,時(shí)間,權(quán)限,大小…類似于描述信息,同時(shí)還記錄文件數(shù)據(jù)的地址】
Ceph文件系統(tǒng)實(shí)驗(yàn)
問題
實(shí)現(xiàn)Ceph文件系統(tǒng)的功能。具體實(shí)現(xiàn)有以下功能:
- 部署MDSs節(jié)點(diǎn)
- 創(chuàng)建Ceph文件系統(tǒng)
- 客戶端掛載文件系統(tǒng)
方案
使用現(xiàn)有的虛擬機(jī)進(jìn)行操作
步驟 - 1).ceph提供文件系統(tǒng)共享的實(shí)驗(yàn):(使用node3做ceph-mds服務(wù),操作指令在node1執(zhí)行)
- 2).創(chuàng)建存儲(chǔ)池
- 3)創(chuàng)建文件系統(tǒng)
4)客戶端mount訪問
[root@client ~]# mkdir /cephfs [root@node1 ceph-cluster]# cat /etc/ceph/ceph.client.admin.keyring [client.admin]key = AQCb/TpeWGpVJBAALIlg4tgvgDTbr+Poza3xCw== #查看 /etc/ceph/ceph.client.admin.keyring找用戶名和密碼 [root@client ~]# mount -t ceph 192.168.4.11:6789:/ /cephfs -o name=admin,secret=AQCb/TpeWGpVJBAALIlg4tgvgDTbr+Poza3xCw== #客戶端mount訪問共享,-t訪問的服務(wù)類型是ceph(nfs,cifs),服務(wù)IP是192.168.4.11,端口號(hào)是6789,ceph僅支持一個(gè)文件系統(tǒng)共享,只能寫訪問/,把共享掛載到/cephfs目錄,name指定用戶名,secret指定密碼(因?yàn)閏eph集群需要驗(yàn)證用戶和密碼才可以訪問) [root@node1 ceph-cluster]# ceph -scluster 3b2ca6aa-8018-42c4-8bfe-05902cd313ddhealth HEALTH_WARNtoo many PGs per OSD (320 > max 300)monmap e2: 3 mons at {node1=192.168.4.11:6789/0,node2=192.168.4.12:6789/0,node3=192.168.4.13:6789/0}election epoch 18, quorum 0,1,2 node1,node2,node3fsmap e5: 1/1/1 up {0=node3=up:active}osdmap e31: 3 osds: 3 up, 3 inflags sortbitwisepgmap v830: 320 pgs, 3 pools, 84386 kB data, 2606 objects362 MB used, 61044 MB / 61406 MB avail320 active+cleanCeph對(duì)象存儲(chǔ)
- 對(duì)象存儲(chǔ):
- 基于kv的存儲(chǔ),通過API接口訪問,對(duì)象存儲(chǔ)中所有的數(shù)據(jù)都被認(rèn)為是一個(gè)對(duì)象。基于對(duì)象的存儲(chǔ)就是對(duì)象存儲(chǔ)
- 也就是鍵值存儲(chǔ),通其接口指令,也就是簡(jiǎn)單的GET、PUT、DEL和其他擴(kuò)展,向存儲(chǔ)服務(wù)上傳或下載數(shù)據(jù)
- 對(duì)象存儲(chǔ)中所有數(shù)據(jù)都被認(rèn)為是一個(gè)對(duì)象,所以,任何數(shù)據(jù)都可以存入對(duì)象服務(wù)器,如圖片,視頻,音頻等
- RGW全稱是Rados Gateway
- RGW是ceph對(duì)象存儲(chǔ)網(wǎng)關(guān),用于向客戶端應(yīng)用呈現(xiàn)存儲(chǔ)頁(yè)面,提供RESTful API訪問接口
運(yùn)維:部署集群,維護(hù)集群,故障排錯(cuò)
開發(fā):寫程序,基于程序中的指令連接ceph服務(wù)器,上傳下載數(shù)據(jù)
百度云盤就屬于對(duì)象存儲(chǔ)(不能直接mount,不是在客戶端多一個(gè)磁盤)
百度云盤,客戶端需要下載他的客戶端軟件(網(wǎng)頁(yè)也是軟件)
Ceph對(duì)象存儲(chǔ)實(shí)驗(yàn)
步驟
- 1)登錄node1使用ceph-deploy運(yùn)城啟動(dòng)RGW服務(wù)(radosgw)
- 2)可以修改配置文件,修改服務(wù)的端口(非必須操作)【在node3操作】
總結(jié)
- 上一篇: keepalived热备 keepa
- 下一篇: 服务器硬件