002.RHCS-配置Ceph存儲集群

来源:https://www.cnblogs.com/itzgr/archive/2019/03/18/10551766.html
-Advertisement-
Play Games

一 前期準備 提示:相關部署參考《001.Ansible部署RHCS存儲集群》。 二 存儲池概述 2.1 存儲池 Red Hat Ceph存儲池池是Red Hat Ceph存儲集群用於存儲對象的邏輯分區。 池有特定的屬性:池類型,它確定池用於確保數據持久性的保護機制。 replication類型在集 ...


一 前期準備

  1 [kiosk@foundation0 ~]$ ssh ceph@serverc				#登錄Ceph集群節點
  2 [ceph@serverc ~]$ ceph health					#確保集群狀態正常
  3 HEALTH_OK
  提示:相關部署參考《001.Ansible部署RHCS存儲集群》。

二 存儲池概述

2.1 存儲池

Red Hat Ceph存儲池池是Red Hat Ceph存儲集群用於存儲對象的邏輯分區。 池有特定的屬性:池類型,它確定池用於確保數據持久性的保護機制。 replication類型在集群中分佈每個對象的多個副本。 erasure coding類型將每個對象分割成塊,並將它們與其他擦除編碼塊一起分發,以使用自動糾錯機制保護對象。 池中存在一定的數量的PG,它們將它們的對象存儲在一組由CRUSH演算法確定的osd中。 Ceph使用CRUSH規則集來標識哪個放置組應該包含它存儲的每個對象。 訪問級別用於確定不同用戶的訪問許可權的訪問許可權。 當Ceph在池中存儲對象時,它使用CRUSH演算法將對象分配給池中的一個PG。根據池的配置和CRUSH演算法,PG自動映射到一組OSDs。這決定了Ceph用來存儲對象的OSDs。池類型決定該對象如何在該集合的OSDS中複製或存儲。 存儲管理員可以配置CRUSH,以便Ceph存儲使用特定類型存儲設備(如ssd)或位於不同物理位置的設備上的osd來存儲對象。 提示:池中放置組的數量對性能有重要影響。如果在池中配置太少的放置組,那麼需要在每個PG中存儲太多的數據,如果您在一個池中配置了太多的放置組,OSDs將需要大量的RAM和CPU資源。通常,一個池應該配置為每個OSD包含100-200個放置組。預設情況下,當您創建一個池時,Ceph會檢查每個OSD的pg數量是否已經超過200,如果是,Ceph將不會創建池。如果一個池已經達到了這個限制,ceph health命令還會顯示一個警告。這個限制由/etc/ceph/ceph conf配置文件中的mon_max_pg_per_osd參數控制。

三 存儲池常見操作

3.1 啟用存儲池

創建池之後,管理員必須顯式地配置能夠使用它的Ceph應用程式的類型:Ceph塊設備(也稱為RADOS塊設備或RBD)、Ceph對象網關(也稱為RADOS網關或RGW)、Ceph文件系統(CephFS)。 命令:ceph osd pool application enable pool-name app 解析: app通常指: cephfs:用於Ceph文件系統; rbd:用於Ceph塊設備; rgw:用於Ceph對象網關。

3.2 池相關命令

命令 含義 備註
ceph osd lspools 列出集群中的池  
ceph osd pool ls detail 獲取更多池相關信息  
ceph df 獲取池使用統計數據  
ceph osd pool stats 獲取池性能統計數據  
ceph osd df 顯示OSDs上的磁碟使用統計信息  

3.3 池配額

管理員可以設置配額來限制可以存儲在池中的最大位元組數或最大對象數。 命令:ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes 提示:當Ceph達到池配額時,操作將被無限期阻塞。

3.4 池快照操作

重命名池:ceph osd pool rename current-name new-name 提示:重命名不會影響存儲在池中的數據。 管理快照:ceph osd pool mksnap pool-name snap-name #創建快照 管理快照:ceph osd pool rmsnap pool-name snap-name #刪除快照 檢索快照:rados -p pool-name -s snap-name get object-name file 回滾快照:rados -p pool-name rollback object-name snap-name 註意:Ceph不支持對erasure類型池進行快照。

