<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    升級到 Quincy 前,你需要了解下PG Autoscaler 的一切~

    一顆小胡椒2022-07-19 09:22:19

    介紹

    在 Nautilus(14.2.x) 版本中首次引入的 pg_autoscaler 是一種在你的 ceph 集群中管理歸置組的極佳方式。根據存儲池預期的使用情況,pg_autoscaler 可以提供建議,并根據存儲池的使用情況和用戶設置的優化值來調整集群中歸置組的數量。

    autoscaler 帶有一些調整選項,包括 --bulk 標志、target_size_ratio,、noautoscale、 bias、 pg_numpg_num_max 和 pg_num_min。在 Quincy 的最新版本的準備過程中,我們把這些調整選項通過了發布標準測試,并得出了優化建議和排障指南,用戶可以在升級到 Quicy 時參考它們。在這篇博客當中,我們總結了 autoscaler 提出的最初挑戰,概述了作為發布標準測試結果的最佳調優實踐,并以一些 autoscaler 的排障技巧作為結尾。

    對 —bulk 標志最初的挑戰與動機

    在 Quincy 之前,一些用戶在一開始安裝 Ceph 的時候就遇到了一些性能問題。默認情況下,autoscaler 在一開始對每個存儲池都設置了最少的 PGs 數量,只有在(存儲池)使用量增加后才會上漲 (PGs 的)數量。這種行為主要會導致大型存儲池的性能問題,因為相比 autoscaler 提供的最低 PGs 數量,大型存儲池需要更多的 PGs。

    這種 “開箱即遇性能問題”的經歷導致了 Quincy 中 --bulk 標志的引入。用戶可以在創建他們事先就知道會變大的存儲池時指定 --bulk 標記。通過對存儲池設置 --bulk 標志,autoscaler 會在最開始的時候就分配更大的 PGs 數量。這種方式下,用戶不再需要等待 autoscaler 探測到更多使用量后在分配適當的 PGs 數量

    優化建議

    —bulk 標志應該用在大型存儲池上以獲得優化性能

    --bulk 標記現在可以用用來表示一個將會變大的存儲池,這個存儲池需要在一開始就分配大量的 PGs。用戶可以在創建新的存儲池以及對存在的存儲池設置 --bulk 標志。任何沒有使用 --bulk 標記創建的存儲池都會保持默認在最初分配最小 PGs 數的默認行為

    可以使用 ceph osd pool create <pool-name> --bulk 可以在存儲池創建過程中設置 --bulk 標志。使用 ceph osd pool set <pool-name> bulk <true/false/1/0> 來為一個已經創建好的存儲池設置或取消 --bulk 標志。使用 ceph osd pool get <pool-name> bulk 可查看一個已存在的存儲池的 --bulk 標志

    如果你預期到一個存儲池相比于其他的存儲池會消耗更多的集群容量,使用 target_size_ratio 設置

    存儲池的目標比例(target ration)可以通過 target_size_ratio 來明確指出。如果你知道一個存儲池相對于其他存儲池有確定的比例,這一設置將會特別有用。每個存儲池的目標比例除非明確指出,否則默認為 0。你為一個存儲池設置的目標比例越大,你期望存儲池的 PG 也就越多。

    使用 osd pool autoscale-status 命令可以在 TARGET RATIO 一欄中檢查存儲池的目標比例。使用 ceph osd pool set <pool_name> target_size_ratio <ratio> 可以對一個已存在的存儲池設置target_size_ratio。使用 ceph osd pool create --target-size-ratio <ratio> 可以在存儲池創建時候設置 target_size_ratio 。

    使用 noautoscale 標志來為所有存儲池全局切換 autoscaler

    現在可以通過 noautoscale 標志來打開或關閉所有的存儲池的 autoscaler。默認情況下,這一標志設置為 false,并且每個存儲池的 pg_autoscale 默認模式都是 on

    如果你想為每一個存儲池打開 autoscaler,使用 ceph osd pool unset noautoscale。如果你想為每一個存儲池關閉 autoscaler,使用 ceph osd pool set noautoscale。使用 ceph osd pool get noautoscale 可以獲得當前 noautoscale 的值。

    使用偏置值來幫助 autoscaler 更準確滴調整 PGs 數量

    偏置值是一個乘數,用于根據事先關于該池的預期 PG 數量的信息手動調整該池的 PG。默認情況下,除非另有規定,否則偏置值應為1.0。你給一個池子的偏置值越大,你預期的該池子的 PG 就越大。

    使用 osd pool autoscale-status 并在 BIAS 欄中查看存儲池的 bias 值。使用 ceph osd pool set <pool_name> pg_autoscale_bias <bias> 可以為已存在的存儲池設置 bias

    如果預先知道一個存儲池的使用比例,在創建存儲池時使用 pg_num 選項

    當一個集群或存儲池首次被創建時,只有一小部分集群容量會被消耗。因此,你的系統可能會低估集群或者存儲池所需要的 PG 數。如果你事先知道你的集群或存儲池的使用比例,在創建存儲池時使用 pg_num 選項。這有助于你的集群提前核算適當數量的 PG

    使用 ceph osd pool autoscale-status 并在 PG_NUM 欄中查看一個存儲池 pg_num 的值。使用 ceph osd pool create <pool_name> <pg_num> 在創建存儲池的時候指定 pg_num。使用 ceph osd pool set <pool-name> pg_num_min <pg_num> 指定存儲池允許的最小 pg 數量。使用 ceph osd pool set <pool-name> pg_num_max <pg_num> 設置存儲池所允許的最大 pg 數量。

    使用 pg_num_max 設置存儲池最大的 PG 數量

    指定一個存儲池的最大 PG 數量是可能的。這在創建小存儲池時,如 .mgr, meta 存儲,或者沒有使用過 --bulk標志的存儲,是非常有用的。

    使用帶 --pg-num-max <num> 選項的 ceph osd pool create 命令可以在存儲池創建時指定最大 PG 數。在創建好存儲池之后,使用 ceph osd pool set <pool-name> pg_num_max <num> (設置存儲池的最大 PG 數)

    使用 pg_num_min 值設置存儲池的最小 PG 數

    類似的,我們可以指定一個存儲池的最小 PG 數。這在我們希望客戶端在執行 I/O 時看到并行量的下限時是非常有利的,即便此時存儲池中大部分是空的。這在創建一些大存儲池(例如設置了 --bulk 標志的存儲池)時是有用的。

    使用帶 --pg-num-min <num> 的 ceph osd pool create 命令可以在創建存儲池的時候指定最小 PG 數。在創建好存儲池之后,使用 ceph osd pool set <pool-name> pg_num_min <num> (設置存儲池的最小 PG 數)

    升級到 Quincy 之前你所需要知道的事情

    當從一個不帶 autoscaler 的 Ceph 版本升級到一個帶有 autoscaler 的 Ceph 版本時,完成升級后 autoscaler 便可用于每個存儲池,并且它默認對所有存儲池都處于 off 狀態。然而,如果你從一個帶有 autoscaler 的 Ceph 版本升級到同樣帶有 autoscaler 的更新的版本時,所有存儲池都會保持他們升級前原來的 autoscaler 設置,無論它們是 offon 或者 warn

    要對一個存儲池使用 --bulk 標志,需要升級的版本 >= 16.2.8 的 Ceph

    最后,重要的是要開啟日志以便診斷 pg_autoscaler 模塊所帶來的任何問題。像所有的管理模塊一樣,pg_autoscaler 有用來描述自身 Python 日志級別的 log_level 選項。我們推薦使用 warning 以捕捉升級過程中的信息。使用 ceph config get mgr mgr/pg_autoscaler/log_level 可以獲得 pg_autoscaler 模塊當前日志級別。使用 ceph config set mgr mgr/pg-autoscaler/log_level warning 設置 pg_autoscaler 日志級別為 warning。其他的選項有 infodebugcritical 和 error

    排障建議

    如果 autoscaler 沒有按預期方向進行擴展該怎么辦?

    使用 ceph osd pool autoscale-status 查看每個存儲池的 bulk 值配置是否正確。如果 BULK 為 “false”,autoscaler 初始值為 PG 的最小值。如果 BULK 的值為 “true”,autoscaler 初始值為一個大的 PG 數量。當你看到輸出的 bulk 值非你所預期的那樣,你可以使用 ceph osd pool set <pool-name> bulk <true/false/1/0> 來改變它們。

    為什么 autoscaler 無法縮放或者帶著錯誤值縮放

    1. 檢查待縮放的存儲池的 autoscaler 是否為 on/off
    2. 如果 autoscaler 無法對存儲池進行縮放,檢查該存儲池是否設置了(autoscaler) 為 on。你可以用 ceph osd pool autoscale-status 來驗證。在 AUTOSCALE欄下,檢查模式是否為 on
    3. 如果你發現它為 off, 你可以對受影響的存儲池執行 osd pool set <pool-name> pg_autoscale_mode on 來將 autoscaler 打開。如果存儲池的 autoscaler 為 on,但你更想要將其設置為 off, 你可以使用osd pool set <pool-name> pg_autoscale_mode off 來關閉它
    4. 檢查重疊的 root

    如果每個存儲池的 autoscaler 模式都是正確的,autoscaler 可能會因為你既存中有重疊的 root 而導致縮放失敗。檢查集群日志中是否有這樣的警告日志: pool <id> contains an overlapping root <id> … skipping scaling。我們推薦讓存儲池只屬于一個 root,以避免這樣的警告和確保縮放過程的成功執行。

    1. 檢查閾值是否影響了縮放的過程

    檢查閾值是否設置為一個恰當的值(默認 3.0)。該值是縮放過程是否能夠執行的決定性因素。如果閾值設置過大(大于 5.0),它會占用存儲池的使用率來觸發自動縮放的過程。另一方面,如果閾值設置過低(小于 2.0),存儲池會對縮放過度敏感。

    使用 ceph osd pool set threshold <value> 可以調整存儲池的閾值

    1. 檢查 mon_target_pg_per_osd 是否設置為一個適當的值
    2. 下一個需要檢查的優化是 mon_target_pg_per_osd,表示每個 OSD 的目標 PG 數。默認情況下,該選項應該被設置為 100.如果你發現每個 OSD 的 PG 數和你預期的不同,你可以通過使用 ceph config set global mon_target_pg_per_osd <value> 來調整該值。
    3. 檢查速率設置是否正確
    4. 另一個需要檢查的優化項是 rate 值,代表了存儲池的副本數或糾刪碼的值。這個值決定了存儲池中能夠被消耗的裸存儲容量。根據你的存儲池的副本數或糾刪碼配置,通過osd pool autoscale-status 命令驗證相應值設置是否正確。在命令輸出的 RATE 欄,可以看到為每個存儲池設置的 rate 值。你可以通過ceph osd pool set <pool-name> size <value> 來調整獨立存儲池的 rate 值。
    5. 檢查偏置值設置是否正確
    6. 如前面《優化建議》中解釋的,為存儲池設置的偏置值越大,你所期望的存儲池的 PG 數也越大。因此,你應該檢查受影響的存儲池中的 bias 是否設置為一個恰當的值。
    7. 檢查 target_size_ration 設置是否正確
    8. 類似的,target_size_ratio 是另一個為存儲設置得越大,你所期望的存儲池的 PG 就越多的選項。因此,你應該確保受影響的存儲池的相應值設置了一個恰當的數值。

    如何知道 autoscaler 正在做什么?

    從高層視角來看,你可以使用 ceph progress命令來觀察 autoscaler 的活動。該命令的輸出展示了哪個存儲池當前正在擴展 PG 以及擴展的程度。

    此外,你可以通過 ceph osd pool autoscale-status 命令中每個存儲池的 NEW PG_NUM欄推導出距離你的目標 PG 數還有多遠

    對于更多的 autoscaler 的細節,訪問 manager 日志,并查找如下的 INFO 級別的日志輸出

    Pool <pool_name> root_id <root_id> using <capacity> of space, bias <bias>
    pg target <pg_target> quantized to <pg_target_nearest_power_of_two> (current <current_pg>)
    effective_target_ratio <target_size_ratio> <total_target_ratio> <total_target_bytes> <capacity>
    

    我應該使用哪個日志級別來查看 autoscaler 活動?

    查看 autoscaler 活動需要使用 Python 日志級別中的 error 級別。請參考前面 《升級到 Quincy 之前你所需要知道的事情》小節,了解關于檢查和設置autoscaler日志級別的信息。

    結論

    當優化得當時,pg_autoscaler 模塊是一種很好讓你的 Ceph 集群自動管理歸置組的方式。我們希望這些 autoscaler 優化建議和排障指南在升級到 Quincy 最新版本時能夠提升所有用戶開箱即用的體驗。更多信息,請參考Placement Groups文檔,其中有關于 autoscaler 行為的更多細節。我們也鼓勵已經升級到 Quincy 的用戶聯系用戶郵件列表ceph-users@ceph.io,提出任何關于 autoscaler 的問題或反饋。

    國內唯一官方正式授權的社區,為所有Cepher 提供學習、交流、展示自己的舞臺,致力于做中國Ceph的推廣者、布道者。 Ceph中國社區網址:http://www.ceph.org.cn

    numceph
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    每個存儲池的目標比例除非明確指出,否則默認為 0。一欄中檢查存儲池的目標比例。可以對一個已存在的存儲池設置target_size_ratio。標志來打開或關閉所有的存儲池的 autoscaler。默認情況下,除非另有規定,否則偏置值應為1.0。指定存儲池允許的最小 pg 數量。使用 pg_num_max 設置存儲池最大的 PG 數量指定一個存儲池的最大 PG 數量是可能的。
    xsshelp閑著沒事隨便寫的一個輔助挖掘xss漏洞的工具xsshelp version: 1.0.0Usage: [-ut] [-u url] [-t thread] [-h help]Options: -h this help -t intthread Num -u string a target url
    F-vuln(全稱:Find-Vulnerability)是為了自己工作方便專門編寫的一款自動化工具,主要適用于日常安全服務、滲透測試人員和RedTeam紅隊人員,它集合的功能包括:存活IP探測、開放端口探測、web服務探測、web漏洞掃描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他數據庫爆破工作以及大量web漏洞檢測模塊。
    發現漏洞一、環境準備1、在Linux主機上準備一套Xampp:模擬攻防2、在VSCode利用Remote Development進行遠程調試3、在Lampp的htdos目錄下創建security目錄,用于編寫服務器PHP代碼二、編寫Login.html三、編寫Login.php"; echo "location.href='welcome.php'";}else{ // echo "login-fail. "; echo "location.href='login.html'";}//關閉數據庫mysqli_close?
    提出了一種用于JIT缺陷預測的端到端深度學習框架,從Commit消息和代碼變更中提取特征,基于所提特征來識別缺陷。每個變更的文件通過一組刪除和添加的代碼行表示,每一個代碼行被處理為一個單詞序列。
    經PHP官方確認,于6月9日,PHP官網發布了該漏洞的修復方案。
    EXOCET 優于 Metasploit 的“Evasive Payloads”模塊,因為 EXOCET 在 GCM 模式(Galois/Counter 模式)下使用 AES-256。Metasploit 的 Evasion Payloads 使用易于檢測的 RC4 加密。雖然 RC4 可以更快地解密,但 AES-256 很難確定惡意軟件的意圖。
    pwnhub 9月公開賽
    2021-10-03 17:08:04
    pwnhub 9月公開賽
    實驗一利用case語句編寫腳本,滿足下列要求1.執行create時根據userfile和passfile建立用戶
    MISC中常用python腳本
    2021-09-20 20:26:46
    MISC中常用python腳本總結
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类