主頁 > 軟體設計 > 世界500強是如何解決千億流量留存問題的,《Ceph分布式存盤架構》-使用CentOS 7部署 Ceph分布式存盤架構-為他們解決什么問題。

世界500強是如何解決千億流量留存問題的,《Ceph分布式存盤架構》-使用CentOS 7部署 Ceph分布式存盤架構-為他們解決什么問題。

2021-08-01 07:57:41 軟體設計

文章目錄

  • 一、Ceph概述
      • 1.1 Ceph介紹
      • 1.2 Ceph各組件介紹
  • 二、ceph集群部署實驗
      • 2.1 配置Ceph安裝源
      • 2.2 在xuegod63上安裝ceph-deploy管理工具
      • 2.3 離線安裝ceph
      • 2.4 安裝ceph monitor
      • 2.5 部署osd服務
      • 2.6 創建ceph檔案系統
      • 2.7 部署mgr監控
  • 三、多種Ceph掛載方式
      • 3.1 內核驅動掛載Ceph檔案系統
      • 3.2 使用ceph-fuse命令掛載Ceph檔案系統
  • 四、Ceph配置dashboard Web監控界面


一、Ceph概述

在這里插入圖片描述

1.1 Ceph介紹

Ceph是一個開源的分布式存盤系統,設計初衷是提供較好的性能、可靠性和可擴展性,它還是一個可靠、自動重均衡、自動恢復的分布式存盤系統,主要優點是分布式存盤,在存盤每一個資料時,都會通過計算得出該資料存盤的位置,盡量將資料分布均衡,不存在傳統的單點故障的問題,可以水平擴展,

ceph官方檔案 http://docs.ceph.org.cn/
ceph中文開源社區 http://ceph.org.cn/

資料大小和對應的存盤介紹關系:

大小存盤介質
2T一塊硬碟
10T一塊硬碟
50Traid0,1,5 / 存盤服務器

假如B站有20000T資料
20000T 一臺服務器不行, 一臺存盤服務器200T*100臺服務器, 使用的技術:ceph 分布

Ceph是一個開源的分布式檔案系統,因為它還支持塊存盤、物件存盤,所以很自然的被用做云計算框架openstack或cloudstack整個存盤后端,當然也可以單獨作為存盤,例如部署一套集群作為物件存盤、SAN存盤、NAS存盤等,

在這里插入圖片描述
RADOS自身是一個完整的分布式物件存盤系統,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自動化都是由這一層來提供的,用戶資料的存盤最終也都是通過這一層來進行存盤的,RADOS可以說就是Ceph的核心組件,

RADOS系統主要由兩部分組成,分別是OSD和Monitor,

基于RADOS層的上一層是LIBRADOS,LIBRADOS是一個庫,它允許應用程式通過訪問該庫來與RADOS系統進行互動,支持多種編程語言,比如C、C++、Python等,

基于LIBRADOS層開發的又可以看到有三層,分別是RADOSGW、RBD和CEPH FS,3個功能如下:

1、RADOSGW:RADOSGW是一套基于當前流行的RESTFUL協議的網關,并且兼容S3和Swift,
2、RBD:RBD通過Linux內核客戶端和QEMU/KVM驅動來提供一個分布式的塊設備,
3、CEPH FS:CEPH FS通過Linux內核客戶端和FUSE來提供一個兼容POSIX的檔案系統,就像NFS一樣,共享檔案,

ceph支持

1、物件存盤:即radosgw,兼容Swift和S3介面,通過rest api上傳、下載檔案,
2、塊存盤:即rbd,有kernel rbd和librbd兩種使用方式,支持快照、克隆,相當于一塊硬碟掛到本地,用法和用途和硬碟一樣,
3、檔案系統:posix介面,可以將ceph集群看做一個共享檔案系統掛載到本地,

Ceph相比其它分布式存盤有哪些優點?