3.5 池的修改操作

設置池參數:ceph osd pool set pool-name parameter value 查看池參數:ceph osd pool get pool-name parameter 查看池所有參數:ceph osd pool get pool-name all 常見參數:size參數控制池的副本數量,並映射到osd_pool default_size配置文件參數(預設為3)。pg_num參數控制池的放置組的數量,並映射到osd_pool_default_pg_num配置文件參數(預設為8)。

3.6 刪除池

命令:ceph osd pool delete pool-name pool-name --yes-i-really-really-mean-it 註意:在Red Hat Ceph Storage 3中,為了提供更高的保護,Ceph將mon allow pool delete confiquration參數設置為false。當配置此參數後,使用--yes-i-really-really-mean-it選項,ceph osd池刪除命令不會導致池的刪除。您可以將mon允許池刪除參數設置為true,並重新啟動mon服務以允許池刪除。 在配置mon_alow_pool_delete為true後,仍然可以通過在池級別將no delete選項設置為ture來保護池不被刪除,命令:ceph osd pool set pool-name nodelete true。 提示:刪除池之後,應該刪除與該池相關的所有配置,包括專用於池的用戶和CRUSH map規則。

3.7 池的命名空間

在池中配置的命名空間是池中對象的邏輯組。限制用戶用戶對池的訪問,使用戶只能在該名稱空間中存儲或檢索對象。名稱空間的優點是可以使用它們來限制用戶對池的一部分的訪問,它們允許對池進行邏輯分區,並將應用程式限制在池中特定的名稱空間內。因此,幾個應用程式可以安全地共用一個池,並且不至於池的數量過多。 提示:名稱空間目前只支持直接使用librados的應用程式。 要將對象存儲在命名空間中,客戶機應用程式必須提供池和名稱空間名稱。預設情況下,每個池包含一個名稱空間,名稱為空,稱為defaul名稱空間。 例如,從池中存儲和檢索對象的rados命令接受-N name或--namespace=name選項來指定要使用的名稱空間。 命令:rados -p mytestpool -N system put srv /etc/services 解析:將/etc/services文件作為srv對象存儲在mytestpool池中的system命名空間中。 命令:rados -p mytestpool -N system ls 解析:在所有名稱空間中列出池中的所有對象。 提示:若需要以JSON格式返回結果,可添加--format=ison選項。

四 複製存儲池

4.1 創建複製存儲池

命令:ceph osd pool create pool-name pg-num [pgp-num] [replicated] [crush-ruleset-name] \ [expected-num-objects] 解析: pool-name:池名稱; pg-num:池中的pg總數; pgp-num:池的有效放置組數。通常,這應該等於pg的總數。 duplicate:指定這是一個複製池,如果不包含在命令中,則通常是預設值。 crush-ruleset-name是:用於此池的CRUSH名稱。預設值為:osd_pool_default_crush_replicated_ruleset。 提示:一個OSD需要管理的PGs越多,它需要的資源就越多。同時配置紅帽Ceph存儲重要的創建池之後,不能減少池中放置組的數量。但是,可以增加放置組的數量。

五 糾刪碼池

5.1 糾刪碼池概述

