一次ceph完整構建之旅[CephFS]

一次ceph完整構建之旅[CephFS]
基本簡介

Ceph是一種爲優秀的性能、可靠性和可擴展性而設計的統一的、分佈式文件系統。
由來

其命名和UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是 “Sammy”,一個香蕉色的蛞蝓,就是頭足類中無殼的軟體動物。這些有多觸角的頭足類動物,是對一個分佈式文件系統高度並行的形象比喻。
Ceph 最初是一項關於存儲系統的 PhD 研究項目,由 Sage Weil 在 University of California, SantaCruz(UCSC)實施。
開發目標
簡單定義爲以下3項:

  1. 可輕鬆擴展到數 PB 容量
  2. 支持多種工作負載的高性能(每秒輸入/輸出操作[IOPS]和帶寬)
  3. 高可靠性
    但是,這些目標之間會互相競爭(例如,可擴展性會降低或者抑制性能或者影響可靠性)。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級存儲)存儲故障是常見現象而不是例外情況。
    它的設計並沒有假設某種特殊工作負載,但包括了適應變化的工作負載,並提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 爲目標的改進)的應用進行透明的部署。
    系統架構
    Ceph 生態系統架構可以劃分爲四部分:
  4. Clients:客戶端(數據用戶)
  5. cmds:Metadata server cluster,元數據服務器(緩存和同步分佈式元數據)
  6. cosd:Object storage cluster,對象存儲集羣(將數據和元數據作爲對象存儲,執行其他關鍵職能)
  7. cmon:Cluster monitors,集羣監視器(執行監視功能)
    內容源自百科:https://baike.baidu.com/item/CEPH/1882855
    操作過程
    CEPH環境配置
    192.168.27.210 master(ceph-deploy)
    192.168.27.211 client1 osd0 mds1、mon1
    192.168.27.212 client2 osd1 mds2、mon2
    192.168.27.213 client3 osd2 mds3、mon3
    主機名
    hostnamectl set-hostname master
    hostnamectl set-hostname client1
    hostnamectl set-hostname client2
    hostnamectl set-hostname client3
    映射主機名:
    192.168.27.210 master
    192.168.27.211 client1
    192.168.27.212 client2
    192.168.27.213 client3
    一次ceph完整構建之旅[CephFS]
    確認節點間映射關係的聯通性:
    ping -c 3 master
    ping -c 3 client1
    ping -c 3 client2
    ping -c 3 client3
    提示:由於提前做了SSH免登陸,這裏把步驟省了,新裝需要每臺都需要做一次。
    每個節點關閉防火牆和selinux
    #systemctl stop firewalld
    #systemctl disable firewalld
    #sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    #setenforce 0

    每個節點安裝和配置NTP(官方推薦的是集羣的所有節點全部安裝並配置 NTP,需要保證各節點的系統時間一致。沒有自己部署ntp服務器,就在線同步NTP)
    #yum install ntp ntpdate ntp-doc -y
    #systemctl restart ntpd
    systemctl status ntpd

每個節點準備yum源
刪除默認的源,國外的比較慢
#yum clean all
#mkdir /mnt/bak
#mv /etc/yum.repos.d/* /mnt/bak/

下載阿里雲的base源和epel源
#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源
#vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
準備磁盤(實際操作也可以省,只要磁盤沒問題直接安裝都沒問題無需要此步驟)
fdisk /dev/sdb
parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
mkfs.xfs /dev/sdb –f
blkid /dev/sdb #用ansible直觀的看下
一次ceph完整構建之旅[CephFS]
部署階段(admin節點上使用ceph-deploy快速部署)
安裝ceph-deploy
sudo yum update -y && sudo yum install ceph-deploy -y
創建cluster目錄
[root@master ~]# mkdir -pv /data/idc-cluster
mkdir: 已創建目錄 "/data/idc-cluster"
一次ceph完整構建之旅[CephFS]
創建集羣(後面跟集羣成員節點名稱,這裏master節點只做CEPH-DEPLOY使用)
[root@master idc-cluster]# ceph-deploy new client1 client2 client3
一次ceph完整構建之旅[CephFS]
在ceph.conf文件中添加紅色項並保存
[root@client2 ceph]# cat ceph.conf
[global]
fsid = d5a5f367-97d2-45a5-8b6b-b462bd65fe3d
mon_initial_members = client1, client2, client3
mon_host = 192.168.27.211,192.168.27.212,192.168.27.213
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size= 3
public_network = 192.168.27.0/22
重新推送配置信息到各結點:
[root@master idc-cluster]# ceph-deploy --overwrite-conf config push master client1 client2 client3
初始化集羣:
ceph-deploy mon create-initial
一次ceph完整構建之旅[CephFS]

