<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ceph分布式存儲(chǔ)日常運(yùn)維管理

          共 7270字,需瀏覽 15分鐘

           ·

          2020-07-27 00:25

          作者:過(guò)眼風(fēng)來(lái)源:https://www.cnblogs.com/yuezhimi

          634b6bfa24236f862588f322fca79560.webp


          常見(jiàn)問(wèn)題

          nearfull osd(s) or pool(s) nearfull 此時(shí)說(shuō)明部分osd的存儲(chǔ)已經(jīng)超過(guò)閾值,mon會(huì)監(jiān)控ceph集群中OSD空間使用情況。如果要消除WARN,可以修改這兩個(gè)參數(shù),提高閾值,但是通過(guò)實(shí)踐發(fā)現(xiàn)并不能解決問(wèn)題,可以通過(guò)觀察osd的數(shù)據(jù)分布情況來(lái)分析原因。

          配置文件設(shè)置閾值

          "mon_osd_full_ratio":"0.95","mon_osd_nearfull_ratio":"0.85"

          自動(dòng)處理

          ceph osd reweight-by-utilizationceph osd reweight-by-pg 105 cephfs_data(pool_name)

          手動(dòng)處理

          ceph osd reweight osd.20.8

          全局處理

          ceph mgr module lsceph mgr module enable balancerceph balancer onceph balancer mode crush-compatceph config-key set"mgr/balancer/max_misplaced":"0.01"

          PG 故障狀態(tài)

          PG狀態(tài)概述 一個(gè)PG在它的生命周期的不同時(shí)刻可能會(huì)處于以下幾種狀態(tài)中:

          1. Creating(創(chuàng)建中) 在創(chuàng)建POOL時(shí),需要指定PG的數(shù)量,此時(shí)PG的狀態(tài)便處于creating,意思是Ceph正在創(chuàng)建PG。

          2. Peering(互聯(lián)中) peering的作用主要是在PG及其副本所在的OSD之間建立互聯(lián),并使得OSD之間就這些PG中的object及其元數(shù)據(jù)達(dá)成一致。

          3. Active(活躍的) 處于該狀態(tài)意味著數(shù)據(jù)已經(jīng)完好的保存到了主PG及副本PG中,并且Ceph已經(jīng)完成了peering工作。

          4. Clean(整潔的) 當(dāng)某個(gè)PG處于clean狀態(tài)時(shí),則說(shuō)明對(duì)應(yīng)的主OSD及副本OSD已經(jīng)成功互聯(lián),并且沒(méi)有偏離的PG。也意味著Ceph已經(jīng)將該P(yáng)G中的對(duì)象按照規(guī)定的副本數(shù)進(jìn)行了復(fù)制操作。

          5. Degraded(降級(jí)的) 當(dāng)某個(gè)PG的副本數(shù)未達(dá)到規(guī)定個(gè)數(shù)時(shí),該P(yáng)G便處于degraded狀態(tài),例如:

          6. 在客戶(hù)端向主OSD寫(xiě)入object的過(guò)程,object的副本是由主OSD負(fù)責(zé)向副本OSD寫(xiě)入的,直到副本OSD在創(chuàng)建object副本完成,并向主OSD發(fā)出完成信息前,該P(yáng)G的狀態(tài)都會(huì)一直處于degraded狀態(tài)。又或者是某個(gè)OSD的狀態(tài)變成了down,那么該OSD上的所有PG都會(huì)被標(biāo)記為degraded。當(dāng)Ceph因?yàn)槟承┰驘o(wú)法找到某個(gè)PG內(nèi)的一個(gè)或多個(gè)object時(shí),該P(yáng)G也會(huì)被標(biāo)記為degraded狀態(tài)。此時(shí)客戶(hù)端不能讀寫(xiě)找不到的對(duì)象,但是仍然能訪問(wèn)位于該P(yáng)G內(nèi)的其他object。

          7. Recovering(恢復(fù)中) 當(dāng)某個(gè)OSD因?yàn)槟承┰騞own了,該OSD內(nèi)PG的object會(huì)落后于它所對(duì)應(yīng)的PG副本。而在該OSD重新up之后,該OSD中的內(nèi)容必須更新到當(dāng)前狀態(tài),處于此過(guò)程中的PG狀態(tài)便是recovering。

          8. Backfilling(回填) 當(dāng)有新的OSD加入集群時(shí),CRUSH會(huì)把現(xiàn)有集群內(nèi)的部分PG分配給它。這些被重新分配到新OSD的PG狀態(tài)便處于backfilling。

          9. Remapped(重映射) 當(dāng)負(fù)責(zé)維護(hù)某個(gè)PG的acting set變更時(shí),PG需要從原來(lái)的acting set遷移至新的acting set。這個(gè)過(guò)程需要一段時(shí)間,所以在此期間,相關(guān)PG的狀態(tài)便會(huì)標(biāo)記為remapped。

          10. Stale(陳舊的) 默認(rèn)情況下,OSD守護(hù)進(jìn)程每半秒鐘便會(huì)向Monitor報(bào)告其PG等相關(guān)狀態(tài),如果某個(gè)PG的主OSD所在acting set沒(méi)能向Monitor發(fā)送報(bào)告,或者其他的Monitor已經(jīng)報(bào)告該OSD為down時(shí),該P(yáng)G便會(huì)被標(biāo)記為stale。

          OSD狀態(tài)

          單個(gè)OSD有兩組狀態(tài)需要關(guān)注,其中一組使用in/out標(biāo)記該OSD是否在集群內(nèi),另一組使用up/down標(biāo)記該OSD是否處于運(yùn)行中狀態(tài)。兩組狀態(tài)之間并不互斥,換句話說(shuō),當(dāng)一個(gè)OSD處于“in”狀態(tài)時(shí),它仍然可以處于up或down的狀態(tài)。

          1. OSD狀態(tài)為in且up 這是一個(gè)OSD正常的狀態(tài),說(shuō)明該OSD處于集群內(nèi),并且運(yùn)行正常。

          2. OSD狀態(tài)為in且down 此時(shí)該OSD尚處于集群中,但是守護(hù)進(jìn)程狀態(tài)已經(jīng)不正常,默認(rèn)在300秒后會(huì)被踢出集群,狀態(tài)進(jìn)而變?yōu)閛ut且down,之后處于該OSD上的PG會(huì)遷移至其它OSD。

          3. OSD狀態(tài)為out且up 這種狀態(tài)一般會(huì)出現(xiàn)在新增OSD時(shí),意味著該OSD守護(hù)進(jìn)程正常,但是尚未加入集群。

          4. OSD狀態(tài)為out且down 在該狀態(tài)下的OSD不在集群內(nèi),并且守護(hù)進(jìn)程運(yùn)行不正常,CRUSH不會(huì)再分配PG到該OSD上。

          集群監(jiān)控管理

          集群整體運(yùn)行狀態(tài)

          # ceph -s cluster:    id:8230a918-a0de-4784-9ab8-cd2a2b8671d0    health: HEALTH_WARN            application not enabled on 1 pool(s)
          services: mon:3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 27h) mgr: cephnode01(active, since 53m), standbys: cephnode03, cephnode02 osd:4 osds:4 up (since 27h),4in(since 19h) rgw:1 daemon active (cephnode01)
          data: pools:6 pools,96 pgs objects:235 objects,3.6KiB usage:4.0GiB used,56GiB/60GiB avail pgs:96 active+clean
          id:集群IDhealth:集群運(yùn)行狀態(tài),這里有一個(gè)警告,說(shuō)明是有問(wèn)題,意思是pg數(shù)大于pgp數(shù),通常此數(shù)值相等。monMonitors運(yùn)行狀態(tài)。osdOSDs運(yùn)行狀態(tài)。mgrManagers運(yùn)行狀態(tài)。mdsMetadatas運(yùn)行狀態(tài)。pools:存儲(chǔ)池與PGs的數(shù)量。objects:存儲(chǔ)對(duì)象的數(shù)量。usage:存儲(chǔ)的理論用量。pgsPGs的運(yùn)行狀態(tài)
          ~]$ ceph -w~]$ ceph health detail
          pg狀態(tài)~]$ ceph pg dump~]$ ceph pg stat
          pool狀態(tài)~]$ ceph osd pool stats~]$ ceph osd pool stats
          osd狀態(tài)~]$ ceph osd stat~]$ ceph osd dump~]$ ceph osd tree~]$ ceph osd df
          Monitor狀態(tài)和查看仲裁狀態(tài)~]$ ceph mon stat~]$ ceph mon dump~]$ ceph quorum_status
          集群空間用量~]$ ceph df~]$ ceph df detail

          集群配置管理(臨時(shí)和全局,服務(wù)平滑重啟)

          有時(shí)候需要更改服務(wù)的配置,但不想重啟服務(wù),或者是臨時(shí)修改。這時(shí)候就可以使用tell和daemon子命令來(lái)完成此需求。

          查看運(yùn)行配置命令格式:# ceph daemon {daemon-type}.{id} config show 
          命令舉例:# ceph daemon osd.0 config show

          tell子命令格式

          使用 tell 的方式適合對(duì)整個(gè)集群進(jìn)行設(shè)置,使用 * 號(hào)進(jìn)行匹配,就可以對(duì)整個(gè)集群的角色進(jìn)行設(shè)置。而出現(xiàn)節(jié)點(diǎn)異常無(wú)法設(shè)置時(shí)候,只會(huì)在命令行當(dāng)中進(jìn)行報(bào)錯(cuò),不太便于查找。

          命令格式:# ceph tell {daemon-type}.{daemon id or *} injectargs --{name}={value} [--{name}={value}]命令舉例:# ceph tell osd.0 injectargs --debug-osd 20 --debug-ms 1
          • daemon-type:為要操作的對(duì)象類(lèi)型如osd、mon、mds等。

          • daemon id:該對(duì)象的名稱(chēng),osd通常為0、1等,mon為ceph -s顯示的名稱(chēng),這里可以輸入*表示全部。

          • injectargs:表示參數(shù)注入,后面必須跟一個(gè)參數(shù),也可以跟多個(gè)

          daemon子命令

          使用 daemon 進(jìn)行設(shè)置的方式就是一個(gè)個(gè)的去設(shè)置,這樣可以比較好的反饋,此方法是需要在設(shè)置的角色所在的主機(jī)上進(jìn)行設(shè)置。

          命令格式:# ceph daemon {daemon-type}.{id} config set {name}={value}命令舉例:# ceph daemon mon.ceph-monitor-1 config set mon_allow_pool_delete false

          集群操作

          1、啟動(dòng)所有守護(hù)進(jìn)程# systemctl start ceph.target2、按類(lèi)型啟動(dòng)守護(hù)進(jìn)程# systemctl start ceph-mgr.target# systemctl start ceph-osd@id# systemctl start ceph-mon.target# systemctl start ceph-mds.target# systemctl start ceph-radosgw.target

          添加和刪除osd

          添加1、格式化磁盤(pán)ceph-volume lvm zap /dev/sd2、進(jìn)入到ceph-deploy執(zhí)行目錄/my-cluster,添加OSD# ceph-deploy osd create --data /dev/sd $hostname
          刪除1、調(diào)整osdcrush weight0ceph osd crush reweight osd.<ID>0.02、將osd進(jìn)程stopsystemctl stop ceph-osd@<ID>3、將osd設(shè)置outceph osd out<ID>4、立即執(zhí)行刪除OSD中數(shù)據(jù)ceph osd purge osd.<ID>--yes-i-really-mean-it5、卸載磁盤(pán)umount /var/lib/ceph/osd/ceph-?

          擴(kuò)容PG

          ceph osd pool set{pool-name} pg_num 128ceph osd pool set{pool-name} pgp_num 128
          注:1、擴(kuò)容大小取跟它接近的2的N次方。2、在更改pool的PG數(shù)量時(shí),需同時(shí)更改PGP的數(shù)量。PGP是為了管理placement而存在的專(zhuān)門(mén)的PG,它和PG的數(shù)量應(yīng)該保持一致。如果你增加pool的pg_num,就需要同時(shí)增加pgp_num,保持它們大小一致,這樣集群才能正常rebalancing。

          Pool操作

          列出存儲(chǔ)池ceph osd lspools
          創(chuàng)建存儲(chǔ)池命令格式:# ceph osd pool create {pool-name} {pg-num} [{pgp-num}]命令舉例:# ceph osd pool create rbd 32 32
          設(shè)置存儲(chǔ)池配額命令格式:# ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]命令舉例:# ceph osd pool set-quota rbd max_objects 10000
          刪除存儲(chǔ)池ceph osd pool delete{pool-name}[{pool-name}--yes-i-really-really-mean-it]
          重命名存儲(chǔ)池ceph osd pool rename {current-pool-name}{new-pool-name}
          查看存儲(chǔ)池統(tǒng)計(jì)信息rados df
          給存儲(chǔ)池做快照ceph osd pool mksnap {pool-name}{snap-name}
          刪除存儲(chǔ)池的快照ceph osd pool rmsnap {pool-name}{snap-name}
          獲取存儲(chǔ)池選項(xiàng)值ceph osd pool get{pool-name}{key}
          調(diào)整存儲(chǔ)池選項(xiàng)值ceph osd pool set{pool-name}{key}{value}size:設(shè)置存儲(chǔ)池中的對(duì)象副本數(shù),詳情參見(jiàn)設(shè)置對(duì)象副本數(shù)。僅適用于副本存儲(chǔ)池。min_size:設(shè)置 I/O 需要的最小副本數(shù),詳情參見(jiàn)設(shè)置對(duì)象副本數(shù)。僅適用于副本存儲(chǔ)池。pg_num:計(jì)算數(shù)據(jù)分布時(shí)的有效 PG 數(shù)。只能大于當(dāng)前 PG 數(shù)。pgp_num:計(jì)算數(shù)據(jù)分布時(shí)使用的有效 PGP 數(shù)量。小于等于存儲(chǔ)池的 PG 數(shù)。hashpspool:給指定存儲(chǔ)池設(shè)置/取消 HASHPSPOOL 標(biāo)志。target_max_bytes:達(dá)到 max_bytes 閥值時(shí)會(huì)觸發(fā)Ceph沖洗或驅(qū)逐對(duì)象。target_max_objects:達(dá)到 max_objects 閥值時(shí)會(huì)觸發(fā)Ceph沖洗或驅(qū)逐對(duì)象。scrub_min_interval:在負(fù)載低時(shí),洗刷存儲(chǔ)池的最小間隔秒數(shù)。如果是0,就按照配置文件里的 osd_scrub_min_interval 。scrub_max_interval:不管集群負(fù)載如何,都要洗刷存儲(chǔ)池的最大間隔秒數(shù)。如果是0,就按照配置文件里的 osd_scrub_max_interval 。deep_scrub_interval:“深度”洗刷存儲(chǔ)池的間隔秒數(shù)。如果是0,就按照配置文件里的 osd_deep_scrub_interval 。
          獲取對(duì)象副本數(shù)ceph osd dump| grep 'replicated size'

          用戶(hù)管理

          Ceph 把數(shù)據(jù)以對(duì)象的形式存于各存儲(chǔ)池中。Ceph 用戶(hù)必須具有訪問(wèn)存儲(chǔ)池的權(quán)限才能夠讀寫(xiě)數(shù)據(jù)。另外,Ceph 用戶(hù)必須具有執(zhí)行權(quán)限才能夠使用 Ceph 的管理命令。

          查看用戶(hù)信息查看所有用戶(hù)信息# ceph auth list獲取所有用戶(hù)的key與權(quán)限相關(guān)信息# ceph auth get client.admin如果只需要某個(gè)用戶(hù)的key信息,可以使用pring-key子命令# ceph auth print-key client.admin 
          添加用戶(hù)# ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'# ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'# ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring# ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key
          修改用戶(hù)權(quán)限# ceph auth caps client.john mon 'allow r' osd 'allow rw pool=liverpool'# ceph auth caps client.paul mon 'allow rw' osd 'allow rwx pool=liverpool'# ceph auth caps client.brian-manager mon 'allow *' osd 'allow *'# ceph auth caps client.ringo mon ' ' osd ' '
          刪除用戶(hù)# ceph auth del {TYPE}.{ID}其中, {TYPE} 是 client,osd,mon 或 mds 的其中一種。{ID} 是用戶(hù)的名字或守護(hù)進(jìn)程的 ID 。

          增加和刪除Monitor

          一個(gè)集群可以只有一個(gè) monitor,推薦生產(chǎn)環(huán)境至少部署 3 個(gè)。Ceph 使用 Paxos 算法的一個(gè)變種對(duì)各種 map 、以及其它對(duì)集群來(lái)說(shuō)至關(guān)重要的信息達(dá)成共識(shí)。建議(但不是強(qiáng)制)部署奇數(shù)個(gè) monitor 。Ceph 需要 mon 中的大多數(shù)在運(yùn)行并能夠互相通信,比如單個(gè) mon,或 2 個(gè)中的 2 個(gè),3 個(gè)中的 2 個(gè),4 個(gè)中的 3 個(gè)等。初始部署時(shí),建議部署 3 個(gè) monitor。后續(xù)如果要增加,請(qǐng)一次增加 2 個(gè)。

          新增一個(gè)monitor# ceph-deploy mon create $hostname注意:執(zhí)行ceph-deploy之前要進(jìn)入之前安裝時(shí)候配置的目錄。/my-cluster
          刪除monitor# ceph-deploy mon destroy $hostname注意:確保你刪除某個(gè)Mon后,其余Mon仍能達(dá)成一致。如果不可能,刪除它之前可能需要先增加一個(gè)。

          - END -

          精彩文章推薦:

          10 分鐘部署一個(gè) Kubernetes 集群

          部署一套完整的Kubernetes高可用集群(二進(jìn)制)

          一次搞明白 K8s Kubelet 垃圾回收機(jī)制

          Nginx日志,原來(lái)其中還有這么多門(mén)道,長(zhǎng)知識(shí)了

          終于搞懂了服務(wù)器為啥產(chǎn)生大量的TIME_WAIT!

          10 個(gè)Linux Awk文本處理經(jīng)典案例12年老司機(jī)總結(jié)的 5 條面試忠告,終身受用



          點(diǎn)亮,服務(wù)器三年不宕機(jī)ab830762f8daffe50242bf37e67c7ddd.webp

          瀏覽 27
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人AV在线播放 | 国产日本在线视频 | 中国精品一区二区 | 日韩精品人妻无码 | 国产精品三级片在线观看 |