糾刪碼池使用擦除糾刪碼而不是複製來保護對象數據。當將一個對象存儲在糾刪碼池中時,該對象被劃分為許多數據塊,這些數據塊存儲在單獨的OSDs中。此外,還根據數據塊計算了大量的糾刪碼塊,並將其存儲在不同的osd中。如果包含塊的OSD失敗,可以使用糾刪碼塊來重構對象的數據。 糾刪碼池與複製池不同,它不依賴於存儲每個對象的多個完整副本。 每個對象的數據被分成k個數據塊。 計算了m個編碼塊大小與數據塊大小相同的糾刪碼塊。 對象存儲在總共k + m 個OSDS上。 提示:糾刪碼池比複製池需要更少的存儲空間來獲得類似級別的數據保護。可以降低存儲集群的成本和大小。然而,計算糾刪碼塊會增加CPU和記憶體開銷,從而降低糾刪碼池的性能。此外,在Red Hat Ceph Storage 3中,需要部分對象寫的操作不支持擦除編碼池。目前糾刪碼池的使用限制在執行完整對象寫入和追加的應用程式中,比如Ceph對象網關。即Red Hat Ceph存儲目前只支持通過Ceph對象網關訪問的糾刪碼池。

5.2 創建糾刪存儲池

命令:ceph osd pool create pool-name pg-num [pgp-num] erasure [erasure-code-profile] \[crush-ruleset-name] [expected-num-objects] 解析: pool-name:池名稱; pg-num:池中的pg總數; pgp-num:池的有效放置組數。通常,這應該等於pg的總數。 erasure:指定這是一個糾刪碼池,如果不包含在命令中,則預設是複製池。 erasure-code-profile:指定是要使用的配置文件。可以使用ceph osd erasure-code-profile創建新的配置文件,配置文件定義要使用的k和m值以及erasure插件。 crush-ruleset-name是:用於此池的CRUSH名稱。如果沒有設置,Ceph將使用erasure-code-profile文件中定義。 提示:一個OSD需要管理的PGs越多,它需要的資源就越多。同時配置紅帽Ceph存儲重要的創建池之後,不能減少池中放置組的數量。但是,可以增加放置組的數量。

5.3 糾刪池配置文件

糾刪池配置文件配置糾刪池用於存儲對象的數據塊和糾刪塊的數量,以及要使用的擦除codinq插件和演算法。可以創建新的配置文件來定義一組新的糾刪參數。Ceph在安裝期間創建名為default的配置文件。這個配置文件被配置為將對象分成兩個數據塊和一個編碼塊。Ceph有一個基於插件的系統來控制擦除編碼是如何實現的,並且已經創建了許多不同的插件,它們以不同的方式管理擦除編碼。預設配置文件使用Jerasure插件,這是最靈活和通用的選項。Red Hat Ceph Storage 3還支持本地可修複擦除代碼(LRC)插件。 提示:紅帽Ceph存儲只支持Jerasure和本地可修複擦除代碼(LRC)插件。 查看參數:ceph osd erasure-code-profile get default 設置參數:ceph osd erasure-code-profile set profile-name arguments

參數

含義

備註

k

跨osd分割的數據塊的數量,預設值是2。
 

m

數據變得不可用之前可能失敗的osd的數量,預設為1。
 

directory

預設值是/usr/1ib64/ceph/erasure-code,演算法插件庫的路徑。
 

plugin

預設值是jerasure,通常有本地可修複擦除代碼(LRC)和ISA(僅限Intel)。
 

crush-failure-domain

定義CRUSH故障域,該域控制塊的位置。預設情況下,設置為host,這確保對象的塊被放置在不同的主機上。如果設置為osd,則對象的塊可以放在同一主機上的osd上。將故障域設置為osd的彈性較小,因為如果主機失敗,主機上的所有osd都將失敗。還可以定義其他故障域,並使用它們來確保將塊放在數據中心不同機架上的主機上的OSDs上,或者進行其他類型的定製。
 

crush-device-class

此可選參數僅為池選擇由該類設備支持的OSDs。典型的類可能包括hdd、ssd或nvme。
 

crush-root

這個可選參數設置壓碎規則集的根節點。
 

key=value

插件可能具有該插件特有的鍵值參數。
 

technique

technique為每個插件都提供了一組實現不同演算法的不同技術。對於Jerasure插件,預設的技術是reed_sol_van。其他包括:reed_sol_r6_op、cauchy_orig、cauchy_good、liberation、blaum_roth和liber8tion。
 