一次ceph完整構建之旅[CephFS]
添加OSD到集羣
準備OSD(使用prepare命令)
[root@master idc-cluster]# ceph-deploy osd prepare client1:/dev/sdb client2:/dev/sdb client3:/dev/sdb

激活OSD(注意由於ceph對磁盤進行了分區,/dev/sdb磁盤分區爲/dev/sdb1)
一次ceph完整構建之旅[CephFS]
[root@master idc-cluster]# ceph-deploy osd activate client1:/dev/sdb1 client2:/dev/sdb1 client3:/dev/sdb1
一次ceph完整構建之旅[CephFS]

[root@master idc-cluster]# ceph-deploy admin master client1 client2 client3
一次ceph完整構建之旅[CephFS]
創建文件系統
先查看管理節點狀態,默認是沒有管理節點的。
[root@master idc-cluster]# ceph mds stat
e1:
[root@master idc-cluster]#
一次ceph完整構建之旅[CephFS]
創建管理節點(master結點作爲管理節點)
[root@master idc-cluster]# ceph-deploy mds create master
一次ceph完整構建之旅[CephFS]
再次查看管理節點狀態,發現已經在啓動中
[root@master idc-cluster]# ceph mds stat
e2:, 1 up:standby
一次ceph完整構建之旅[CephFS]
一次ceph完整構建之旅[CephFS]
創建pool,pool是ceph存儲數據時的邏輯分區,它起到namespace的作用
先查看下:
ceph osd lspools
一次ceph完整構建之旅[CephFS]
新創建的ceph集羣只有rdb一個pool。這時需要創建一個新的pool
[root@master idc-cluster]# ceph osd pool create cephfs_data 128 #後面的數字是PG的數量
pool 'cephfs_data' created
一次ceph完整構建之旅[CephFS]
再查看下有了:
一次ceph完整構建之旅[CephFS]
[root@master idc-cluster]# ceph osd pool create cephfs_metadata 128 #創建pool的元數據
pool 'cephfs_metadata' created
一次ceph完整構建之旅[CephFS]
再次查看pool狀態:
一次ceph完整構建之旅[CephFS]
ceph fs new myceph cephfs_metadata cephfs_data
一次ceph完整構建之旅[CephFS]
檢查mds管理節點狀態
[root@master idc-cluster]# ceph mds stat
一次ceph完整構建之旅[CephFS]
查看集羣狀態有警報:
一次ceph完整構建之旅[CephFS]
解決方案
在配置文件中,調大集羣的此選項的告警閥值;方法如下,在mon節點的ceph.conf(/etc/ceph/ceph.conf)配置文件中添加:

vi /etc/ceph/ceph.conf
[global]
.......
mon_pg_warn_max_per_osd = 666
推送配置
一次ceph完整構建之旅[CephFS]
重啓monitor服務:
systemctl restart ceph-mon.target
一次ceph完整構建之旅[CephFS]
1、客戶端掛載使用cephfs:
[root@BDDB ceph]# ceph-fuse -m 192.168.27.211:6789 /ceph/cephsys
一次ceph完整構建之旅[CephFS]
一次ceph完整構建之旅[CephFS]
2、使用內核驅動程序掛載CephFs
[root@BDDB ~]# mount -t ceph 192.168.27.213:6789:/ /ceph/cephsys/ -o name=admin,secretfile=/etc/ceph/admin.secret
一次ceph完整構建之旅[CephFS]
存放文件效果:
一次ceph完整構建之旅[CephFS]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章