-
高性能 a. 摒棄了傳統的集中式存儲元數據尋址的方案,采用CRUSH算法,數據分布均衡,並行度高 b.考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等 c. 能夠支持上千個存儲節點的規模,支持TB到PB級的數據
-
高可擴展性 a. 去中心化 b. 擴展靈活 c. 隨着節點增加而線性增長
-
特性豐富 a. 支持三種存儲接口:塊存儲、文件存儲、對象存儲
全稱Reliable Autonomic Distributed Object Store,即可靠的、自動化的、分布式對象存儲系統。RADOS是Ceph集群的精華,用戶實現數據分配、Failover等集群操作。
Librados
Rados提供庫,因為RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。
Crush
Crush算法是Ceph的兩大創新之一,通過Crush算法的尋址操作,Ceph得以摒棄了傳統的集中式存儲元數據尋址方案。而Crush算法在一致性哈希基礎上很好的考慮了容災域的隔離,使得Ceph能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。同時,Crush算法有相當強大的擴展性,理論上可以支持數千個存儲節點,這為Ceph在大規模雲環境中的應用提供了先天的便利。
Pool
Pool是存儲對象的邏輯分區,它規定了數據冗余的類型和對應的副本分布策略,支持兩種類型:副本(replicated)和 糾刪碼( Erasure Code);
PG
PG( placement group)是一個放置策略組,它是對象的集合,該集合里的所有對象都具有相同的放置策略,簡單點說就是相同PG內的對象都會放到相同的硬盤上,PG是 ceph的邏輯概念,服務端數據均衡和恢復的最小粒度就是PG,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配數據和定位數據;
Object
OSD是負責物理存儲的進程,一般配置成和磁盤一一對應,一塊磁盤啟動一個OSD進程。主要功能是存儲數據、復制數據、平衡數據、恢復數據,以及與其它OSD間進行心跳檢查,負責響應客戶端請求返回具體數據的進程等;
Pool、PG和OSD的關系:
-
一個Pool里有很多PG;
-
一個PG里包含一堆對象,一個對象只能屬於一個PG;
-
PG有主從之分,一個PG分布在不同的OSD上(針對三副本類型);
一個Ceph集群需要多個Monitor組成的小集群,它們通過Paxos同步數據,用來保存OSD的元數據。負責堅實整個Ceph集群運行的Map視圖(如OSD Map、Monitor Map、PG Map和CRUSH Map),維護集群的健康狀態,維護展示集群狀態的各種圖表,管理集群客戶端認證與授權;
MDS
MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務。負責保存文件系統的元數據,管理目錄結構。對象存儲和塊設備存儲不需要元數據服務;
Mgr
ceph 官方開發了 ceph-mgr,主要目標實現 ceph 集群的管理,為外界提供統一的入口。例如cephmetrics、zabbix、calamari、promethus
RGW
RGW全稱RADOS gateway,是Ceph對外提供的對象存儲服務,接口與S3和Swift兼容。
Admin
-
-
通過Raid與LVM等手段,對數據提供了保護;
-
多塊廉價的硬盤組合起來,提高容量;
-
多塊磁盤組合出來的邏輯盤,提升讀寫效率;
-
-
缺點:
-
采用SAN架構組網時,光纖交換機,造價成本高;
-
主機之間無法共享數據;
-
-
使用場景
-
docker容器、虛擬機磁盤存儲分配;
-
日志存儲;
-
文件存儲;
-
2、文件存儲(CephFS)
-
優點:
-
造價低,隨便一台機器就可以了;
-
方便文件共享;
-
-
缺點:
-
讀寫速率低;
-
傳輸速率慢;
-
-
使用場景
-
日志存儲;
-
FTP、NFS;
-
其它有目錄結構的文件存儲
-
3、對象存儲(Object)(適合更新變動較少的數據)
-
優點:
-
具備塊存儲的讀寫高速;
-
具備文件存儲的共享等特性;
-
-
使用場景
-
圖片存儲;
-
x.0.z - 開發版(給早期測試者和勇士們)
x.1.z - 候選版(用於測試集群、高手們)
x.2.z - 穩定、修正版(給用戶們)
版本號 | 發布時間 | |
---|---|---|
Argonaut | 0.48版本(LTS) | 2012年6月3日 |
Bobtail | 0.56版本(LTS) | 2013年5月7日 |
Cuttlefish | 0.61版本 | 2013年1月1日 |
Dumpling | 0.67版本(LTS) | 2013年8月14日 |
Emperor | 0.72版本 | 2013年11月9 |
Firefly | 0.80版本(LTS) | 2014年5月 |
Giant | Giant | October 2014 - April 2015 |
Hammer | Hammer | April 2015 - November 2016 |
Infernalis | Infernalis | November 2015 - June 2016 |
Jewel | 10.2.9 | 2016年4月 |
Kraken | 11.2.1 | 2017年10月 |
Luminous | 12.2.12 | 2017年10月 |
mimic | 13.2.7 | 2018年5月 |
nautilus | 14.2.5 |
-
-
ceph-osd的新后端存儲BlueStore已經穩定,是新創建的OSD的默認設置。 BlueStore通過直接管理物理HDD或SSD而不使用諸如XFS的中間文件系統,來管理每個OSD存儲的數據,這提供了更大的性能和功能。
-
BlueStore支持Ceph存儲的所有的完整的數據和元數據校驗。
-
BlueStore內嵌支持使用zlib,snappy或LZ4進行壓縮。(Ceph還支持zstd進行RGW壓縮,但由於性能原因,不為BlueStore推薦使用zstd)
-
-
集群的總體可擴展性有所提高。我們已經成功測試了多達10,000個OSD的集群。
-
ceph-mgr
-
ceph-mgr是一個新的后台進程,這是任何Ceph部署的必須部分。雖然當ceph-mgr停止時,IO可以繼續,但是度量不會刷新,並且某些與度量相關的請求(例如,ceph df)可能會被阻止。我們建議您多部署ceph-mgr的幾個實例來實現可靠性。
-
ceph-mgr守護進程daemon包括基於REST的API管理。注:API仍然是實驗性質的,目前有一些限制,但未來會成為API管理的基礎。
-
ceph-mgr還包括一個Prometheus插件。
-
-
最少三台Centos7系統虛擬機用於部署Ceph集群。硬件配置:2C4G,另外每台機器最少掛載三塊硬盤(每塊盤5G)
(1)關閉防火牆: systemctl stop firewalld systemctl disable firewalld (2)關閉selinux: sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 (3)關閉NetworkManager systemctl disable NetworkManager && systemctl stop NetworkManager (4)添加主機名與IP對應關系: vim /etc/hosts 192.168.0.201 cephnode01 192.168.0.202 cephnode02 192.168.0.203 cephnode03 (5)設置主機名: hostnamectl set-hostname cephnode01 hostnamectl set-hostname cephnode02 hostnamectl set-hostname cephnode03 (6)同步網絡時間和修改時區 systemctl restart chronyd.service && systemctl enable chronyd.service cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (7)設置文件描述符 echo "ulimit -SHn 102400" >> /etc/rc.local cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF (8)內核參數優化 cat >> /etc/sysctl.conf << EOF kernel.pid_max = 4194303 vm.swappiness = 0 EOF sysctl -p (9)在cephnode01上配置免密登錄到cephnode02、cephnode03 ssh-copy-id root@cephnode02 ssh-copy-id root@cephnode03 (10)read_ahead,通過數據預讀並且記載到隨機訪問內存方式提高磁盤讀操作 echo "8192" > /sys/block/sda/queue/read_ahead_kb (11) I/O Scheduler,SSD要用noop,SATA/SAS使用deadline echo "deadline" >/sys/block/sd[x]/queue/scheduler echo "noop" >/sys/block/sd[x]/queue/scheduler
# vim /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch gpgcheck=0 priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS gpgcheck=0 priority=1
安裝ceph-deploy,在node01執行(確認ceph-deploy版本是否為2.0.1,)
# yum install -y ceph-deploy # ceph-deploy --version Traceback (most recent call last): File "/usr/bin/ceph-deploy", line 18, in <module> from ceph_deploy.cli import main File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module> import pkg_resources ImportError: No module named pkg_resources 解決報錯 # yum install ceph-deploy python-pip python-setuptools -y # ceph-deploy --version 2.0.1
創建一個my-cluster目錄,所有命令在此目錄下進行,在node01執行(文件位置和名字可以隨意)
# mkdir /my-cluster # cd /my-cluster
創建一個Ceph集群,在node01執行
# ceph-deploy new cephnode01 cephnode02 cephnode03
安裝Ceph軟件(每個節點執行)
# yum -y install epel-release # yum install -y ceph
生成monitor檢測集群所使用的的秘鑰
# ceph-deploy mon create-initial
安裝Ceph CLI,方便執行一些管理命令
# ceph-deploy admin cephnode01 cephnode02 cephnode03
配置mgr,用於管理集群
# ceph-deploy mgr create cephnode01 cephnode02 cephnode03
部署rgw
# yum install -y ceph-radosgw # ceph-deploy rgw create cephnode01
部署MDS(CephFS)
# ceph-deploy mds create cephnode01 cephnode02 cephnode03
添加osd
for dev in /dev/sdb /dev/sdc /dev/sdd do ceph-deploy osd create cephnode01 --data $dev ceph-deploy osd create cephnode02 --data $dev ceph-deploy osd create cephnode03 --data $dev done
[root@cephnode01 my-cluster]# ceph -s
cluster:
id: f23ede63-7119-47b2-8f3b-d52797d16a03
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03
mgr: cephnode01(active), standbys: cephnode02, cephnode03
osd: 9 osds: 9 up, 9 in
data:
pools: 5 pools, 96 pgs
objects: 187 objects, 1.1 KiB
usage: 9.1 GiB used, 171 GiB / 180 GiB avail
pgs: 96 active+clean
[root@cephnode01 my-cluster]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17537 root default
-3 0.05846 host cephnode01
0 hdd 0.01949 osd.0 up 1.00000 1.00000
3 hdd 0.01949 osd.3 up 1.00000 1.00000
6 hdd 0.01949 osd.6 up 1.00000 1.00000
-5 0.05846 host cephnode02
1 hdd 0.01949 osd.1 up 1.00000 1.00000
4 hdd 0.01949 osd.4 up 1.00000 1.00000
7 hdd 0.01949 osd.7 up 1.00000 1.00000
-7 0.05846 host cephnode03
2 hdd 0.01949 osd.2 up 1.00000 1.00000
5 hdd 0.01949 osd.5 up 1.00000 1.00000
8 hdd 0.01949 osd.8 up 1.00000 1.00000
global:全局配置。
osd:osd專用配置,可以使用osd.N,來表示某一個OSD專用配置,N為osd的編號,如0、2、1等。
mon:mon專用配置,也可以使用mon.A來為某一個monitor節點做專用配置,其中A為該節點的名稱,ceph-monitor-2、ceph-monitor-1等。使用命令 ceph mon dump可以獲取節點的名稱。
client:客戶端專用配置。
2、配置文件可以從多個地方進行順序加載,如果沖突將使用最新加載的配置,其加載順序為。
$CEPH_CONF環境變量
-c 指定的位置
/etc/ceph/ceph.conf
~/.ceph/ceph.conf
./ceph.conf
3、配置文件還可以使用一些元變量應用到配置文件,如。
$cluster:當前集群名。
$type:當前服務類型。
$id:進程的標識符。
$host:守護進程所在的主機名。
$name:值為$type.$id。
[global]#全局設置 fsid = xxxxxxxxxxxxxxx #集群標識ID mon host = 10.0.1.1,10.0.1.2,10.0.1.3 #monitor IP 地址 auth cluster required = cephx #集群認證 auth service required = cephx #服務認證 auth client required = cephx #客戶端認證 osd pool default size = 3 #最小副本數 默認是3 osd pool default min size = 1 #PG 處於 degraded 狀態不影響其 IO 能力,min_size是一個PG能接受IO的最小副本數 public network = 10.0.1.0/24 #公共網絡(monitorIP段) cluster network = 10.0.2.0/24 #集群網絡 max open files = 131072 #默認0#如果設置了該選項,Ceph會設置系統的max open fds mon initial members = node1, node2, node3 #初始monitor (由創建monitor命令而定) ############################################################## [mon] mon data = /var/lib/ceph/mon/ceph-$id mon clock drift allowed = 1 #默認值0.05#monitor間的clock drift mon osd min down reporters = 13 #默認值1#向monitor報告down的最小OSD數 mon osd down out interval = 600 #默認值300 #標記一個OSD狀態為down和out之前ceph等待的秒數 ############################################################## [osd] osd data = /var/lib/ceph/osd/ceph-$id osd mkfs type = xfs #格式化系統類型 osd max write size = 512 #默認值90 #OSD一次可寫入的最大值(MB) osd client message size cap = 2147483648 #默認值100 #客戶端允許在內存中的最大數據(bytes) osd deep scrub stride = 131072 #默認值524288 #在Deep Scrub時候允許讀取的字節數(bytes) osd op threads = 16 #默認值2 #並發文件系統操作數 osd disk threads = 4 #默認值1 #OSD密集型操作例如恢復和Scrubbing時的線程 osd map cache size = 1024 #默認值500 #保留OSD Map的緩存(MB) osd map cache bl size = 128 #默認值50 #OSD進程在內存中的OSD Map緩存(MB) osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默認值rw,noatime,inode64 #Ceph OSD xfs Mount選項 osd recovery op priority = 2 #默認值10 #恢復操作優先級,取值1-63,值越高占用資源越高 osd recovery max active = 10 #默認值15 #同一時間內活躍的恢復請求數 osd max backfills = 4 #默認值10 #一個OSD允許的最大backfills數 osd min pg log entries = 30000 #默認值3000 #修建PGLog是保留的最大PGLog數 osd max pg log entries = 100000 #默認值10000 #修建PGLog是保留的最大PGLog數 osd mon heartbeat interval = 40 #默認值30 #OSD ping一個monitor的時間間隔(默認30s) ms dispatch throttle bytes = 1048576000 #默認值 104857600 #等待派遣的最大消息數 objecter inflight ops = 819200 #默認值1024 #客戶端流控,允許的最大未發送io請求數,超過閥值會堵塞應用io,為0表示不受限 osd op log threshold = 50 #默認值5 #一次顯示多少操作的log osd crush chooseleaf type = 0 #默認值為1 #CRUSH規則用到chooseleaf時的bucket的類型 ############################################################## [client] rbd cache = true #默認值 true #RBD緩存 rbd cache size = 335544320 #默認值33554432 #RBD緩存大小(bytes) rbd cache max dirty = 134217728 #默認值25165824 #緩存為write-back時允許的最大dirty字節數(bytes),如果為0,使用write-through rbd cache max dirty age = 30 #默認值1 #在被刷新到存儲盤前dirty數據存在緩存的時間(seconds) rbd cache writethrough until flush = false #默認值true #該選項是為了兼容linux-2.6.32之前的virtio驅動,避免因為不發送flush請求,數據不回寫 #設置該參數后,librbd會以writethrough的方式執行io,直到收到第一個flush請求,才切換為writeback方式。 rbd cache max dirty object = 2 #默認值0 #最大的Object對象數,默認為0,表示通過rbd cache size計算得到,librbd默認以4MB為單位對磁盤Image進行邏輯切分 #每個chunk對象抽象為一個Object;librbd中以Object為單位來管理緩存,增大該值可以提升性能 rbd cache target dirty = 235544320 #默認值16777216 #開始執行回寫過程的臟數據大小,不能超過 rbd_cache_max_dirty
RBD
-
RBD 就是 Ceph 里的塊設備,一個 4T 的塊設備的功能和一個 4T 的 SATA 類似,掛載的 RBD 就可以當磁盤用;
-
resizable:這個塊可大可小;
-
data striped:這個塊在Ceph里面是被切割成若干小塊來保存,不然 1PB 的塊怎么存的下;
-
thin-provisioned:精簡置備,1TB 的集群是能創建無數 1PB 的塊的。其實就是塊的大小和在 Ceph 中實際占用大小是沒有關系的,剛創建出來的塊是不占空間,今后用多大空間,才會在 Ceph 中占用多大空間。舉例:你有一個 32G 的 U盤,存了一個2G的電影,那么 RBD 大小就類似於 32G,而 2G 就相當於在 Ceph 中占用的空間 ;
塊存儲本質就是將裸磁盤或類似裸磁盤(lvm)設備映射給主機使用,主機可以對其進行格式化並存儲和讀取數據,塊設備讀取速度快但是不支持共享。
ceph可以通過內核模塊和librbd庫提供塊設備支持。客戶端可以通過內核模塊掛在rbd使用,客戶端使用rbd塊設備就像使用普通硬盤一樣,可以對其就行格式化然后使用;客戶應用也可以通過librbd使用ceph塊,典型的是雲平台的塊存儲服務,雲平台可以使用rbd作為雲的存儲后端提供鏡像存儲、volume塊或者客戶的系統引導盤等。
使用場景:
-
雲平台(OpenStack做為雲的存儲后端提供鏡像存儲)
-
K8s容器
-
map成塊設備直接使用
-
RBD常用命令
命令 | 功能 |
---|---|
rbd create | 創建塊設備映像 |
rbd ls | 列出 rbd 存儲池中的塊設備 |
rbd info | 查看塊設備信息 |
rbd diff | 可以統計 rbd 使用量 |
rbd map | 映射塊設備 |
rbd showmapped | 查看已映射塊設備 |
rbd remove | 刪除塊設備 |
rbd resize | 更改塊設備的大小 |
1、創建rbd使用的pool # ceph osd pool create rbd 32 32 # ceph osd pool application enable rbd rbd 2、創建一個塊設備 # rbd create --size 10240 image01 3、查看塊設備 # rbd ls # rbd info image01 4、將塊設備映射到系統內核 # rbd map image01 5、禁用當前系統內核不支持的feature # rbd feature disable foo_image exclusive-lock, object-map, fast-diff, deep-flatten 6、再次映射 # rbd map image01 7、格式化塊設備鏡像 # mkfs.xfs /dev/rbd0 8、mount到本地 # mount /dev/rbd0 /mnt # umount /mnt 9、取消塊設備和內核映射 # rbd unmap image01 10、刪除RBD塊設備 # rbd rm image01
創建快照 rbd create --size 10240 image02 rbd snap create image02@image02_snap01 列出創建的快照 # rbd snap list image02 # rbd ls -l 查看快照信息 # rbd info image02@image02_snap01 克隆快照(快照必須處於被保護狀態才能被克隆) # rbd snap protect image02@image02_snap01 # rbd clone rbd/image02@image02_snap01 kube/image02_clone01 查看快照的children # rbd children image02 去掉快照的parent # rbd flatten kube/image02_clone01 恢復快照 # rbd snap rollback image02@image02_snap01 刪除快照 # rbd snap unprotect image02@image02_snap01 # rbd snap remove image02@image02_snap01
導出rbd鏡像 # rbd export image02 /tmp/image02 導入 # rbd import /tmp/image02 rbd/image02 --image-format 2
Ceph File System (CephFS) 是與 POSIX 標准兼容的文件系統, 能夠提供對 Ceph 存儲集群上的文件訪問. Jewel 版本 (10.2.0) 是第一個包含穩定 CephFS 的 Ceph 版本. CephFS 需要至少一個元數據服務器 (Metadata Server - MDS) daemon (ceph-mds) 運行, MDS daemon 管理着與存儲在 CephFS 上的文件相關的元數據, 並且協調着對 Ceph 存儲系統的訪問。
二、CephFS 架構
底層是核心集群所依賴的, 包括:
-
OSDs (ceph-osd): CephFS 的數據和元數據就存儲在 OSDs 上
-
MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元數據
-
Mons (ceph-mon): Monitors 管理着集群 Map 的主副本 Ceph 存儲集群的協議層是 Ceph 原生的 librados 庫, 與核心集群交互.
CephFS 庫層包括 CephFS 庫 libcephfs, 工作在 librados 的頂層, 代表着 Ceph 文件系統.最上層是能夠訪問 Ceph 文件系統的兩類客戶端.
三、配置 CephFS MDS
要使用 CephFS, 至少就需要一個 metadata server 進程。可以手動創建一個 MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 來部署 MDS。
登錄到ceph-deploy工作目錄執行
# ceph-deploy mds create $hostname
四、部署Ceph文件系統
部署一個 CephFS, 步驟如下:
-
在一個 Mon 節點上創建 Ceph 文件系統.
-
若使用 CephX 認證,需要創建一個訪問 CephFS 的客戶端
-
掛載 CephFS 到一個專用的節點.
-
以 kernel client 形式掛載 CephFS
-
以 FUSE client 形式掛載 CephFS
-
1、創建一個 Ceph 文件系統
1、CephFS 需要兩個 Pools - cephfs-data 和 cephfs-metadata, 分別存儲文件數據和文件元數據
# ceph osd pool create cephfs-data 16 16
# ceph osd pool create cephfs-metadata 16 16
注:一般 metadata pool 可以從相對較少的 PGs 啟動, 之后可以根據需要增加 PGs. 因為 metadata pool 存儲着 CephFS 文件的元數據, 為了保證安全, 最好有較多的副本數. 為了能有較低的延遲, 可以考慮將 metadata 存儲在 SSDs 上.
2、創建一個 CephFS, 名字為 cephfs:
# ceph fs new cephfs cephfs-metadata cephfs-data
3、驗證至少有一個 MDS 已經進入 Active 狀態
ceph fs status cephfs
4、在 Monitor 上, 創建一個用戶,用於訪問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'
5、驗證key是否生效
ceph auth get client.cephfs
6、檢查CephFs和mds狀態
ceph mds stat
ceph fs ls
ceph fs status
以 kernel client 形式掛載 CephFS
# mkdir /cephfs
掛載目錄
# mount -t ceph 192.168.0.132:6789,192.168.0.133:6789,192.168.0.134:6789:/ /cephfs/ -o name=cephfs,secret=AQDHjeddHlktJhAAxDClZh9mvBxRea5EI2xD9w==
自動掛載
# 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
驗證
# stat -f /cephfs
安裝ceph-common yum install -y ceph-common 安裝ceph-fuse yum install -y ceph-fuse 將集群的ceph.conf拷貝到客戶端 scp root@192.168.0.132:/etc/ceph/ceph.conf /etc/ceph/ chmod 644 /etc/ceph/ceph.conf 使用 ceph-fuse 掛載 CephFS ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.0.132:6789,192.168.0.133:6789,192.168.0.134:6789 /cephfs/ 驗證 CephFS 已經成功掛載 stat -f /cephfs 自動掛載 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/ceph2 fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab
卸載
fusermount -u /cephfs
-
當cephfs的性能出現在MDS上時,就應該配置多個活動的MDS。通常是多個客戶機應用程序並行的執行大量元數據操作,並且它們分別有自己單獨的工作目錄。這種情況下很適合使用多主MDS模式。
-
配置MDS多主模式 每個cephfs文件系統都有一個max_mds設置,可以理解為它將控制創建多少個主MDS。注意只有當實際的MDS個數大於或等於max_mds設置的值時,mdx_mds設置才會生效。例如,如果只有一個MDS守護進程在運行,並且max_mds被設置為兩個,則不會創建第二個主MDS。
# ceph fs set cephfs max_mds 2
配置備用MDS 即使有多個活動的MDS,如果其中一個MDS出現故障,仍然需要備用守護進程來接管。因此,對於高可用性系統,實際配置max_mds時,最好比系統中MDS的總數少一個。
但如果你確信你的MDS不會出現故障,可以通過以下設置來通知ceph不需要備用MDS,否則會出現insufficient standby daemons available告警信息:
# ceph fs set <fs> standby_count_wanted 0
設置max_mds # ceph fs set max_mds 1 刪除不需要的rank ceph mds deactivate cephfs:2
Ceph 的監控可視化界面方案很多----grafana、Kraken。但是從Luminous開始,Ceph 提供了原生的Dashboard功能,通過Dashboard可以獲取Ceph集群的各種基本狀態信息。 mimic版 (nautilus版) dashboard 安裝。如果是 (nautilus版) 需要安裝 ceph-mgr-dashboard
1、在每個mgr節點安裝 # yum install ceph-mgr-dashboard 2、開啟mgr功能 # ceph mgr module enable dashboard 3、生成並安裝自簽名的證書 # ceph dashboard create-self-signed-cert 4、創建一個dashboard登錄用戶名密碼 # ceph dashboard set-login-credentials admin admin 5、查看服務訪問方式 # ceph mgr services
指定集群dashboard的訪問端口 # ceph config-key set mgr/dashboard/server_port 7000 指定集群 dashboard的訪問IP # ceph config-key set mgr/dashboard/server_addr $IP
1、創建rgw用戶 # radosgw-admin user create --uid=user01 --display-name=user01 --system 2、提供Dashboard證書 # ceph dashboard set-rgw-api-access-key $access_key # ceph dashboard set-rgw-api-secret-key $secret_key 3、配置rgw主機名和端口 # ceph dashboard set-rgw-api-host 192.168.0.132 # ceph dashboard set-rgw-api-port 7480 4、刷新web頁面