1. 程式人生 > >ceph叢集reweight調整各osd權重使各osd pg數均衡

ceph叢集reweight調整各osd權重使各osd pg數均衡

ceph中各osd的pg數量是近似均勻的,可以認為各pg下的資料容量大致相等,因此從原理上來說保證各osd pg相等,則各osd上的磁碟使用量也差不多相同,但是由於演算法做不到絕對均勻的原因某些osd上的pg數會相差比較大,這樣某些osd上的空間使用量就會比較多。建議是ceph部署完成,各pool也建立完成後,主動手工觀察,通過命令調整osd的權重來調整osd上的pg數

網上找的命令統計各osd上所有pg數: 

ceph pg dump | awk ' 

 /^pg_stat/ { col=1; while($col!="up") {col++}; col++ } 

 /^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0; 

 up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) } 

 for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];} 

END { 

 printf("\n"); 

 printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n"); 

 for (i in poollist) printf("--------"); printf("----------------\n"); 

 for (i in osdlist) { printf("osd.%i\t", i); sum=0; 

 for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; poollist[j]+=array[i,j] }; printf("| %i\n",sum) } 

 for (i in poollist) printf("--------"); printf("----------------\n"); 

 printf("SUM :\t"); for (i in poollist) printf("%s\t",poollist[i]); printf("|\n"); 

}'

上面這個是獲取各osd所有pool的pg數,其實我們只關注default.rgw.buckets.data這個pool,其他pool資料很少,我們通過ceph df知道default.rgw.buckets.data的pool id是23,通過一個更簡單命令得到23號pool在各osd上的pg數排序:

ceph pg dump|grep '^23\.'|awk -F ' ' '{print $1, $15}'|awk -F "[ ]|[[]|[,]|[]]" '{print $3, $4}'|tr -s ' ' '\n'|sort|uniq -c|sort -n

輸出如下:

     95 1
     95 312
     96 252
     99 177
     99 265
     99 62
    101 121
    101 261

......

    132 102
    132 105
    132 179
    132 253
    132 256
    133 111
    133 115
    133 151
    133 203
    133 259
    133 271
    133 292
    134 257
    134 302
    134 61
    135 220

可以看到最少的osd.1上面只有95個pg,最多的osd.220上有135個pg,調整pg的命令:

ceph osd reweight-by-pg 105 default.rgw.buckets.data

注:105這個數字貌似不起作用,ceph內部會自己調整

由於每次手動觀察比較麻煩,可以通過計算每次調整後的個osd上pg數的方差來判斷效果,如果每次反差在減小,說明分佈相對更均勻一些:

ceph pg dump|grep '^23\.'|awk -F ' ' '{print $1, $15}'|awk -F "[ ]|[[]|[,]|[]]" '{print $3, $4}'|tr -s ' ' '\n'|sort|uniq -c|sort -r|awk '{printf("%s\n", $1)}'|awk '{x[NR]=$0;s+=$0;n++} END{a=s/n;for(i in x) {ss += (x[i]-a)^2} sd = sqrt(ss/n); print "SD = "sd}'
dumped all in format plain
SD = 8.71607
[[email protected] ~]# 

相關推薦

ceph叢集reweight調整osd權重使osd pg均衡

ceph中各osd的pg數量是近似均勻的,可以認為各pg下的資料容量大致相等,因此從原理上來說保證各osd pg相等,則各osd上的磁碟使用量也差不多相同,但是由於演算法做不到絕對均勻的原因某些osd上的pg數會相差比較大,這樣某些osd上的空間使用量就會比較多。建議是ce

ceph叢集單個osd超95%導致叢集無法讀寫叢集恢復過程

ceph新手,最近遇到的一個問題,已解決,請參考,文中有錯誤的話歡迎指正 故障描述 openstack環境中若干臺虛擬機器無法正常操作,嘗試從horizon中重啟虛擬機器,重啟過程中虛擬機器狀態一直停留在”powering on”的狀態,無法進入系統

ceph儲存 ceph叢集osd故障自我檢測

心跳是用於OSD節點間檢測對方是否故障的,以便及時發現故障節點進入相應的故障處理流程。故障檢測需要在故障的發現時間和心跳帶來的負載之間做權衡,如果心跳頻率太高則過多的心跳報文會影響系統性能,如果心跳頻率過低則會延長髮現故障節點的時間,從而影響系統的可用性。 建立連線 在大規

Linux叢集儲存——day5——Ceph叢集上部署Linux系統、Ceph檔案系統、Ceph的物件儲存系統

Ceph叢集儲存的應用    紅帽的Linux已經把Ceph整合到核心中了,可以直接把作業系統裝在分佈儲存檔案中。     將虛擬機器的Linux作業系統安裝在Ceph叢集中:     0. 如同Ceph叢集進行初期環境部署。

部署Ceph叢集--jluocc

