centos7安裝ceph維護提升篇

ceph介紹php

Ceph 是一個專一於分佈式的、彈性可擴展的、高可靠的、性能優異的存儲系統平臺,能夠同時支持塊設備、文件系統和對象網關三種類型的存儲接口。本文介紹的調優手段包括硬件層面和軟件配置層面的優化,暫不涉及軟件代碼層面的優化。經過調整系統和Ceph配置參數,Ceph能夠更充分的發揮系統硬件性能。Ceph PG分佈調優和OSD綁核旨在讓磁盤負載更平均,避免個別OSD成爲瓶頸。此外,用NVMe SSD作Bcache也能夠提高性能。html

ceph架構node

43e3b086d86bc00c09d6ceeaa4be7340.png

模塊說明

模塊名稱ios

功能描述web

RADOS算法

RADOS(Reliable Autonomic Distributed Object Store, RADOS)是Ceph 存儲集羣的基礎。Ceph 中的一切都以對象的形式存儲,而RADOS 就負責存儲這些對象,而不考慮它們的數據類型。RADOS 層確保數據一致性和可靠性。對於數據一致性,它執行數據複製、故障檢測和恢復,還包括數據在集羣節點間的recovery。數據庫

OSDjson

實際存儲數據的進程。一般一個OSD daemon綁定一個物理磁盤。Client write/read 數據最終都會走到OSD去執行write/read操做。後端

MONcentos

Monitor在Ceph集羣中扮演者管理者的角色,維護了整個集羣的狀態,是Ceph集羣中最重要的組件。Mon保證集羣的相關組件在同一時刻可以達成一致,至關於集羣的領導層,負責收集、更新和發佈集羣信息。爲了規避單點故障,在實際的Ceph部署環境中會部署多個Mon,一樣會引來多個Mon以前如何協同工做的問題。

MGR

MGR 目前的主要功能是一個監控系統,包含採集、存儲、分析(包含報警)和可視化幾部分,用於把集羣的一些指標暴露給外界使用。

Librados

簡化訪問RADOS的一種方法,目前支持PHP、Ruby、Java、Python、C和C++語言。它提供了Ceph 存儲集羣的一個本地接口RADOS ,而且是其餘服務(如RBD 、RGW) 的基礎,此外,還爲CephFS 提供POSIX 接口。librados API 支持直接訪問RADOS ,使開發者可以建立本身的接口來訪問Ceph集羣存儲。

RBD

Ceph塊設備, 對外提供塊存儲。能夠像磁盤同樣被映射、格式化和掛載到服務器上。

RGW

Ceph對象網關,提供了一個兼容S3和Swift的restful API接口。RGW還支持多租戶和Openstack的keyston身份驗證服務。

MDS

Ceph元數據服務器,跟蹤文件層次結構並存儲只供CephFS使用的元數據。Ceph塊設備和RADOS網關不須要元數據。MDS不直接給client提供數據服務。

CephFS

提供了一個任意大小且兼容POSlX的分佈式文件系統。CephFS 依賴Ceph MDS 來跟蹤文件層次結構,即元數據。

調優原則與思路

塊存儲調優主要分均衡型配置調優(均衡性配置是指以機械硬盤(HDD)做爲數據盤,並配置適量固態硬盤(SSD)做爲db/wal分區、元數據存儲池的場景)和高性能配置調優(高性能配置是指全部數據盤都是用固態硬盤(SSD)的場景)。根據實際場景選擇一種配置進行調優便可。

調優原則

在性能優化時,須要遵循必定的原則,主要有如下幾個方面:

  • 對性能進行分析時,要多方面分析系統的資源瓶頸所在,如CPU利用率達到100%時,也多是內存容量限制,致使CPU忙於處理內存調度。
  • 一次只對一個性能指標參數進行調整。
  • 分析工具自己運行可能會帶來資源損耗,致使系統某方面的資源瓶頸狀況更加嚴重,應避免或下降對應用程序的影響。

調優思路