命令:ceph osd erasure-code-profile set myprofile k=3 m=2 crush-failure-domain=rack 解析:創建一個概要文件,該概要文件將對象劃分為三個數據塊(k=3),並用兩個編碼塊(m=2)保護它們,crush-failure-domain=rack參數確保Ceph不會在同一個機架中存儲兩個塊。 命令: ceph osd erasure-code-profile ls #列出現有的配置文件 ceph osd erasure-code-profile rm profile-name #刪除現有配置文件 ceph osd erasure-code-profile get profile-name #查看現有配置文件 註意:不能修改或更改現有池的擦除代碼糾刪配置文件。

六 Ceph配置文件

6.1 Ceph配置文件介紹

預設情況下,Ceph守護進程和客戶機/etc/ceph/ceph.conf文件讀取配置。修改配置參數時,必須確保所有集群節點和客戶端/etc/ceph/ceph.conf文件一致。若使用Ansible來管理您的Red Hat Ceph存儲集群配置,它將使您的Ceph配置文件在其所有節點上保持同步。 ceph.conf文件使用基於ini的文件格式,包含幾個部分,其中包括與Ceph守護進程和客戶機相關的配置。 提示:參數名稱可以使用空格、下劃線或破折號作為分隔符,例如osd journal size、osd_journal_size和osd-journal-size都是有效的等效參數名稱。 使用特定守護進程的設置進行分組:
  • [global]:存儲所有守護進程共有的一般配置和設置。任何進程都會讀取該配置,包括客戶機。在其他更具體的配置中會重寫global設置的參數。
  • [mon]:存儲與monitors(mon)相關的配置。
  • [osd]:存儲與osd守護進程相關的配置。
  • [mgr]:存儲與managers(MGR)相關的配置。
  • [mds]:存儲與元數據伺服器(mds)相關的配置。
  • [client]:存儲應用於所有Ceph客戶機的配置。
提示:RHCS在/usr/share/doc/ceph/sample.ceph.conf中提供了一個配置示例文件。 註意:若需要針對某節點特定配置,可使用[daemon-type.instance-id]進行覆寫,參考如下: [mon] #所有mon節點的配置; [mon.serverc] #serverc區別於mon的獨特配置。 對於客戶端instance-id為用戶名。

6.2 常見配置

模塊 參數 含義
元數據模塊 $cluster 定義RHCS集群的名稱。預設設置為ceph,併在/etc/sysconfig/ceph文件中定義。
$type 定義守護進程類型。對於監視器,將其設置為mon, OSDs使用osd,元數據伺服器使用mds,管理器使用mgr,客戶機應用程式使用client。
$id 定義守護進程實例ID。對於客戶機應用程式,它是用戶名。
$name 定義守護進程名和實例ID。相當於$type.$ID的簡寫。
$host 定義守護進程所運行的主機名。

global模塊定義全局參數,即定義集群範圍的參數。它通常包括以下配置設置:

  • 帶有所有監視器列表的mon主機。
  • mon初始成員設置為必須在集群啟動時啟動的監視器列表,以建立仲裁。
  • 啟用或禁用Ceph組件之間使用cephx身份驗證的設置(預設啟用)。
  • Ceph環境中使用的網路,通常一個用於OSDs(集群網路),一個用於客戶機(公共網路)。

6.3 查看配置

命令:ceph daemon type.id config show #查看所有參數和值 示例:ceph daemon osd.0 config show 命令:ceph daemon type.id config get parameter #查看指定參數 示例:ceph daemon type.id config get mds_data

6.4 Ansible Ceph配置文件

在部署節點上使用Ansible部署,調用/usr/share/ceph-ansible中的Ansible Playbook部署或更新Red Hat Ceph存儲集群時,它都會在每個節點上重新創建/etc/ceph/ceph.conf文件。 在/usr/share/ceph-ansible_group_vars/,編輯ceph_conf_overrides變數,以添加新的節或配置參數。Ansible將該變數轉換為INI格式,並將其添加到生成的ceph.conf文件。 提示:部署新的配置到節點時候,需要在/usr/share/ceph-ansible目錄使用ansibe-playbook site.yml命令。