1、統一存盤
雖然ceph底層是一個分布式檔案系統,但由于在上層開發了支持物件和塊的介面,所以在開源存盤軟體中,能夠一統江湖,

2、高擴展性
擴容方便、容量大,能夠管理上千臺服務器、EB級的容量,

3、可靠性強
支持多份強一致性副本,副本能夠垮主機、機架、機房、資料中心存放,所以安全可靠,存盤節點可以自動管理、自動修復,無單點故障,容錯性強,

4、高性能
因為是多個副本,因此在讀寫操作時候能夠做到高度并行化,理論上,節點越多,整個集群的IOPS和吞吐量越高,另外一點ceph客戶端讀寫資料直接與存盤設備(osd) 互動,

1.2 Ceph各組件介紹

在這里插入圖片描述
在這里插入圖片描述
Ceph的核心組件包括Client客戶端、MON監控服務、MDS元資料服務、OSD存盤服務,各組件功能如下:

1、Client客戶端:負責存盤協議的接入,節點負載均衡,

2、MON(Monitor)監控服務:監控整個集群Cluster map的狀態,維護集群的cluster MAP二進制表,保證集群資料的一致性,維護集群狀態的映射,包括監視器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,這些映射是Ceph守護程式相互協調所需的關鍵群集狀態,監視器還負責管理守護程式和客戶端之間的身份驗證,通常至少需要三個監視器才能實作冗余和高可用性,

注:元資料:保存了子目錄和子檔案的名稱 及inode編號的資料,通過元資料,可以找到對應的真實的資料,及真實資料所在的服務器,有點像字典前面的索引或yum源的快取

3、MDS元資料服務(可選):是元資料的記憶體快取,為了加快元資料的訪問,保存了檔案系統的元資料(物件里保存了子目錄和子檔案的名稱和inode編號) ,還保存cephfs日志journal,日志是用來恢復mds里的元資料快取 ,重啟mds的時候會通過replay的方式從osd上加載之前快取的元資料,

在ceph中,元資料是存盤在osd節點中的,mds類似于元資料的記憶體快取服務器,加快訪問速度,

4、OSD(物件存盤守護程式):主要功能是存盤資料、復制資料、平衡資料、恢復資料,以及與通過檢查其他Ceph OSD守護程式的心跳來向Ceph監視器和管理器提供一些監視資訊,通常至少需要3個Ceph OSD才能實作冗余和高可用性,

Ceph要求必須是奇數個Monitor監控節點,一般建議至少是3個(如果是自己私下測驗玩玩的話,可以是1個,但是生產環境絕不建議1個)用于維護和監控整個集群的狀態,每個Monitor都有一個Cluster Map,只要有這個Map,就能夠清楚知道每個物件存盤在什么位置了,客戶端會先tcp連接到Monitor,從中獲取Cluster Map,并在客戶端進行計算,當知道物件的位置后,再直接與OSD通信(去中心化的思想),OSD節點平常會向Monitor節點發送簡單心跳,只有當添加、洗掉或者出現例外狀況時,才會自動上報資訊給Monitor,

MDS是可選的,只有需要使用Ceph FS的時候才需要配置MDS節點,在Ceph中,元資料也是存放在OSD中的,MDS只相當于元資料的快取服務器,

在Ceph中,如果要寫資料,只能向主OSD寫,然后再由主OSD向從OSD同步地寫,只有當從OSD回傳結果給主OSD后,主OSD才會向客戶端報告寫入完成的訊息,如果要讀資料,不會使用讀寫分離,而是也需要先向主OSD發請求,以保證資料的強一致性,

在這里插入圖片描述
專業術語縮寫總結:

1、OSD全稱Object Storage Device,也就是負責回應客戶端請求回傳具體資料的行程,一個Ceph集群一般都有很多個OSD,

2、MDS全稱Ceph Metadata Server,是CephFS服務依賴的元資料服務,