調優分析思路以下:

  1. 不少狀況下壓測流量並無徹底進入到後端(服務端),在網絡接入層(雲化的架構好比:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就會出現因爲各類規格(帶寬、最大鏈接數、新建鏈接數等)限制或者由於壓測的某些特徵符合CC和DDoS的行爲而觸發了防禦策略致使壓測結果達不到預期。
  2. 接着看關鍵指標是否知足要求,若是不知足,須要肯定是哪一個地方有問題,通常狀況下,服務器端問題可能性比較大,也有多是客戶端問題(這種狀況很是小)。
  3. 對於服務器端問題,須要定位的是硬件相關指標,例如CPU,Memory,Disk I/O,Network I/O,若是是某個硬件指標有問題,須要深刻的進行分析。
  4. 若是硬件指標都沒有問題,須要查看中間件相關指標,例如:線程池、鏈接池、GC等,若是是這些指標問題,須要深刻的分析。
  5. 若是中間件相關指標沒問題,須要查看數據庫相關指標,例如:慢查SQL,命中率,鎖、參數設置。
  6. 若是以上指標都正常,應用程序的算法、緩衝、緩存、同步或異步可能有問題,須要具體深刻的分析。

可能的瓶頸點如表1所示。

表1 可能的瓶頸點

瓶頸點

說明

硬件/規格

通常指的是CPU、內存、磁盤I/O方面的問題,分爲服務器硬件瓶頸、網絡瓶頸(對局域網能夠不考慮)。

中間件

通常指的是應用服務器、web 服務器等應用軟件,還包括數據庫系統。例如:中間件weblogic平臺上配置的JDBC鏈接池的參數設置不合理,形成的瓶頸。

應用程序

通常指的是開發人員開發出來的應用程序。例如,JVM參數不合理,容器配置不合理,慢SQL,數據庫設計不合理,程序架構規劃不合理,程序自己設計有問題(串行處理、請求的處理線程不夠、無緩衝、無緩存、生產者和消費者不協調等),形成系統在大量用戶方位時性能低下而形成的瓶頸。

操做系統

通常指的是Windows、UNIX、Linux等操做系統。例如,在進行性能測試,出現物理內存不足時,虛擬內存設置也不合理,虛擬內存的交換效率就會大大下降,從而致使行爲的響應時間大大增長,這時認爲操做系統上出現性能瓶頸。

網絡設備

通常指的是防火牆、動態負載均衡器、交換機等設備。當前更多的雲化服務架構使用的網絡接入產品:包括但不限於SLB/WAF/高防IP/CDN/全站加速等等。例如,在動態負載均衡器上設置了動態分發負載的機制,當發現某個應用服務器上的硬件資源已經到達極限時,動態負載均衡器將後續的交易請求發送到其餘負載較輕的應用服務器上。在測試時發現,動態負載均衡器沒有起到相應的做用,這時能夠認爲網絡瓶頸。

調優的通用步驟:

調優通用步驟如圖1所示。

圖1 調優通用步驟
981d287c2b6c43b2fc35169e5c1b63b1.png

具體優化配置能夠參考華爲雲調優指南:

 https://support.huaweicloud.com/tngg-kunpengsdss/kunpengcephblock_05_0006.html


RBD塊存儲常規操做

查看pools
建立一個pool,包含64個pg和64個pgp     

[root@node-1 ~]# ceph osd pool create ceph-demo 64 64
pool 'ceph-demo' created
[root@node-1 ~]# ceph osd lspools
1 ceph-demo

查看pg和pgp

[root@node-1 ~]# ceph osd pool get ceph-demo pg_num
pg_num: 64
[root@node-1 ~]# ceph osd pool get ceph-demo pgp_num
pgp_num: 64
#副本數,默認就是3個
[root@node-1 ~]# ceph osd pool get ceph-demo size
size: 3

調整pg和pgp

[root@node-1 ~]# ceph osd pool set ceph-demo pg_num 128
set pool 1 pg_num to 128
[root@node-1 ~]# ceph osd pool set ceph-demo pgp_num 128
set pool 1 pgp_num to 128
查看
[root@node-1 ~]# ceph -s
  cluster:
    id:     c16b9145-7216-4058-8bfb-c9b7b2b702de
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node-1,node-2,node-3 (age 2w)
    mgr: node-1(active, since 2w), standbys: node-2, node-3
    osd: 3 osds: 3 up (since 2w), 3 in (since 2w)
 
  data:
    pools:   1 pools, 128 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 147 GiB / 150 GiB avail
    pgs:     128 active+clean

    
建立rbd

 rbd create -p ceph-demo --image rbd-demo.img --size 10G
查看
[root@node-1 ~]# rbd -p ceph-demo ls
rbd-demo.img

 
[root@node-1 ~]# rbd info ceph-demo/rbd-demo.img
rbd image 'rbd-demo.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 1143ee2e8a3a
        block_name_prefix: rbd_data.1143ee2e8a3a
        format: 2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        op_features: 
        flags: 
        create_timestamp: Tue Nov 17 14:57:35 2020
        access_timestamp: Tue Nov 17 14:57:35 2020
        modify_timestamp: Tue Nov 17 14:57:35 2020
        
刪除rbd
rbd rm -p ceph-demo --image rbd-demo.img

掛載塊設備    
禁用新特性,3.10內核不支持    
rbd feature disable ceph-demo/rbd-demo.img deep-flatten
rbd feature disable ceph-demo/rbd-demo.img fast-diff
rbd feature disable ceph-demo/rbd-demo.img object-map
rbd feature disable ceph-demo/rbd-demo.img exclusive-lock    

查看
[root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img
rbd image 'rbd-demo.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 1143ee2e8a3a
        block_name_prefix: rbd_data.1143ee2e8a3a
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov 17 14:57:35 2020
        access_timestamp: Tue Nov 17 14:57:35 2020
        modify_timestamp: Tue Nov 17 14:57:35 2020
        
建立
[root@node-1 ~]# rbd map ceph-demo/rbd-demo.img
/dev/rbd0
查看
[root@node-1 ~]# rbd device list
id pool      namespace image        snap device    
0  ceph-demo           rbd-demo.img -    /dev/rbd0 

[root@node-1 ~]# fdisk -l
Disk /dev/rbd0: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes

而後就能夠進行格式化,分區操做了
mkfs.ext4 /dev/rbd0
lsblk
mkdir /mnt/rbd-demo
mount /dev/rbd0 /mnt/rbd-demo
df -h

擴容     

 當前10個G
[root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img
rbd image 'rbd-demo.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 1143ee2e8a3a
        block_name_prefix: rbd_data.1143ee2e8a3a
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov 17 14:57:35 2020
        access_timestamp: Tue Nov 17 14:57:35 2020
        modify_timestamp: Tue Nov 17 14:57:35 2020
        
[root@node-1 ~]# rbd resize ceph-demo/rbd-demo.img --size 20G
Resizing image: 100% complete...done.

擴容後,變成20個G
[root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img
rbd image 'rbd-demo.img':
        size 20 GiB in 5120 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 1143ee2e8a3a
        block_name_prefix: rbd_data.1143ee2e8a3a
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov 17 14:57:35 2020
        access_timestamp: Tue Nov 17 14:57:35 2020
        modify_timestamp: Tue Nov 17 14:57:35 2020
可是隻是對底層進行擴容,可是對於磁盤分區沒有擴容
resize2fs /dev/rbd0

縮容不建議錯,很容易形成數據丟失

告警排查

健康狀態詳情
[root@node-1 ~]# ceph health detail
HEALTH_WARN application not enabled on 1 pool(s)
POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)
    application not enabled on pool 'ceph-demo'
   
 use 'ceph osd pool application enable <pool-name> 
<app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or 
freeform for custom applications.
    一個資源池沒有啓用application,解決方案是啓用起來,而且指定應用類型
解決
[root@node-1 ~]# ceph osd pool application enable ceph-demo rbd
enabled application 'rbd' on pool 'ceph-demo'

[root@node-1 ~]# ceph osd pool application get ceph-demo
{
    "rbd": {}
}

查看狀態
[root@node-1 ~]# ceph -s
  cluster:
    id:     c16b9145-7216-4058-8bfb-c9b7b2b702de
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node-1,node-2,node-3 (age 2w)
    mgr: node-1(active, since 2w), standbys: node-2, node-3
    osd: 3 osds: 3 up (since 2w), 3 in (since 2w)
 
  data:
    pools:   1 pools, 128 pgs
    objects: 4 objects, 35 B
    usage:   3.0 GiB used, 147 GiB / 150 GiB avail
    pgs:     128 active+clean

Ceph集羣維護

  • 遷移相關虛擬機/業務至其餘節點(openstack等須要把虛擬機遷移出去);

在MON或者有admin權限的節點執行操做:

# 設置OSD的鎖定
for i in noout nobackfill norecovery;do ceph osd set $i;done
# 完成機器維護後,加電,從新同步數據
for i in noout nobackfill norecovery;do ceph osd unset $i;done
# start/stop all ceph-mds@.service instances at once
systemctl start/stop/restart ceph-mds.target
# start/stop all ceph-mgr@.service instances at once
systemctl start/stop/restart ceph-mgr.target
# start/stop all ceph-mon@.service instances at once
systemctl start/stop/restart ceph-mon.target
# start/stop all ceph-osd@.service instances at once
systemctl start/stop/restart ceph-osd.target
# start/stop all ceph-radosgw@.service instances at once
systemctl start/stop/restart ceph-radosgw.target
# start/stop all ceph*@.service instances at once
systemctl start/stop/restart ceph.target	
# 檢查集羣狀態
ceph health
ceph status
ceph quorum_status
ceph mon_status
# 觀察集羣內正發生的事件
ceph -w/-s
 
# 檢查集羣的使用狀況
ceph df
# 檢查 OSD 狀態
ceph osd stat
ceph osd dump
# 打印 CRUSH 樹
ceph osd tree
 
# 檢查 Mon 狀態
ceph mon stat
ceph mon dump
# 檢查MON法定人數狀態
ceph quorum_status -f json-pretty
 
# 檢查 MDS 狀態
ceph mds stat
ceph mds dump
 
# 監控 PG
ceph pg dump
# 查看指定 PG 的 Acting Set 或 Up Set 中包含的 OSD
ceph pg map {pg-num}

ceph經常使用命令

啓動一個ceph進程

啓動mon進程

service ceph start  mon.node11

啓動msd進程

service ceph start mds.node11

啓動osd進程

service ceph start osd.01

查看機器的監控狀態

ceph health1

查看ceph的實時運行狀態

ceph -w1

檢查信息狀態信息

ceph -s1

查看ceph存儲空間

ceph df1

刪除一個節點的全部的ceph數據包

ceph-deploy purge node1
ceph-deploy purgedata node112

建立管理用戶

爲ceph建立一個admin用戶併爲admin用戶建立一個密鑰,把密鑰保存到/etc/ceph目錄下:

ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' > /etc/ceph/ceph.client.admin.keyring
或
ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.admin.keyring123

爲osd.0建立一個用戶並建立一個key

ceph auth get-or-create osd.0 mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring1

爲mds.node1建立一個用戶並建立一個key

ceph auth get-or-create mds.node1 mon 'allow rwx' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mds/ceph-node1/keyring1

查看ceph集羣中的認證用戶及相關的key

ceph auth list1

刪除集羣中的一個認證用戶

ceph auth del osd.01

查看集羣的詳細配置

ceph daemon mon.node1 config show | more1

查看集羣健康狀態細節

ceph health detail1

查看ceph log日誌所在的目錄

ceph-conf --name mon.node1 --show-config-value log_file1

mon命令

ceph mon stat#查看mon的狀態信息

ceph mon dump#查看ceph映射信息

ceph mon remove node1 #刪除一個mon節點  ceph-deploy mon destroy {host-name [host-name]...}

ceph mon add node1 node1_ip #添加一個mon節點  ceph-deploy mon create {host-name [host-name]...} 

mon節點的/var/lib/ceph/mon/ceph-node2/store.db文件內容一致,添加mon注意先改配置目錄配置文件,再推送到全部節點

ceph-deploy --overwrite-conf config push  node1 node2 node3

mds命令

ceph mds stat #查看msd狀態

ceph mds dump #msd的映射信息

ceph mds rm 0 mds.node1#刪除一個mds節點

ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]

osd命令

ceph osd stat #查看osd狀態

ceph osd dump #osd的映射信息

ceph osd tree#查看osd目錄樹

ceph osd down 0   #down掉osd.0節點

ceph osd rm 0#集羣刪除一個osd硬盤

ceph osd crush remove osd.4#刪除標記

ceph osd getmaxosd#查看最大osd個數

ceph osd setmaxosd 10#設置osd的個數

ceph osd out osd.3#把一個osd節點逐出集羣

ceph osd in osd.3#把逐出的osd加入集羣

ceph osd pause#暫停osd (暫停後整個集羣再也不接收數據)

ceph osd unpause#再次開啓osd (開啓後再次接收數據)

pg命令

ceph pg stat#查看pg狀態

ceph pg dump#查看pg組的映射信息

ceph pg map 0.3f#查看一個pg的map

ceph pg  0.26 query#查看pg詳細信息

ceph pg dump --format plain#顯示一個集羣中的全部的pg統計

osd命令

ceph osd lspools#查看ceph集羣中的pool數量

ceph osd pool create jiayuan 100#建立一個pool  這裏的100指的是PG組

ceph osd pool delete jiayuan  jiayuan  --yes-i-really-really-mean-it  #集羣名字須要重複兩次

rados df#顯示集羣中pool的詳細信息

ceph osd pool get data pg_num  #查看data池的pg數量

ceph osd pool set data target_max_bytes 100000000000000#設置data池的最大存儲空間爲100T(默認是1T)

ceph osd pool set data size 3  #設置data池的副本數是3

ceph osd pool set data min_size 2 #設置data池能接受寫操做的最小副本爲2

ceph osd pool set data pg_num 100#設置一個pool的pg數量

ceph osd pool set data pgp_num 100#設置一個pool的pgp數量

rados和rbd命令

rados lspools#查看ceph集羣中有多少個pool (只是查看pool)

rados df #查看ceph集羣中有多少個pool,而且每一個pool容量及利用狀況

rados mkpool test#建立一個pool

rados create test-object -p test#建立一個對象object 

rados rm test-object-1 -p test#刪除一個對象object 

rados -p test ls

rbd ls pool_name#查看ceph中一個pool裏的全部鏡像

rbd info -p pool_name --image 74cb427c-cee9-47d0-b467-af217a67e60a #查看ceph pool中一個鏡像的信息

rbd create -p test --size 10000 zhanguo#在test池中建立一個命名爲zhanguo的10000M的鏡像

rbd rm  -p test  lizhanguo #刪除一個鏡像

rbd resize -p test --size 20000 zhanguo  #調整一個鏡像的尺寸

建立一個osd

ceph-deploy disk zap {osd-server-name}:{disk-name}   #擦淨磁盤

ceph-deploy osd prepare {node-name}:{disk}[:{path/to/journal}]

ceph-deploy osd prepare osdserver1:sdb:/dev/ssd1

ceph-deploy osd activate {node-name}:{path/to/disk}[:{path/to/journal}]

ceph-deploy osd activate osdserver1:/dev/sdb1:/dev/ssd1

把改過的配置文件分發給集羣內各主機

ceph-deploy config push {host-name [host-name]...}

CRUSH映射

ceph osd getcrushmap -o MAP   #獲取一個CRUSH映射

crushtool -d MAP -o MAP.TXT   #反編譯一個CRUSH映射

crushtool -c MAP.TXT -o MAP   #編譯一個CRUSH映射

ceph osd setcrushmap -i MAP    #設置一個CRUSH映射

塊設備的一些命令

單位爲M,默認在rbd pool中

建立塊設備:rbd create {image-name}  --size {megabytes}  --pool {pool-name}

列出塊設備:rbd ls {poolname} -l

檢索塊信息:rbd --image {image-name} info

更改塊大小:rbd resize --image {image-name} --size {megabytes}

刪除塊設備:rbd rm {image-name}

映射塊設備:rbd map {image-name} --pool {pool-name} --id {user-name}

查看已映射塊設備:rbd showmapped

取消映射:rbd unmap /dev/rbd/{poolname}/{imagename}

快照和克隆相關命令

建立快照:

rbd --pool {pool-name} snap create --snap {snap-name} {image-name}

rbd snap create {pool-name}/{image-name}@{snap-name}

快照回滾:

rbd --pool {pool-name} snap rollback --snap {snap-name} {image-name}

rbd snap rollback {pool-name}/{image-name}@{snap-name}



清除快照:

rbd --pool {pool-name} snap purge {image-name}

rbd snap purge {pool-name}/{image-name}

刪除快照:

rbd --pool {pool-name} snap rm --snap {snap-name} {image-name}

rbd snap rm {pool-name}/{image-name}@{snap-name}

列出快照:

rbd --pool {pool-name} snap ls {image-name}

rbd snap ls {pool-name}/{image-name}

保護快照:

rbd --pool {pool-name} snap protect --image {image-name} --snap {snapshot-name}

rbd snap protect {pool-name}/{image-name}@{snapshot-name}

取消保護快照:

rbd --pool {pool-name} snap unprotect --image {image-name} --snap {snapshot-name}

rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}

快照克隆

rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}