七 啟動和停止Ceph

7.1 概述

使用systemct1命令管理Ceph服務。systemctl命令可用於管理Ceph服務。有一個systemd命令控制所有Ceph守護進程,也存在獨立的命令只控制特定類型的守護進程。
  • ceph.target:啟動或停止當前節點上的所有守護進程
  • ceph-type.target:啟動或停止特定類型的所有守護進程

7.2 常見命令

命令 含義 備註
systemctl stop ceph-$type@$id 停止特定守護進程。  
systemctl stop ceph-osd.target 停止所有OSD守護進程。  
systemctl stop ceph.target 停止所有ceph守護進程。  
systemctl start ceph-$type@$id 啟動特定守護進程。  
systemctl start ceph-osd.target 啟動所有OSD守護進程。  
systemctl start ceph.target 啟動所有ceph守護進程。  
systemctl restart ceph-$type@$id 重啟特定守護進程。  
systemctl restart ceph-osd.target 重啟所有OSD守護進程。  
systemctl restart ceph.target
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載自:“趣IT”微信公共號 前言 批處理文件(batch file)包含一系列 DOS命令,通常用於自動執行重覆性任務。用戶只需雙擊批處理文件便可執行任務,而無需重覆輸入相同指令。編寫批處理文件非常簡單,但難點在於確保一切按順序執行。編寫嚴謹的批處理文件可以極大程度地節省時間,在應對重覆性工作時尤 ...
  • 詳見鏈接https://blog.csdn.net/weixin_42266606/article/details/80879571 (此處我的本地用戶名root,密碼root;遠程用戶名root,密碼12345) 1.下載 MySQL 所需要的安裝包 網址:https://dev.mysql.co ...
  • linux基礎學習筆記 目錄: 1.磁碟分區 2.目錄結構 3.linux命令的分類 4.常見的linux命令 1.命令編輯的幾個輔助操作 2.命令幫助 3.查看文件內容cat,more,less,head,tail 4.統計命令wc 5.檢索和過濾文件內容grep命令 6.壓縮和解壓縮:gzip( ...
  • 這兩天,突發奇想,想著用著微軟家的windows系統很多年了,也想嘗試一下其他的操作系統。很快的就想到了Linux操作系統,它不是面向用戶的,而是面向伺服器的,在伺服器端的市場中占了很大的市場份額,備受好評。 目錄 + Linux特點 + 特別說明 + yum常用命令 + 程式相關命令 + 防火牆相 ...
  • 掌握Linux下shell的使用方法。主要介紹Linux shell的語法結構、變數定義以及賦值引用、標點符號、控制語句等。 ...
  • 1.首先檢查是否有一塊硬碟還未被掛載 2.如圖所示,vdb還未被使用,開始分配它吧 3.格式化剛劃分的磁碟,我這裡是格式成ext4格式 4.寫入fstable 5.重新載入fstable,並查看磁碟是否載入成功 ###如上,大功告成啦 最後,贈送上述步驟腳本一枚 ...
  • 以超級用戶工作:su su命令允許臨時變換到任何一用戶標識(如果擁有口令的話),並掛起當前shell,為新用戶開啟一個新的shell。 將當前用戶標識harley變換為weedly,但仍在harley的環境下工作。 同時變換用戶標識和環境。su命令更多用於切換到超級用戶root。此時,我們也希望在r ...
  • centos源不能安裝libmcrypt-devel,由於版權的原因沒有自帶mcrypt的包 有兩種方法解決,一種是使用第三方源,這樣還可以使用yum來安裝,簡單方便,壞處是第三方源多少有中不可靠的感覺。 解決辦法一 1、安裝第三方yum源 wget http://www.atomicorp.com... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...