一 前言  分散式檔案系統(Distributed File System):檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連.分散式檔案系統的設計基於C/S模式 1,什麼是Ceph?Ceph:是一個 Linux PB 級分散式檔案系統特點:具有高擴充套件,高可用,高

CEPH叢集操作入門

參考文件: CEPH官網叢集操作文件   概述 Ceph儲存叢集是所有Ceph部署的基礎。 基於RADOS,Ceph儲存叢集由兩種型別的守護程序組成:Ceph OSD守護程序(OSD)將資料作為物件儲存在儲存節點上; Ceph Monitor(MON)維護叢集對映的主副本

CEPH叢集操作入門--部署和運維

部署 預檢 安裝Ceph 建立群集 新增/刪除監視器 金鑰管理 新增/刪除OSD 新增/刪除MDS 清除主機 管理任務   運維 操作群集 健康檢查 監控群集 監控OSD和PG 使用者管理 修復PG不一致 資料放置概述 池 糾刪碼 分級快取 Plac

CEPH叢集操作入門--配置

https://www.cnblogs.com/luxiaodai/p/10006036.ht CEPH叢集操作入門--配置l CEPH叢集操作入門--配置 閱讀目錄(Content) 概述 配置 儲存裝置 概述

Ceph叢集報錯解決方案筆記

當前Ceph版本和CentOS版本: [[email protected] ceph]# ceph -v ceph version 13.2.2 (02899bfda814146b021136e9d8e80eba494e1126) mimic (stable) [[emai

centos7下基於docker部署ceph叢集及遇到的問題

Ceph是一個統一的分散式儲存系統,提供較好的效能、可靠性和可擴充套件性。 本文使用三臺伺服器進行安裝,vm1,vm2,vm4,及每臺伺服器上所要安裝的內容 vm1 vm2 vm3 monitor monitor monitor

使用ceph-ansible部署docker化的ceph叢集

安裝ansible 關於安裝ansible,這裡就不再累述,請參考官方文件。 下載ceph-ansible git clone https://github.com/ceph/ceph-ansible.git cd ceph-ansible # 關於分支說明請

Ceph osd啟動報錯osd init failed (36) File name too long

1、問題現象: 在Ceph的OSD節點上,啟動OSD程序失敗,在其日誌中看到如下報錯資訊: 2017-02-14 16:26:13.558535 7fe3883f58c0 0 filestore(/var/lib/ceph/osd/ceph-1) mount:

配置ceph叢集節點間的SSH免密登入快速方法

共有三個節點:ceph1,ceph2,ceph3 前提條件:已經配置好三個節點的hosts檔案,如: [[email protected] ~]# cat /etc/hosts 192.168

**VMware Centos7部署三節點ceph叢集**

VMware Centos7部署三節點ceph叢集 一、環境配置 【使用VMware安裝CentOS7】請參考https://blog.csdn.net/hui_2016/article/details/68927487 【VMware上centos7克隆多個虛擬機器】請參考https:

在Kubernetes叢集中用Helm託管安裝Ceph叢集並提供後端儲存_Kubernetes中文社群

在Kubernetes叢集中用Helm託管安裝Ceph叢集並提供後端儲存 本文翻譯自Ceph官方文件,括號內的內容為註釋。 安裝 ceph-helm 專案可讓你在Kubernetes 環境以託管方式部署Ceph . 本文件假定Kubernetes 環境已經可用。 當前的限制 Public網路

Ceph叢集部署實戰

建議系統核心升級到4.x,不然容易出各種問題,不要給自己找不必要的麻煩。 參考文章:Centos7 核心編譯升級到指定的版本 https://blog.csdn.net/happyfreeangel/article/details/85088706 [[email protec

ceph儲存 ceph叢集效能檢視工具iostat

rrqm/s:每秒這個裝置相關的讀取請求有多少被Merge了(當系統呼叫需要讀取資料的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的資料,FS會將這個請求合併Merge);wrqm/s:每秒這個裝置相關的寫入請求有多少被Merge了。 rsec/s:每秒讀取的扇區數; w

ceph叢集 ceph叢集mkfs以及mount使用示例

模式: data=writeback 效能,高; 寫回模式,先寫metadata(代表日誌),後寫data data=ordered   效能,中; 命令模式,[先寫data,後寫metadata]==事務,最後寫metadata journal data=journal   效能,低: 日誌模式, 先日誌(

ceph叢集 Centos7下RPM包製作說明

 Centos RPM包製作說明 準備打包環境 1、centos系統下使用如下命令安裝rpmbuild #yum install rpmbuild 2、rpmbuild的工作目錄如下, ~/rpmbuild ~/rpmbuild/SOURCES ~/rp

Ceph叢集的塊裝置對映到本地目錄的過程

 客戶端使用儲存下來的金鑰能夠對映雲硬碟池rbd001上的雲硬碟,許可權為讀寫。 # cd ~ 把從web端下載好的金鑰檔案client.rbdmix.keyring和配置檔案ceph.conf