查看快照的克隆

rbd --pool {pool-name} children --image {image-name} --snap {snap-name}

rbd children {pool-name}/{image-name}@{snapshot-name}

RGW對象存儲
建立

cceph-deploy rgw create node-1

CephFS文件存儲
建立mds服務

ceph-deploy mds create node-1 node-2 node-3   

[root@node-1 ceph-deploy]# ceph osd pool create cephfs_metadata 16 16
pool 'cephfs_metadata' created
[root@node-1 ceph-deploy]# ceph osd pool create cephfs_data 16 16
pool 'cephfs_data' created

[root@node-1 ceph-deploy]# ceph fs new cephfs-demo cephfs_metadata cephfs_data
new fs with metadata pool 6 and data pool 7
[root@node-1 ceph-deploy]# 

[root@node-1 ceph-deploy]# ceph fs ls
name: cephfs-demo, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@node-1 ceph-deploy]# ceph -s
  cluster:
    id:     c16b9145-7216-4058-8bfb-c9b7b2b702de
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node-1,node-2,node-3 (age 46m)
    mgr: node-1(active, since 46m), standbys: node-2, node-3
    mds: cephfs-demo:1 {0=node-2=up:active} 2 up:standby
    osd: 3 osds: 3 up (since 2w), 3 in (since 2w)
    rgw: 1 daemon active (node-1)
 
  task status:
    scrub status:
        mds.node-2: idle
 
  data:
    pools:   7 pools, 288 pgs
    objects: 213 objects, 3.5 KiB
    usage:   3.0 GiB used, 147 GiB / 150 GiB avail
    pgs:     288 active+clean