3、PG全稱Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD,引入PG這一層其實是為了更好的分配資料和定位資料,

4、RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,用戶實作資料分配、Failover等集群操作,

5、RBD全稱RADOS block device,是Ceph對外提供的塊設備服務,

6、RGW全稱RADOS gateway,是Ceph對外提供的物件存盤服務,介面與S3和Swift兼容,

7、CephFS全稱Ceph File System,是Ceph對外提供的檔案系統服務,

二、ceph集群部署實驗

主機準備 (禁用selinux, 關閉防火墻)

xuegod63 	192.168.1.63      osd,mds,mon,admin部署節點 
xuegod62 	192.168.1.62      osd,mds,mon
xuegod64 	192.168.1.64      osd,mds,mon
xuegod64 	192.168.1.64		client掛載節點,可以單獨一臺服務器

注:1、admin角色代表ceph部署管理節點,其他節點通過ceph部署結點進行安裝,
2、xuegod62、xuegod63、xuegod64 各添加一塊硬碟,每個磁盤20G,搭建ceph時會使用新加的磁盤,

在這里插入圖片描述
編輯hosts檔案(所有節點需要操作):

(規范系統主機名添加hosts檔案實作集群主機名與主機名之間相互能夠決議(host 檔案添加主機名不要使用fqdn方式)可用hostnamectl set-hostname name設定

分別打開各節點的/etc/hosts檔案,加入這四個節點ip與名稱的對應關系

[root@xuegod63 ~]# vim /etc/hosts
192.168.1.63    xuegod63		xuegod63.cn
192.168.1.62    xuegod62		xuegod62.cn
192.168.1.64    xuegod64		xuegod64.cn

注:/etc/hosts中必須有xueogd63這種短域名,因為后期部署ceph時,ceph安裝程式默認只使用xueogd63域名,不使用xueogd63.cn

[root@xuegod63 ~]# scp /etc/hosts root@xuegod62:/etc/
[root@xuegod63 ~]# scp /etc/hosts root@xuegod64:/etc/

SSH免密碼登錄(所有節點需要操作)
在管理節點使用ssh-keygen 生成ssh keys 發布到各節點
[root@xuegod63 ~]# ssh-keygen  	#所有的輸入選項都直接回車生成,

[root@xuegod63 ~]# ssh-copy-id xuegod63
[root@xuegod63 ~]# ssh-copy-id xuegod62
[root@xuegod63 ~]# ssh-copy-id xuegod64

配置好網路源

3臺主機上,都更新Centos內核,Ceph的iscsi網關組件最低需要4.16版本的linux內核, 最好離線安裝

匯入Public Key

[root@xuegod63 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@xuegod62 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@xuegod64 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安裝elrepo源,通過elrepo源安裝新內核

[root@xuegod63 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
[root@xuegod62 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
[root@xuegod64 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y

安裝新版本內核(ml主線版本,lt長期支持版本)

[root@xuegod63 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
時間可能會比較長(3分鐘左右)
[root@xuegod62 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
[root@xuegod64 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
查看安裝的內核版本:
[root@xuegod63 yum.repos.d]# rpm -qa | grep kernel-lt
kernel-lt-5.4.127-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.127-1.el7.elrepo.x86_64

配置使用新版本內核啟動系統:

[root@xuegod63 ~]# grub2-set-default "kernel-lt-5.4.127-1" 
[root@xuegod62 ~]# grub2-set-default "kernel-lt-5.4.127-1" 
[root@xuegod64 ~]# grub2-set-default "kernel-lt-5.4.127-1" 

[root@xuegod63 ~]# reboot
[root@xuegod62 ~]# reboot
[root@xuegod64 ~]# reboot

[root@xuegod63 ~]# uname -r 
5.4.127-1.el7.elrepo.x86_64

同步時間:

使用互聯網上提供的NTP服務,把3臺主機時間保持一致(主機需要可以訪問互聯網)
統一安裝ntp

[root@xuegod62 ~]# yum install -y ntp
[root@xuegod63 ~]# yum install -y ntp
[root@xuegod64 ~]# yum install -y ntp

指定阿里云時間服務器,進行時間同步:

[root@xuegod63 ~]# ntpdate  ntp.aliyun.com
[root@xuegod62 ~]# ntpdate  ntp.aliyun.com
[root@xuegod64 ~]# ntpdate  ntp.aliyun.com 

添加計劃任務定期同步

[root@xuegod63 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root
[root@xuegod62 ~]# crontab -l
[root@xuegod64 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root
[root@xuegod62 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root

2.1 配置Ceph安裝源

方法1:離線安裝

創建本地yum源

[root@xuegod63 ~]# rz

在這里插入圖片描述

[root@xuegod63 ~]# tar xf ceph-14-v2.tar.gz -C /opt/
[root@xuegod63 ~]# tee  /etc/yum.repos.d/ceph.repo  << EOF
[ceph]
name=ceph
baseurl=file:///opt/ceph-14
enable=1
gpgcheck=0
EOF
復制離線yum倉庫至xuegod62
[root@xuegod63 ~]# scp -r /opt/ceph-14/ root@xuegod62.cn:/opt/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod62.cn:/etc/yum.repos.d/
復制離線yum倉庫至xuegod64
[root@xuegod63 ~]# scp -r /opt/ceph-14/ root@xuegod64.cn:/opt/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod64.cn:/etc/yum.repos.d/

方法2:配置在線ceph源

在線安裝

[root@xuegod63 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
priority=1
enable=1
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
priority=1
enable=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
priority=1
enable=1

[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod62:/etc/yum.repos.d/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod64:/etc/yum.repos.d/
在線安裝必須安裝epel源
[root@xuegod63 ~]# yum install -y epel-release

2.2 在xuegod63上安裝ceph-deploy管理工具

[root@xuegod63 ~]# yum install python-setuptools ceph-deploy -y
開始部署新的集群
[root@xuegod63 ~]# mkdir /etc/ceph && cd /etc/ceph

使用ceph-deploy new 命令快速部署3個ceph結點
[root@xuegod63 ceph]# ceph-deploy new xuegod62.cn xuegod63.cn xuegod64.cn
[root@xuegod63 ceph]# ls                                #在當前目錄下生成,有3個節點的組態檔
ceph.conf # Ceph主組態檔;        ceph-deploy-ceph.log #日志檔案 ;
ceph.mon.keyring #monitor密鑰

[root@xuegod63 ceph]# cat ceph.conf  #查看組態檔
[global]
fsid = 31051ba5-3210-441f-ae10-be6f70859d30
mon_initial_members = xuegod62, xuegod63, xuegod64 #指定了后期要對哪些節點進行monitor初始化,注:這里寫的是短域名,后期自動部署時,也會使用短域名
mon_host = 192.168.1.62,192.168.1.63,192.168.1.64   #monitor 節點IP

查看monitor密鑰,后期客戶端掛載ceph時,通過這個密鑰來認證:
[root@xuegod63 ceph]# cat ceph.mon.keyring 
[mon.]
key = AQAqgf5gAAAAABAAPJV2+TPknwAl5RY9bK6rAA==
caps mon = allow *

修改pool的副本數

pool概述:pool是ceph存盤資料時的邏輯磁區,它起到namespace的作用,其他分布式存盤系統,每個pool包含一定數量的PG,PG里的物件被映射到不同的OSD上,因此pool是分布到整個集群的,除了隔離資料,我們也可以分別對不同的POOL設定不同的優化策略,比如副本數、資料清洗次數、資料塊及物件大小等,

[root@xuegod63 ~]# vim /etc/ceph/ceph.conf		#組態檔的默認副本數從3改成2,這樣只有兩個osd也能達到active+clean狀態,把下面這行加入到[global]段(可選配置)
[global]
fsid = 31051ba5-3210-441f-ae10-be6f70859d30
mon_initial_members = xuegod62, xuegod63, xuegod64
mon_host = 192.168.1.62,192.168.1.63,192.168.1.64
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2
mon clock drift allowed = 0.500
mon clock drift warn backoff = 10

注:
osd_pool_default_size = 2 #設定pool的副本數為2個
mon clock drift allowed #監視器之間,允許的時鐘漂移量,改為,0.5秒,默認值0.05秒
mon clock drift warn backoff #時鐘偏移警告的退避指數,默認值5
ceph對每個mon之間的時間同步延時默認要求在0.05s之間,這個時間有的時候太短了,所以如果ceph集群出現clock問題,就檢查ntp時間同步或者適當放寬這個誤差時間,

2.3 離線安裝ceph

在所有節點上安裝ceph和ceph-radosgw,RADOSGW是一套基于當前流行的RESTFUL協議的網關,并且兼容S3和Swift,

[root@xuegod62 ~]# yum -y install ceph ceph-radosgw
[root@xuegod63 ~]# yum -y install ceph ceph-radosgw
[root@xuegod64 ~]# yum -y install ceph ceph-radosgw

2.4 安裝ceph monitor

1、安裝ceph monitor

[root@xuegod63 ~]# cd /etc/ceph/
[root@xuegod63 ceph]# ceph-deploy mon create-initial   #在3臺節點上安裝monitor,
[root@xuegod63 ceph]# ls *.keyring    # keyring是各組件之間秘鑰檔案

注:初始化monitor成員,根據置檔案中mon initial members中的monitors,進行部署,直到它們形成表決團,然后搜集keys,并且在這個程序中報告monitor的狀態,
在這里插入圖片描述
2、分發組態檔

(用ceph-deploy把組態檔和admin密鑰拷貝到所有節點,這樣每次執行Ceph命令列時就無需指定monitor地址和ceph.client.admin.keyring了)

[root@xuegod63 ceph]# ceph-deploy admin xuegod62.cn xuegod63.cn xuegod64.cn 

將client.admin的key push到遠程主機,將ceph-admin節點下的client.admin keyring push到遠程主機/etc/ceph/下面,

查看復制過來的檔案:

[root@xuegod62 ~]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmp8xZmUE

2.5 部署osd服務

使用 create 命令一次完成準備 OSD 、部署到 OSD 節點、并激活它,
將/dev/sdb磁盤準備為OSD,并把部署到相應的OSD節點上,

[root@xuegod63 ceph]# cd /etc/ceph/     #必須在這個目錄下執行
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod62.cn
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod63.cn
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod64.cn
查看狀態:
[root@xuegod63 ceph]# ceph-deploy osd list xuegod63 xuegod62 xuegod64

2.6 創建ceph檔案系統

創建mds

[root@xuegod63 ceph]# ceph-deploy mds create xuegod62.cn xuegod63.cn xuegod64.cn

查看ceph當前檔案系統

[root@xuegod63 ceph]# ceph fs ls

在這里插入圖片描述
一個cephfs至少要求兩個librados存盤池,一個為data,一個為metadata,當配置這兩個存盤池時,注意:

  1. 為metadata pool設定較高級別的副本級別,因為metadata的損壞可能導致整個檔案系統不用
  2. 建議,metadata pool使用低延時存盤,比如SSD,因為metadata會直接影響客戶端的回應速度,

創建pool存盤池

pg概述:PG,Placement Group,歸置組,
Placement [?ple?sm?nt] 安置 歸置

例1: 創建名為cephfs_data,pg_num為128的pool

[root@xuegod63 ceph]# ceph osd pool create cephfs_data 128   
pool 'cephfs_data' created

例2:創建名為cephfs_metadata,pg_num為128的pool

[root@xuegod63 ceph]# ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created

注:通常在創建pool之前,需要覆寫默認的pg_num,官方推薦:
*少于 5 個 OSD 時可把 pg_num 設定為 128
*OSD 數量在 5 到 10 個時,可把 pg_num 設定為 512
*OSD 數量在 10 到 50 個時,可把 pg_num 設定為 4096
*OSD 數量大于 50 時,你得理解權衡方法、以及如何自己計算 pg_num 取值
*自己計算 pg_num 取值時可借助 pgcalc 工具,

創建檔案系統

創建好存盤池后,你就可以用 fs new 命令創建檔案系統了

[root@xuegod63 ceph]# ceph fs new xuegod cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1   
注:metadata pool 編號為:2  ;data pool 編號為:1
其中:new后的fsname  可自定義

[root@xuegod63 ceph]# ceph fs ls              #查看創建后的cephfs
name: xuegod, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@xuegod63 ceph]# ceph mds stat          #查看mds節點狀態
xuegod:1 {0=xuegod62.cn=up:active} 2 up:standby
active是活躍的,另1個是處于熱備份的狀態

2.7 部署mgr監控

安裝mgr用于后面我們配置dashboard監控,而且避免掛載ceph時可能會提示warring資訊,

[root@xuegod63 ceph]# ceph-deploy mgr create xuegod62.cn xuegod63.cn xuegod64.cn

安裝后查看集群狀態正常

[root@xuegod63 ceph]# ceph -s

在這里插入圖片描述

三、多種Ceph掛載方式

3.1 內核驅動掛載Ceph檔案系統

1、查看存盤密鑰(如果沒有在管理節點使用ceph-deploy拷貝ceph組態檔)

[root@xuegod63 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
	key = AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==

2、將key對應的值復制下來保存到客戶端xueogd64的/etc/ceph/admin.secret中,如果已經有了,就不用復制了,

[root@xuegod64 ~]# vim /etc/ceph/admin.secret  #寫入以下內容
AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==

例1:將ceph掛載到/root/test2目錄下

[root@xuegod64 ceph]# mkdir /root/test2
[root@xuegod64 ceph]# mount -t ceph 192.168.1.63:6789:/ /root/test2/ -o name=admin,secretfile=/etc/ceph/admin.secret 
[root@xuegod64 ceph]# df -h
檔案系統             容量  已用  可用 已用% 掛載點
devtmpfs             970M     0  970M    0% /dev
tmpfs                982M     0  982M    0% /dev/shm
tmpfs                982M  8.8M  973M    1% /run
tmpfs                982M     0  982M    0% /sys/fs/cgroup
/dev/sda3             50G  2.0G   49G    4% /
/dev/sda1            497M  151M  347M   31% /boot
/dev/sr0             4.3G  4.3G     0  100% /mnt
tmpfs                197M     0  197M    0% /run/user/0
tmpfs                982M   52K  982M    1% /var/lib/ceph/osd/ceph-2
192.168.1.63:6789:/   27G     0   27G    0% /root/test2

在這里插入圖片描述
要取消掛載

[root@xuegod64 ceph]# umount /root/test2     # 先不卸載

3.2 使用ceph-fuse命令掛載Ceph檔案系統

登錄xuegod64,安裝ceph-fuse

[root@xuegod64 ceph]# yum install -y ceph-fuse
[root@xuegod64 ceph]# mkdir /root/xueogd    #必須創建一個空目錄,不能直接掛載有檔案的目錄下

掛載

[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /root/xueogd/

在這里插入圖片描述
取消掛載

[root@xuegod64 ceph]# fusermount -u /root/xueogd/    #先不取消掛載

測驗兩種掛載,顯示的存盤大小為什么不一樣:
沒有寫入資料時查看大小:
在這里插入圖片描述
寫入1G檔案

[root@xuegod64 ceph]# dd if=/dev/zero of=/root/test2/a.txt bs=1G count=1
[root@xuegod64 ceph]# df -h

在這里插入圖片描述

檔案系統               容量    已用    可用   已用%  掛載點
ceph-fuse             60G    5.0G    55G    9%   /root/xueogd
192.168.1.63:6789:/   27G   1012M   26G   4%   /root/test2

注:當寫入1G檔案時,fusermount查看大小,已用空間直接增加2G左右,mount查看大小只增加1G左右,

總結:由此可以看到mount掛載顯示是的用戶真實可以使用的磁盤空間大小, fusermount顯示的ceph
OSD一共的空間,不用戶可以使用的大小,我們設定了OSD存盤資料,存2個副本,60G/2=27G左右,因為MSD還要占用一些空間,

排錯匯總:

排錯1:如查要在新節點xuegod65.cn上掛載,需要將組態檔以及密鑰檔案拷貝至客戶端節點,
用ceph-deploy把組態檔和admin密鑰拷貝到新節點,這樣每次執行Ceph命令列時就無需指定monitor地址和ceph.client.admin.keyring了)

[root@xuegod63 ceph]# ceph-deploy admin  xuegod65.cn   #分發組態檔

不然會報以下錯:
在這里插入圖片描述
排錯2:

[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /opt      #掛載,報以下錯

在這里插入圖片描述
如果出現以該提示表示你需要使用-o nonempty進行掛載,原因是/opt目錄不是空的,因為之前掛載到/opt路徑中時會創建一個額外的目錄檔案夾,所以該提示是為了防止你掛載到存在資料的目錄中導致目錄中原有資料丟失,

解決方法2種

  1. 使用-o nonempty引數掛載
[root@xuegod64 ceph]# ceph-fuse -o nonempty -m 192.168.1.63:6789 /opt
  1. 洗掉目錄下的檔案
[root@xuegod64 ceph]# rm -rf /opt/ *
[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /opt
  1. 取消掛載
[root@xuegod64 ceph]# fusermount -u /opt

四、Ceph配置dashboard Web監控界面

安裝mgr-dashboard插件(ceph節點都要安裝)

[root@xuegod62 ceph]# yum install -y ceph-mgr-dashboard
[root@xuegod63 ceph]# yum install -y ceph-mgr-dashboard
[root@xuegod64 ceph]# yum install -y ceph-mgr-dashboard

注:所有節點上必須都安裝ceph-mgr-dashboard,不然后無法啟動web監控界面,會報以下錯:
在這里插入圖片描述
啟用dashboard插件

[root@xuegod63 ceph]# ceph mgr module enable dashboard

創建自簽名證書

[root@xuegod63 ceph]# ceph dashboard create-self-signed-cert

創建管理員用戶,用戶名:xuegod 密碼:123456

[root@xuegod63 ceph]# ceph dashboard set-login-credentials xuegod 123456
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated

[root@xuegod63 ceph]# ceph mgr services
{
    "dashboard": "https://xuegod63.cn:8443/"
}

注:這里的訪問地址不是固定的,可能是xuegod62.cn:8443,mgr services中提示的dashboard訪問地址為準,
可以通過ip地址訪問: https://192.168.1.62:8443/
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
拷貝測驗資料

[root@xuegod64 ceph]# mount /dev/sr0 /mnt/
[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /root/xueogd/
[root@xuegod64 ceph]# cp -r  /mnt/Packages/ /root/xueogd/

注:這里拷貝1分鐘左右就Ctrl+C取消,否則會占用過多的磁盤空間,

監控界面中Filesystems中可以看到檔案系統的詳細資訊,
在這里插入圖片描述
這個圖會實時的顯示

看到這里是否對Ceph分布式存盤架構有所了解了呢?

                              想要獲取文章中的學習視頻+筆記和原始碼的
                                  添加我們的小姐姐就可獲取哦!

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291233.html

標籤:其他

上一篇:斐波那契數列(Fibonacci)+青蛙跳臺階問題

下一篇:??「 選擇排序 」??

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more