這篇文章主要為大家詳細(xì)介紹了CephFs的操作方法,文中關(guān)于CephFs的架構(gòu)以及CephFs的部署配置介紹的非常詳細(xì),零基礎(chǔ)也能參考此文章,感興趣的小伙伴們可以參考一下。
目前累計(jì)服務(wù)客戶千余家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)建站始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計(jì)的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。Ceph File System (CephFS) 是與 POSIX 標(biāo)準(zhǔn)兼容的文件系統(tǒng), 能夠提供對 Ceph 存儲(chǔ)集群上的文件訪問. Jewel 版本 (10.2.0) 是第一個(gè)包含穩(wěn)定 CephFS 的 Ceph 版本. CephFS 需要至少一個(gè)元數(shù)據(jù)服務(wù)器 (Metadata Server - MDS) daemon (ceph-mds) 運(yùn)行, MDS daemon 管理著與存儲(chǔ)在 CephFS 上的文件相關(guān)的元數(shù)據(jù), 并且協(xié)調(diào)著對 Ceph 存儲(chǔ)系統(tǒng)的訪問。
說在前面的話,cephfs其實(shí)是為用戶提供的一個(gè)文件系統(tǒng),把ceph這個(gè)軟件把里面的空間,模擬一個(gè)文件系統(tǒng)的格式來提供服務(wù),它有posix標(biāo)準(zhǔn)的文件系統(tǒng)的接口能夠?yàn)閏eph集群存儲(chǔ)文件,能夠提供訪問,目前在大多數(shù)公司用cephfs也是比較少的,也是由于性能原因,但是也有一些場景也會(huì)用到。
對象存儲(chǔ)的成本比起普通的文件存儲(chǔ)還是較高,需要購買專門的對象存儲(chǔ)軟件以及大容量硬盤。如果對數(shù)據(jù)量要求不是海量,只是為了做文件共享的時(shí)候,直接用文件存儲(chǔ)的形式好了,性價(jià)比高。
底層是核心集群所依賴的, 包括:
OSDs (ceph-osd): CephFS 的數(shù)據(jù)和元數(shù)據(jù)就存儲(chǔ)在 OSDs 上
MDS (ceph-mds): Metadata Servers, 管理著 CephFS 的元數(shù)據(jù)
Mons (ceph-mon): Monitors 管理著集群 Map 的主副本
因?yàn)檫@個(gè)map里面維護(hù)著很多數(shù)據(jù)的信息索引,所有的數(shù)據(jù)都要從mons中map里獲取去osd里找這個(gè)數(shù)據(jù),其實(shí)獲取這個(gè)數(shù)據(jù)的流程大概都是一樣的,只不過它存在的是不同的庫,不同的map
Ceph 存儲(chǔ)集群的協(xié)議層是 Ceph 原生的 librados 庫, 與核心集群交互.
CephFS 庫層包括 CephFS 庫 libcephfs, 工作在 librados 的頂層, 代表著 Ceph文件系統(tǒng).最上層是能夠訪問 Ceph文件系統(tǒng)的兩類客戶端,由于有這個(gè)libcephfs這個(gè)庫,cephfs才能對外提供服務(wù),因?yàn)榈讓邮遣荒芴峁┓?wù)的,都得通過它這個(gè)第三方的lib庫才能去提供訪問,
元數(shù)據(jù):文件的名字和屬性信息叫元數(shù)據(jù),和數(shù)據(jù)是隔離開的
CephFs的數(shù)據(jù)是怎么訪問的?
首先客戶端通過RPC協(xié)議到達(dá)MDS,從MDS獲取到元數(shù)據(jù)的信息,客戶端與RADOS獲取文件的一個(gè)IO操作,那么有了這兩份信息,用戶就能得到了想要的那份文件,MDS和RADOS之間通過journal metadate,這個(gè)Journal是記錄文件寫入日志的,這個(gè)也是存放到OSD當(dāng)中的,MDS和rados之間也是由交互的,因?yàn)樗凶罱K的數(shù)據(jù)都會(huì)存到rados當(dāng)中
!
要使用 CephFS, 至少就需要一個(gè) metadata server 進(jìn)程??梢允謩?dòng)創(chuàng)建一個(gè) MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 來部署 MDS。
登錄到ceph-deploy工作目錄執(zhí)行
hostname指定ceph集群的主機(jī)名
#ceph-deploy mds create $hostname
部署一個(gè) CephFS, 步驟如下:
在一個(gè) Mon 節(jié)點(diǎn)上創(chuàng)建 Ceph文件系統(tǒng).
若使用 CephX 認(rèn)證,需要?jiǎng)?chuàng)建一個(gè)訪問 CephFS 的客戶端
掛載 CephFS 到一個(gè)專用的節(jié)點(diǎn).
以 kernel client 形式掛載 CephFS
以 FUSE client 形式掛載 CephFS
1、創(chuàng)建一個(gè) Ceph 文件系統(tǒng)
1、首先要?jiǎng)?chuàng)建兩個(gè)pool,一個(gè)是cephfs-data,一個(gè)是cephfs-metadate,分別存儲(chǔ)文件數(shù)據(jù)和文件元數(shù)據(jù),這個(gè)pg也可以設(shè)置小一點(diǎn),這個(gè)根據(jù)OSD去配置
#ceph osd pool create cephfs-data 256 256
#ceph osd pool create cephfs-metadata 64 64
查看已經(jīng)創(chuàng)建成功
[root@cephnode01 my-cluster]# ceph osd lspools
1 .rgw.root
2 default.rgw.control
3 default.rgw.meta
4 default.rgw.log
5 rbd
6 cephfs-data
7 cephfs-metadata
關(guān)于ceph的日志,可以在/var/log/ceph下可以查看到相關(guān)信息
[root@cephnode01 my-cluster]# tail -f /var/log/ceph/ceph
ceph.audit.log ceph.log ceph-mgr.cephnode01.log ceph-osd.0.log
ceph-client.rgw.cephnode01.log ceph-mds.cephnode01.log ceph-mon.cephnode01.log ceph-volume.log
注:一般 metadata pool 可以從相對較少的 PGs 啟動(dòng), 之后可以根據(jù)需要增加 PGs. 因?yàn)?metadata pool 存儲(chǔ)著 CephFS文件的元數(shù)據(jù), 為了保證安全, 最好有較多的副本數(shù). 為了能有較低的延遲, 可以考慮將 metadata 存儲(chǔ)在 SSDs 上.
2、創(chuàng)建一個(gè) CephFS, 名字為 cephfs:需要指定兩個(gè)創(chuàng)建的pool的名字
#ceph fs new cephfs cephfs-metadata cephfs-data
new fs with metadata pool 7 and data pool 6
3、驗(yàn)證至少有一個(gè) MDS 已經(jīng)進(jìn)入 Active 狀態(tài),也就是活躍
另外可以看到兩個(gè)備用的是cephnode01,和cephnode03
#ceph fs status cephfs
cephfs - 0 clients
+------+--------+------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+------------+---------------+-------+-------+
| 0 | active | cephnode02 | Reqs: 0 /s | 10 | 13 |
+------+--------+------------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 1536k | 17.0G |
| cephfs-data | data | 0 | 17.0G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| cephnode01 |
| cephnode03 |
+-------------+
MDS version: ceph version 14.2.7 (3d58626ebeec02d8385a4cefb92c6cbc3a45bfe8) nautilus (stable)
4、在 Monitor 上, 創(chuàng)建一個(gè)叫client.cephfs的用戶,用于訪問CephFs
#ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'
這里會(huì)生成一個(gè)key,用戶需要拿這個(gè)key去訪問
[client.cephfs]
key = AQA5IV5eNCwMGRAAy4dIZ8+ISfBcwZegFTYD6Q==
查看權(quán)限列表,有哪些用戶創(chuàng)建了權(quán)限
[root@cephnode01 my-cluster]# ceph auth list
client.cephfs
key: AQA5IV5eNCwMGRAAy4dIZ8+ISfBcwZegFTYD6Q==
caps: [mds] allow rw
caps: [mon] allow r
caps: [osd] allow rw pool=cephfs-data, allow rw pool=cephfs-metadata
client.rgw.cephnode01
key: AQBOAl5eGVL/HBAAYH93c4wPiBlD7YhuPY0u7Q==
caps: [mon] allow rw
caps: [osd] allow r
5、驗(yàn)證key是否生效
#ceph auth get client.cephfs
可以看到這個(gè)用戶是擁有訪問cephfs的讀寫權(quán)限的
exported keyring for client.cephfs
[client.cephfs]
key = AQA5IV5eNCwMGRAAy4dIZ8+ISfBcwZegFTYD6Q==
caps mds = "allow rw"
caps mon = "allow r"
caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"
6、檢查CephFs和mds狀態(tài)
#ceph -s 查看集群已經(jīng)增加mds配置
cluster:
id: 75aade75-8a3a-47d5-ae44-ec3a84394033
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 2h)
mgr: cephnode01(active, since 2h), standbys: cephnode02, cephnode03
mds: cephfs:1 {0=cephnode02=up:active} 2 up:standby
osd: 3 osds: 3 up (since 2h), 3 in (since 2h)
rgw: 1 daemon active (cephnode01)
data:
pools: 7 pools, 96 pgs
objects: 263 objects, 29 MiB
usage: 3.1 GiB used, 54 GiB / 57 GiB avail
pgs: 96 active+clean
#ceph mds stat
這里顯示1個(gè)是active狀態(tài),2個(gè)備用狀態(tài)
cephfs:1 {0=cephnode02=up:active} 2 up:standby
#ceph fs ls
這里有兩個(gè)pool
name: cephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]
#ceph fs status
這里使用其他的機(jī)器進(jìn)行掛載,這里是是以prometheus主機(jī)掛載,不過這個(gè)在哪掛載都可以,kernel主要聯(lián)系系統(tǒng)內(nèi)核,和系統(tǒng)內(nèi)核進(jìn)行做相互,用這種方式進(jìn)行掛載文件系統(tǒng)
1、創(chuàng)建掛載目錄 cephfs#mkdir /cephfs
2、掛載目錄,這里寫集群ceph節(jié)點(diǎn)的地址,后面跟創(chuàng)建用戶訪問集群的key
#mount -t ceph 192.168.1.10:6789,192.168.1.11:6789,192.168.1.12:6789:/ /cephfs/ -o name=cephfs,secret=AQDHjeddHlktJhAAxDClZh9mvBxRea5EI2xD9w==
3、自動(dòng)掛載#echo "mon1:6789,mon2:6789,mon3:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab
4、驗(yàn)證是否掛載成功
#stat -f /cephfs
文件:"/cephfs"
ID:4f32eedbe607030e 文件名長度:255 類型:ceph
塊大?。?194304 基本塊大小:4194304
塊:總計(jì):4357 空閑:4357 可用:4357
Inodes: 總計(jì):0 空閑:-1
1、安裝ceph-common,安裝好可以使用rbd,ceph相關(guān)命令
這里還是使用我們的內(nèi)網(wǎng)yum源來安裝這些依賴包
yum -y install epel-release
yum install -y ceph-common
2、安裝ceph-fuse,ceph的客戶端工具,也就是用ceph的方式把這個(gè)文件系統(tǒng)掛上yum install -y ceph-fuse
3、將集群的ceph.conf拷貝到客戶端
scp root@192.168.1.10:/etc/ceph/ceph.conf /etc/ceph/
chmod 644 /etc/ceph/ceph.conf
4、使用 ceph-fuse 掛載 CephFS
如果是在其他主機(jī)掛載的話,需要這個(gè)使用cephfs的key,這個(gè)是剛才我們創(chuàng)建好的
直接拿這臺(tái)服務(wù)器上用就可以
[root@prometheus ~]# more /etc/ceph/ceph.client.cephfs.keyring
exported keyring for client.cephfs
[client.cephfs]
key = AQA5IV5eNCwMGRAAy4dIZ8+ISfBcwZegFTYD6Q==
caps mds = "allow rw"
caps mon = "allow r"
caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"
#ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.1.10:6789,192.168.1.11:6789,192.168.1.12:6789 /cephfs/
5、驗(yàn)證 CephFS 已經(jīng)成功掛載
#df -h
ceph-fuse 18G 0 18G 0% /cephfs
#stat -f /cephfs
文件:"/cephfs/"
ID:0 文件名長度:255 類型:fuseblk
塊大?。?194304 基本塊大?。?194304
塊:總計(jì):4357 空閑:4357 可用:4357
Inodes: 總計(jì):1 空閑:0
6、自動(dòng)掛載
#echo "none /cephfs fuse.ceph ceph.id=cephfs[,ceph.conf=/etc/ceph/ceph.conf],_netdev,defaults 0 0"| sudo tee -a /etc/fstab
或
#echo "id=cephfs,conf=/etc/ceph/ceph.conf /mnt/ceph3 fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab
7、卸載#fusermount -u /cephfs
1、配置主主模式
當(dāng)cephfs的性能出現(xiàn)在MDS上時(shí),就應(yīng)該配置多個(gè)活動(dòng)的MDS。通常是多個(gè)客戶機(jī)應(yīng)用程序并行的執(zhí)行大量元數(shù)據(jù)操作,并且它們分別有自己單獨(dú)的工作目錄。這種情況下很適合使用多主MDS模式。
配置MDS多主模式
每個(gè)cephfs文件系統(tǒng)都有一個(gè)max_mds設(shè)置,可以理解為它將控制創(chuàng)建多少個(gè)主MDS。注意只有當(dāng)實(shí)際的MDS個(gè)數(shù)大于或等于max_mds設(shè)置的值時(shí),mdx_mds設(shè)置才會(huì)生效。例如,如果只有一個(gè)MDS守護(hù)進(jìn)程在運(yùn)行,并且max_mds被設(shè)置為兩個(gè),則不會(huì)創(chuàng)建第二個(gè)主MDS。
添加設(shè)置max_mds 2,也就是成2個(gè)activity,1個(gè)standby,稱為主主備模式
#ceph fs set cephfs max_mds 2
[root@cephnode01 ceph]# ceph fs status
cephfs - 1 clients
+------+--------+------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+------------+---------------+-------+-------+
| 0 | active | cephnode02 | Reqs: 0 /s | 11 | 14 |
| 1 | active | cephnode01 | Reqs: 0 /s | 10 | 13 |
+------+--------+------------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 2688k | 16.8G |
| cephfs-data | data | 521M | 16.8G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| cephnode03 |
+-------------+
也就是當(dāng)你cephfs用的多的話,數(shù)據(jù)量大的話,就會(huì)出現(xiàn)性能的問題,也就是當(dāng)配置多個(gè)avtive的mds的時(shí)候會(huì)遇到系統(tǒng)瓶頸,這個(gè)時(shí)候就需要配置主主模式,把這個(gè)數(shù)據(jù)做一個(gè)類似的負(fù)載均衡,多主的話也就是這些主會(huì)同時(shí)提供服務(wù)
# 1.3、配置備用MDS
即使有多個(gè)活動(dòng)的MDS,如果其中一個(gè)MDS出現(xiàn)故障,仍然需要備用守護(hù)進(jìn)程來接管。因此,對于高可用性系統(tǒng),實(shí)際配置max_mds時(shí),最好比系統(tǒng)中MDS的總數(shù)少一個(gè)。
但如果你確信你的MDS不會(huì)出現(xiàn)故障,可以通過以下設(shè)置來通知ceph不需要備用MDS,否則會(huì)出現(xiàn)insufficient standby daemons available告警信息:
#ceph fs set
2.1、設(shè)置max_mds
要是還原的話,直接設(shè)置為max_mds 1也就是一個(gè)activity兩個(gè)standby
#ceph fs set max_mds 1
[root@cephnode01 ceph]# ceph fs status
cephfs - 1 clients
======
+------+--------+------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+------------+---------------+-------+-------+
| 0 | active | cephnode02 | Reqs: 0 /s | 11 | 14 |
+------+--------+------------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 2688k | 16.8G |
| cephfs-data | data | 521M | 16.8G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| cephnode03 |
| cephnode01 |
+-------------+
如果想在客戶端去執(zhí)行相關(guān)的ceph命令的話,需要安裝ceph-common以及ceph-fuse客戶端工具將這個(gè)ceph.client.admin.keyring以及ceph.conf文件拷到相應(yīng)的客戶端也可以執(zhí)行ceph命令了
[root@cephnode01 ceph]# scp ceph.client.admin.keyring root@192.168.1.14:/etc/ceph
root@192.168.1.14's password:
ceph.client.admin.keyring
[root@prometheus ceph]# ceph -s
cluster:
id: 75aade75-8a3a-47d5-ae44-ec3a84394033
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 4h)
mgr: cephnode01(active, since 4h), standbys: cephnode02, cephnode03
mds: cephfs:2 {0=cephnode02=up:active,1=cephnode03=up:active} 1 up:standby
osd: 3 osds: 3 up (since 4h), 3 in (since 4h)
rgw: 1 daemon active (cephnode01)
data:
pools: 7 pools, 96 pgs
objects: 345 objects, 203 MiB
usage: 3.6 GiB used, 53 GiB / 57 GiB avail
pgs: 96 active+clean
以上就是CephFs的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容或者想知道具體的部署和配置步驟,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。