內核級別掛載,性能高一點

mkdir /mnt/cephfs
[root@node-1 ceph-deploy]# mount -t ceph 172.16.10.224:6789:/ /mnt/cephfs/ -o name=admin
[root@node-1 ceph-deploy]# df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              3.9G     0  3.9G   0% /dev
tmpfs                 3.9G     0  3.9G   0% /dev/shm
tmpfs                 3.9G  8.9M  3.9G   1% /run
tmpfs                 3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda3             211G  1.8G  210G   1% /
/dev/sda1            1014M  141M  874M  14% /boot
tmpfs                 783M     0  783M   0% /run/user/0
tmpfs                 3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-0
172.16.10.224:6789:/   47G     0   47G   0% /mnt/cephfs

用戶級別掛載

安裝客戶端
yum -y install ceph-fuse
mkdir /mnt/ceph-fuse
[root@node-1 ceph-deploy]# ceph-fuse -n client.admin -m 172.16.10.224:6789,172.16.10.225:6789,172.16.10.226:6789 /mnt/ceph-fuse
2020-11-17 17:54:20.511 7eff93888f80 -1 init, newargv = 0x5571a711e340 newargc=9ceph-fuse[29325]: starting ceph client

ceph-fuse[29325]: starting fuse
[root@node-1 ceph-deploy]# df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              3.9G     0  3.9G   0% /dev
tmpfs                 3.9G     0  3.9G   0% /dev/shm
tmpfs                 3.9G  9.0M  3.9G   1% /run
tmpfs                 3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda3             211G  1.9G  210G   1% /
/dev/sda1            1014M  141M  874M  14% /boot
tmpfs                 783M     0  783M   0% /run/user/0
tmpfs                 3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-0
172.16.10.224:6789:/   47G     0   47G   0% /mnt/cephfs
ceph-fuse              47G     0   47G   0% /mnt/ceph-fuse


