ceph-建立一個使用該rule-ssd規則的儲存池
luminous版本的ceph新增了一個功能crush class,這個功能又可以稱為磁碟智慧分組。因為這個功能就是根據磁碟型別自動的進行屬性的關聯,然後進行分類。無需手動修改crushmap,極大的減少了人為的操作。以前的操作有多麻煩可以看看:ceph crushmap
ceph中的每個osd裝置都可以選擇一個class型別與之關聯,預設情況下,在建立osd的時候會自動識別裝置型別,然後設定該裝置為相應的類。通常有三種class型別:hdd,ssd,nvme。
由於當前實驗環境下沒有ssd和nvme裝置,只好修改class標籤,假裝為有ssd裝置,然後進行實驗。
一,實驗環境
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[[email protected] ~]# ceph -v
ceph version 12.2.1 (3e7492b9ada8bdc9a5cd0feafd42fbca27f9c38e) luminous (stable)
二,修改crush class:
1,檢視當前叢集佈局:
[[email protected] ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.05878 root default
-3 0.01959 host node1
0 hdd 0.00980 osd.0 up 1.00000 1.00000
3 hdd 0.00980 osd.3 up 1.00000 1.00000
-5 0.01959 host node2
1 hdd 0.00980 osd.1 up 1.00000 1.00000
4 hdd 0.00980 osd.4 up 1.00000 1.00000
-7 0.01959 host node3
2 hdd 0.00980 osd.2 up 1.00000 1.00000
5 hdd 0.00980 osd.5 up 1.00000 1.00000
可以看到只有第二列為CLASS,只有hdd型別。
通過檢視crush class,確實只有hdd型別
[[email protected] ~]# ceph osd crush class ls
[
"hdd"
]
2,刪除osd.0,osd.1,osd.2的class:
[[email protected] ~]# for i in 0 1 2;doceph osd crush rm-device-class osd.$i;done
done removing class of osd(s): 0
done removing class of osd(s): 1
done removing class of osd(s): 2
再次通過命令ceph osd tree檢視osd.0,osd.1,osd.2的class
[[email protected] ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.05878 root default
-3 0.01959 host node1
0 0.00980 osd.0 up 1.00000 1.00000
3 hdd 0.00980 osd.3 up 1.00000 1.00000
-5 0.01959 host node2
1 0.00980 osd.1 up 1.00000 1.00000
4 hdd 0.00980 osd.4 up 1.00000 1.00000
-7 0.01959 host node3
2 0.00980 osd.2 up 1.00000 1.00000
5 hdd 0.00980 osd.5 up 1.00000 1.00000
可以發現osd.0,osd.1,osd.2的class為空
3,設定osd.0,osd.1,osd.2的class為ssd:
[[email protected] ~]# for i in 0 1 2;doceph osd crush set-device-class ssd osd.$i;done
set osd(s) 0 to class 'ssd'
set osd(s) 1 to class 'ssd'
set osd(s) 2 to class 'ssd'
再次通過命令ceph osd tree檢視osd.0,osd.1,osd.2的class
[[email protected] ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.05878 root default
-3 0.01959 host node1
3 hdd 0.00980 osd.3 up 1.00000 1.00000
0 ssd 0.00980 osd.0 up 1.00000 1.00000
-5 0.01959 host node2
4 hdd 0.00980 osd.4 up 1.00000 1.00000
1 ssd 0.00980 osd.1 up 1.00000 1.00000
-7 0.01959 host node3
5 hdd 0.00980 osd.5 up 1.00000 1.00000
2 ssd 0.00980 osd.2 up 1.00000 1.00000
可以看到osd.0,osd.1,osd.2的class變為ssd
再檢視一下crush class:
[[email protected] ~]# ceph osd crush class ls
[
"hdd",
"ssd"
]
可以看到class中多出了一個名為ssd的class
4,建立一個優先使用ssd裝置的crush rule:
建立了一個rule的名字為:rule-ssd,在root名為default下的rule
[[email protected] ~]# ceph osd crush rule create-replicated rule-ssd default host ssd
檢視叢集的rule:
[[email protected] ~]# ceph osd crush rule ls
replicated_rule
rule-ssd
可以看到多出了一個名為rule-ssd的rule
通過下面的命令下載叢集crushmap檢視有哪些變化:
[[email protected] ~]# ceph osd getcrushmap -o crushmap
20
[[email protected] ~]# crushtool -d crushmap -o crushmap
[[email protected] ~]# cat crushmap
# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54
# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class ssd
device 3 osd.3 class hdd
device 4 osd.4 class hdd
device 5 osd.5 class hdd
# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 region
type 10 root
# buckets
host node1 {
id -3 # do not change unnecessarily
id -4 class hdd # do not change unnecessarily
id -9 class ssd # do not change unnecessarily
# weight 0.020
alg straw2
hash 0 # rjenkins1
item osd.0 weight 0.010
item osd.3 weight 0.010
}
host node2 {
id -5 # do not change unnecessarily
id -6 class hdd # do not change unnecessarily
id -10 class ssd # do not change unnecessarily
# weight 0.020
alg straw2
hash 0 # rjenkins1
item osd.1 weight 0.010
item osd.4 weight 0.010
}
host node3 {
id -7 # do not change unnecessarily
id -8 class hdd # do not change unnecessarily
id -11 class ssd # do not change unnecessarily
# weight 0.020
alg straw2
hash 0 # rjenkins1
item osd.2 weight 0.010
item osd.5 weight 0.010
}
root default {
id -1 # do not change unnecessarily
id -2 class hdd # do not change unnecessarily
id -12 class ssd # do not change unnecessarily
# weight 0.059
alg straw2
hash 0 # rjenkins1
item node1 weight 0.020
item node2 weight 0.020
item node3 weight 0.020
}
# rules
rule replicated_rule {
id 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type host
step emit
}
rule rule-ssd {
id 1
type replicated
min_size 1
max_size 10
step take default class ssd
step chooseleaf firstn 0 type host
step emit
}
# end crush map
可以看到在root default下多了一行: id -12 class ssd。在rules下,多了一個rule rule-ssd其id為1
5,建立一個使用該rule-ssd規則的儲存池:
[[email protected] ~]# ceph osd pool create ssdpool 64 64 rule-ssd
pool 'ssdpool' created
檢視ssdpool的資訊可以看到使用的crush_rule 為1,也就是rule-ssd
[[email protected] ~]# ceph osd pool ls detail
pool 1 'ssdpool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 39 flags hashpspool stripe_width 0
6,建立物件測試ssdpool:
建立一個物件test並放到ssdpool中:
[[email protected] ~]# rados -p ssdpool ls
[[email protected] ~]# echo "hahah">test.txt
[[email protected] ~]# rados -p ssdpool put test test.txt
[[email protected] ~]# rados -p ssdpool ls
test
檢視該物件的osd組:
[[email protected] ~]# ceph osd map ssdpool test
osdmap e46 pool 'ssdpool' (1) object 'test' -> pg 1.40e8aab5 (1.35) -> up ([1,2,0], p1) acting ([1,2,0], p1)
可以看到該物件的osd組使用的都是ssd磁碟,至此驗證成功。可以看出crush class相當於一個辨別磁碟型別的標籤。
作者:http://www.cnblogs.com/sisimi/p/7804138.html其他參考:https://blog-fromsomedude.rhcloud.com/2017/05/16/Luminous-series-CRUSH-devices-class/
三,參考文獻:
相關推薦
ceph-建立一個使用該rule-ssd規則的儲存池
luminous版本的ceph新增了一個功能crush class,這個功能又可以稱為磁碟智慧分組。因為這個功能就是根據磁碟型別自動的進行屬性的關聯,然後進行分類。無需手動修改crushmap,極大的減少了人為的操作。以前的操作有多麻煩可以看看:ceph crushmapceph中的每個osd裝置都可以選擇一
Docker-建立一個mysql容器,並儲存為本地映象
查詢docker hub上的映象 [[email protected] ~]$ docker search mysql NAME DESCRIPTION
利用threading模組和queue模組在python3直譯器上建立一個簡單的python執行緒池
python直譯器沒提供執行緒池模組,故在python3上自定義python執行緒池簡單版本,程式碼如下 #用threading queue 做執行緒池 import queueimport threadingclass ThreadPool(): def __init__(self,arg):#建
例項:建立一個表格,分頁顯示資料(MongoDB資料庫儲存),功能:實現增刪改查
需求:建立一個表格,分頁顯示資料,功能:實現增刪改查 效果圖: 自動建立一個專案 命令列: express mongodb-demo --view=ejs cd mongodb-demo npm install npm install mongodb --save npm sta
java--Fibonacc由數字1、1、2、3...組成的,從第三個數字起每一個數字為前兩個數字的和。建立一個方法,接受一個整數引數,顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數
題目完整描述:一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fib
組合語言:以GRADE為首地址的10個字的陣列中儲存有學生成績。建立一個10個字的RNAK 陣列,並根據GRADE中的學生成績將學生名次填入RANK陣列中
上機程式碼: data segment ;input data segment code here &n
作業系統(程序間共享儲存區的通訊):建立一個共享儲存區,大小4個位元組(int大小)。建立一個子程序,然後子父程序獨自執行。父程序寫入一個數字到共享儲存區,子程序在共享儲存區把該數字讀出
題目:建立一個共享儲存區,大小4個位元組(int大小)。建立一個子程序,然後子父程序獨自執行。父程序寫入一個數字到共享儲存區,子程序在共享儲存區把該數字讀出。 程式碼量很少,純屬應付作業 筆者在telnet上寫這些程式碼,由於知識技術及英語太菜,不知道怎樣在telnet上覆製出來這些程式碼,
OPENSHIFT-6-分配永久儲存-建立一個永久性註冊
1.檢查機器並確認環境正常。登陸master節點,檢視掛載資訊,退出登陸。 2.使用admin賬號登陸。使用default專案。檢視pod列表資訊。檢視pod的volume資訊。檢視部署配置列表資訊。 3.檢視registry-volume.yml檔案。使用該檔案建立pv
編寫程式由從標準輸入裝置讀入的元素資料建立一個int型vector物件,然後動態建立一個與該vector物件大小一致的陣列,把vector物件的所有元素賦值給新陣列
先建立一個含有若干int型的vector容器,變數名為ivec。用標準輸入來初始化這個容器的每一個元素。 再動態建立一個int型陣列,利用迭代器來遍歷容器,並利用容器來初始化動態建立的陣列 最後的cout<<*(p-10)是返回到了陣列的最開始的位置,p指標又重新指向了第一個元素
.建立一個視窗程式(JFrame),標題欄起名為“瀏覽器”,有一個選單條,有“檔案”、“編輯”、“檢視”3個選單。“檔案”選單有兩個選單項,一項是“開啟”,一項是“儲存”,“開啟”項做成子選單,有兩個
import javax.swing.*; public class Example { public static void main(String[] args) { Window win=
如何建立一個四維的矩陣,儲存多個3通道彩色圖片
分別對兩張影象進行讀入,可以把每張彩色影象儲存為一個三維矩陣(width*height*channel) eg: img1=imread('1.jpg'); img2=imread('2.jpg'); 現在我想把這兩張圖片存入一個四維矩陣中(第四維是2),
建立一個Ceph S3閘道器伺服器
寫作背景是這樣的,公司有個專案,需要通過Ceph物件儲存閘道器寫1億張圖片到Ceph叢集中,由於一個閘道器寫入的速度比較慢,為了縮短寫入時間,需要增加一些伺服器作為閘道器,來將資料寫入到叢集中。 背景
html5實現表單內的上傳檔案框,建立一個可存取到該file的url。
<span style="font-size:18px;"><!DOCTYPE html> <html> <head> <title>HTML5上傳圖片預覽</title> <meta http-
每個月建立下一個月的表(儲存過程)
CREATE OR REPLACE PROCEDURE LOGIN_CREATETAB AUTHID current_user AS tabname VARCHAR2(200); tabCount NUMBER; BEGIN select 'T_MO_ACCESS_LO
程式功能:建立一個帶有頭結點的單向連結串列,並將儲存在陣列中的字元依次轉儲到連結串列的各個結點中。
#include <stdio.h> #include <stdlib.h> struct node {int num;struct node *next; }; typedef struct node Node; typedef struct node *Link; void Cr
OpenStack+Ceph+熱遷移+++四、建立儲存池
四、建立儲存池 1.建立Cinder,Glance,Nova的儲存池(node1節點) ceph osd pool create volumes 128 ceph osd pool create i
編寫程式:建立一個學生資料鏈表,每個節點的資訊包括如下內容:學號,姓名,性別年齡專業。對連結串列做如下處理。輸入一個學號(專業),如果連結串列中的節點包含此學號(專業),則刪去該結點。
#include <iostream> using namespace std; struct student {char name[20];char s_number[10];char gender[3];int age;char major[10];stru
C#第十週任務之最後一項之建立一個如下的窗體,並在窗體上放置一個選單、一個工具欄控制元件。選單內容如第二個圖所示。工具欄上有兩個按鈕,分別對應“開啟文字檔案”、“儲存文字檔案”。選單和工具欄具體功能實現可
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
【Java編程】建立一個簡單的JDBC連接-Drivers, Connection, Statement and PreparedStatement
code ava 語句 ole man for out 讀取 drop 本blog提供了一個簡單的通過JDBC驅動建立JDBC連接例程,並分別通過Statement和PreparedStatement實現對數據庫的查詢。在下一篇blog中將重點比較Statement與P
如何利用Cool Edit Pro建立一個數字音樂工作室
cool edit pro 數字音樂工作室 相信很多音樂愛好者,對於“專業錄音棚”、“音樂工作室”都深深地向往。呵呵,多麽希望自己家中能擁有一套專業的音樂工作室啊。好在現在PC上的也突飛猛進,在普通的個人電腦上,擁有基於PC平臺的數字音樂工作室成為了可能,實際上全世界的專業音樂棚都在越來越多地使用