OSD擴容和換盤
橫向擴容增長節點
縱向擴容增長容量

[root@node-1 ceph-deploy]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.14639 root default                            
-3       0.04880     host node-1                         
 0   hdd 0.04880         osd.0       up  1.00000 1.00000 
-5       0.04880     host node-2                         
 1   hdd 0.04880         osd.1       up  1.00000 1.00000 
-7       0.04880     host node-3                         
 2   hdd 0.04880         osd.2       up  1.00000 1.00000

清理有分區的磁盤

ceph-deploy disk zap node-1 /dev/sdc
原理就是用dd把分區數據都刷掉

增長磁盤

ceph-deploy osd  create node-1 --data /dev/sdc

增長osd會使PG移動,消耗性能,因此擴容osd須要一個一個的擴容,減小對業務的影響

查看osd延時
ceph osd perf

刪除osd
ceph osd out osd.5
等信息同步完再刪
ceph osd crush rm osd.5
ceph osd rm osd.5
ceph author rm osd.5

RBD高級功能

建立

[root@node-1 ~]# rbd create ceph-demo/ceph-trash.img --size 10G
[root@node-1 ~]# rbd info ceph-demo/ceph-trash.img
rbd image 'ceph-trash.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 861f92bbad7f
        block_name_prefix: rbd_data.861f92bbad7f
        format: 2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        op_features: 
        flags: 
        create_timestamp: Wed Nov 18 10:57:52 2020
        access_timestamp: Wed Nov 18 10:57:52 2020
        modify_timestamp: Wed Nov 18 10:57:52 2020

刪除   

[root@node-1 ~]# rbd rm ceph-demo/ceph-trash.img
Removing image: 100% complete...done.

設置回收機制

[root@node-1 ~]# rbd create ceph-demo/ceph-trash.img --size 10G
[root@node-1 ~]# rbd trash move ceph-demo/ceph-trash.img --expires-at 20201119
[root@node-1 ~]# rbd trash -p ceph-demo ls
8640e50e08fb ceph-trash.img

回收回來,防止誤刪除

[root@node-1 ~]# rbd trash restore -p ceph-demo 8640e50e08fb
[root@node-1 ~]# rbd -p ceph-demo ls
ceph-trash.img
rbd-demo.img

建立塊


映射到本地文件系統  

ceph-deploy osd  create node-1 --data /dev/sdc

[root@node-1 ~]# rbd device map ceph-demo/rbd-test.img
/dev/rbd1

格式化
mkfs.ext4 /dev/rbd1
mount /dev/rbd0 /media
touch test.txt

建立快照

[root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@snap_20201118
[root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME          SIZE   PROTECTED TIMESTAMP                
     4 snap_20201118 10 GiB           Wed Nov 18 11:15:23 2020

數據恢復
刪除test.txt

rbd snap rollback ceph-demo/rbd-test.img@snap_20201118
rbd snap ls ceph-demo/rbd-test.img

卸載以後,從新掛載
umount /media
mount /dev/rbd1 /media

建立快照
[root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@template
[root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME          SIZE   PROTECTED TIMESTAMP                
     4 snap_20201118 10 GiB           Wed Nov 18 11:15:23 2020 
     5 template      10 GiB           Wed Nov 18 11:29:21 2020 

保護快照
[root@node-1 ~]# rbd snap protect ceph-demo/rbd-test.img@template
會發現沒法刪除了
[root@node-1 ~]# rbd snap rm ceph-demo/rbd-test.img@template
Removing snap: 0% complete...failed.2020-11-18 11:32:20.904 7f2cef31ec80 -1 librbd::Operations: snapshot is protected

rbd: snapshot 'template' is protected from removal.

快照克隆
[root@node-1 ~]# rbd clone ceph-demo/rbd-test.img@template ceph-demo/vm1-clone.img
[root@node-1 ~]# rbd -p ceph-demo ls
ceph-trash.img
rbd-demo.img
rbd-test.img
vm1-clone.img

使用克隆快照
rbd device map ceph-demo/vm1-clone.img
mount /dev/rbd2 /mnt 

查看鏡像建立了幾個快照
[root@node-1 ~]# rbd children ceph-demo/rbd-test.img@template
ceph-demo/vm1-clone.img

解除複製關係

rbd flatten ceph-demo/vm1-clone.img

RBD導入導出

建立快照
[root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@snap-demo
[root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME          SIZE   PROTECTED TIMESTAMP                
     4 snap_20201118 10 GiB           Wed Nov 18 11:15:23 2020 
     5 template      10 GiB yes       Wed Nov 18 11:29:21 2020 
     6 snap-demo     10 GiB           Wed Nov 18 15:17:24 2020 
[root@node-1 ~]# 

導出備份
[root@node-1 ~]# rbd export ceph-demo/rbd-test.img@snap-demo /root/rbd-test.img
Exporting image: 100% complete...done.

導入
[root@node-1 ~]# rbd import rbd-test.img ceph-demo/rbd-test-new.img
Importing image: 100% complete...done.

[root@node-1 ~]# rbd -p ceph-demo ls
ceph-trash.img
rbd-demo.img
rbd-test-new.img
rbd-test.img
vm1-clone.img

而後就能夠用map掛載了,可是若是在centos7上作須要取消新特性才能夠掛載

ceph配置dashboard管理
安裝軟件包

yum -y install ceph-mgr-dashboard

查看模塊

ceph mgr module ls |less

啓動模塊

ceph mgr module enable dashboard --force

ceph mgr module ls |less
...
    "enabled_modules": [
        "dashboard",
        "iostat",
        "restful"
    ]

配置
生成證書

[root@node-1 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created

配置dashboard

[root@node-1 ~]# ceph config set mgr mgr/dashboard/server_addr 172.16.10.224
[root@node-1 ~]# ceph config set mgr mgr/dashboard/server_port 8080
[root@node-1 ~]# ceph config set mgr mgr/dashboard/ssl_server_port 8443
查看
root@node-1 ~]# ceph mgr services
{
    "dashboard": "https://node-1:8443/"
}


啓用一個用戶,配置用戶名密碼,授予一個角色

[root@node-1 ~]# ceph dashboard ac-user-create cephadmin cephpassword administrator
{"username":
 "cephadmin", "lastUpdate": 1605688571, "name": null, "roles": 
["administrator"], "password": 
"$2b$12$aQh18pOu5xSeu4DB7LSaseUyf7TpyRfiA.LiPQbipta6EnAlc1hNy", "email":
 null}

訪問 https://ip:8443

圖片.png

而後就能夠訪問dashboard了。

相關文章
相關標籤/搜索