自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一起聊聊Ceph RBD和QEMU塊設(shè)備Qos測(cè)試

存儲(chǔ) 存儲(chǔ)架構(gòu)
對(duì)于ceph rbd qos的使用,還是建議在image層面進(jìn)行bps和iops的限速,pool層面的限速效果不明顯。當(dāng)然也可以使用qemu在塊設(shè)備上做虛擬機(jī)磁盤的io限制,使用qemu做qos的優(yōu)點(diǎn)是本地硬盤也可以進(jìn)行限速,而ceph rbd的qos對(duì)象只是ceph集群中的rbd鏡像。

關(guān)于ceph的qos

Ceph,作為一個(gè)高度可擴(kuò)展的分布式存儲(chǔ)系統(tǒng),已經(jīng)成為云計(jì)算和大數(shù)據(jù)時(shí)代的關(guān)鍵基石。隨著企業(yè)和組織對(duì)數(shù)據(jù)存儲(chǔ)的需求日益增長(zhǎng),Ceph 通過(guò)其強(qiáng)大的特性,如可靠性、伸縮性和性能,滿足了這些需求。然而,隨著集群規(guī)模的擴(kuò)大和工作負(fù)載的多樣性,如何確保資源的有效分配和性能隔離成為了一個(gè)重要議題。在這個(gè)背景下,Ceph 的 Quality of Service (QoS) 功能顯得尤為重要。

QoS 在 Ceph 中的實(shí)現(xiàn),特別是在其 RADOS Block Device (RBD) 模塊中,提供了一種機(jī)制來(lái)控制和限制存儲(chǔ)資源的使用,如 IOPS(每秒輸入輸出操作次數(shù))和帶寬。這對(duì)于在多租戶環(huán)境中維持服務(wù)質(zhì)量,防止資源過(guò)度使用或“鄰居噪音”問(wèn)題至關(guān)重要。通過(guò)精確地配置 QoS 參數(shù),管理員可以為不同的虛擬機(jī)、容器或應(yīng)用分配適當(dāng)?shù)拇鎯?chǔ)資源,確保系統(tǒng)的整體性能和響應(yīng)性。 

在本文中,我們將深入探討 Ceph RBD 的 QoS 特性,重點(diǎn)關(guān)注如何驗(yàn)證和量化 RBD QoS 設(shè)置的效果。通過(guò)一系列的測(cè)試和分析,我們將展示 QoS 參數(shù)如何影響 RBD 性能,以及如何根據(jù)特定的工作負(fù)載和性能要求調(diào)整這些參數(shù)。無(wú)論是對(duì)于 Ceph 新手還是資深用戶,了解和應(yīng)用 RBD 的 QoS 功能都是提高存儲(chǔ)系統(tǒng)效率和可靠性的關(guān)鍵步驟。

測(cè)試環(huán)境

  • 操作系統(tǒng):ubuntu 20.04
  • 內(nèi)核:5.4.0-163-generic
  • CPU / 內(nèi)存:32C / 128G
  • 硬盤:10T
  • ceph:17.2.5 quincy (stable)

測(cè)試流程

  • 拉起一個(gè)使用ceph rbd存儲(chǔ)的虛擬機(jī)
  • 使用fio測(cè)試無(wú)限速情況下iops和bps
  • 開(kāi)啟 image qos iops限速 測(cè)試rbd的iops
  • 開(kāi)啟 image qos bps限速 測(cè)試rbd的bps
  • 開(kāi)啟 pool qos iops限速 測(cè)試rbd的iops
  • 開(kāi)啟 pool qos bps限速 測(cè)試rbd的bps
  • 測(cè)試qemu對(duì)塊設(shè)備進(jìn)行bps限速
  • 測(cè)試qemu對(duì)塊設(shè)備進(jìn)行iops限速
  • 刪除qos再次進(jìn)行測(cè)試,驗(yàn)證已經(jīng)恢復(fù)

測(cè)試步驟

在ceph 14版本開(kāi)始支持rbd的qos 詳細(xì)配置參數(shù)可以參考https://docs.ceph.com/en/latest/rbd/rbd-config-ref/

圖片圖片

ceph rbd的qos是在librbd上進(jìn)行限制的。

查看當(dāng)前鏡像的qos配置

rbd -p libvirt-pool config image ls scan.img|grep qos

查看存儲(chǔ)池的qos配置,存儲(chǔ)池的qos限制的是所有鏡像總的qos不超過(guò)設(shè)置的值

rbd config pool ls libvirt-pool|grep qos

可以看到默認(rèn)不設(shè)置的時(shí)候bps和iops都為0,表示默認(rèn)不限速。rbd_qos_schedule_tick_min=50表示qos的最小調(diào)度間隔是50毫秒,每隔50毫秒檢查一次當(dāng)前的io操作是否符合qos配置。這里解釋下rbd_qos_write_iops_burst_secnotallow=1表示在達(dá)到寫入 IOPS 限制(由 rbd_qos_write_iops_limit 參數(shù)設(shè)置)之后,RBD 圖像可以以突發(fā)模式繼續(xù)寫入操作的時(shí)間長(zhǎng)度。這個(gè)突發(fā)模式允許 IOPS 短時(shí)間內(nèi)超過(guò)設(shè)定的限制值,為的是處理短暫的高負(fù)載情況,而不是持續(xù)的高速寫入。這個(gè)參數(shù)的值設(shè)定為 1 秒,意味著在觸發(fā) IOPS 限制后,寫入操作可以在接下來(lái)的 1 秒內(nèi)保持較高的 IOPS,之后將被限制回設(shè)定的 rbd_qos_write_iops_limit 值,同樣對(duì)bps的burst_seconds的意義也是一樣。

圖片圖片

解釋下相關(guān)參數(shù):

  • IOPS:每秒 I/O 數(shù)(任何類型的 I/O)
  • read IOPS:每秒讀取 I/O 數(shù)
  • write IOPS:每秒寫入 I/O 數(shù)
  • bps:每秒字節(jié)數(shù)(任何類型的 I/O)
  • read bps:每秒讀取的字節(jié)數(shù)
  • write bps:每秒寫入的字節(jié)數(shù)

使用fio進(jìn)行讀取寫入測(cè)試

fio 是一個(gè)靈活的 I/O 性能測(cè)試工具,廣泛用于評(píng)估磁盤和文件系統(tǒng)的性能。以下是一個(gè)基本的示例,展示如何使用 fio 進(jìn)行隨機(jī)讀寫測(cè)試:

fio --name=randrw_test --ioengine=libaio --iodepth=1 --rw=randrw --rwmixread=50 --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

參數(shù)解釋

  • --name=randrw_test: 測(cè)試的名稱。
  • --ioengine=libaio: 使用 Linux AIO(異步 I/O)作為 I/O 引擎。
  • --iodepth=1: I/O 深度,這里設(shè)置為 1,意味著每個(gè) job 在任何時(shí)刻只有一個(gè) I/O 操作在等待。
  • --rw=randrw: 測(cè)試類型為隨機(jī)讀寫。
  • --rwmixread=50: 讀寫混合比例,這里設(shè)置為 50%,意味著讀操作和寫操作各占 50%。
  • --bs=4k: 塊大小設(shè)置為 4KB。
  • --direct=1: 使用直接 I/O,繞過(guò)緩存。
  • --size=1G: 每個(gè) job 測(cè)試文件的大小。
  • --numjobs=4: 同時(shí)運(yùn)行的 job 數(shù)量。
  • --runtime=60: 測(cè)試運(yùn)行時(shí)間,這里設(shè)置為 60 秒。
  • --group_reporting: 作為一個(gè)組來(lái)報(bào)告所有 job 的結(jié)果。

在不進(jìn)行qos限速的情況下,我使用fio在rbd鏡像存儲(chǔ)的虛擬機(jī)里進(jìn)行隨機(jī)讀寫測(cè)試

rbd perf image iostat --pool libvirt-pool

圖片圖片

開(kāi)啟 image qos iops限制此鏡像的iops為100 測(cè)試scan.img的iops

rbd -p libvirt-pool config image set  scan.img rbd_qos_iops_limit 100

再次在scan.img所在的虛擬機(jī)上進(jìn)行隨機(jī)讀寫測(cè)試

fio --name=randrw_test --ioengine=libaio --iodepth=1 --rw=randrw --rwmixread=50 --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

查看iops限速后的結(jié)果

rbd perf image iostat --pool libvirt-pool

可以看到效果很明顯,iops讀寫不超過(guò)100

圖片圖片

開(kāi)啟 image qos bps限制此鏡像的bps為100KiB/s 測(cè)試scan.img的bps

rbd -p libvirt-pool config image set  scan.img rbd_qos_iops_limit 0
rbd -p libvirt-pool config image set  scan.img rbd_qos_bps_limit 100000

再次在scan.img所在的虛擬機(jī)上進(jìn)行隨機(jī)寫測(cè)試

fio --name=randrw_test --ioengine=libaio --iodepth=1 --rw=randwrite --rwmixread=50 --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

查看bps限速后的結(jié)果

rbd perf image iostat --pool libvirt-pool

可以看到效果很明顯,寫吞吐不超過(guò)100KiB/s

圖片圖片

后面單獨(dú)對(duì)讀寫的iops和bps各進(jìn)行了測(cè)試,發(fā)現(xiàn)符合預(yù)期。

開(kāi)啟 pool qos iops限速 測(cè)試存儲(chǔ)池所有鏡像的iops

rbd -p libvirt-pool config image set  scan.img rbd_qos_bps_limit 0
rbd config pool set libvirt-pool rbd_qos_iops_limit 200

圖片圖片

再次在scan.img所在的虛擬機(jī)上進(jìn)行隨機(jī)讀寫測(cè)試

fio --name=randrw_test --ioengine=libaio --iodepth=1 --rw=randrw --rwmixread=50 --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

這里發(fā)現(xiàn)對(duì)于pool層面的iops限速?zèng)]什么效果

圖片圖片

開(kāi)啟 pool qos bps限速 測(cè)試存儲(chǔ)池所有鏡像的bps

rbd config pool set libvirt-pool rbd_qos_iops_limit 0
rbd config pool set libvirt-pool rbd_qos_bps_limit 1000000

再次在scan.img所在的虛擬機(jī)上進(jìn)行隨機(jī)寫測(cè)試

fio --name=randrw_test --ioengine=libaio --iodepth=1 --rw=randwrite --rwmixread=50 --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

這里發(fā)現(xiàn)對(duì)于pool層面的bps限速也沒(méi)什么效果

圖片圖片

后面單獨(dú)對(duì)pool層面分別進(jìn)行讀、寫的iops和bps,發(fā)現(xiàn)限速也沒(méi)什么效果

測(cè)試qemu對(duì)塊設(shè)備進(jìn)行bps限速

可以通過(guò)下面命令查看當(dāng)前虛擬機(jī)的qos,這里查看scan虛擬機(jī)vdb磁盤的qos,也就是我們剛才測(cè)試rbd qos的那個(gè)磁盤,0表示不限速

virsh blkdeviotune  scan vdb

圖片圖片

對(duì)scan虛擬機(jī)的vdb進(jìn)行bps限制為5MiB/s

virsh blkdeviotune  scan vdb --total-bytes-sec 5000000  --live

圖片圖片

查看bps限速后的結(jié)果,iops實(shí)際不超過(guò)5MiB/s

測(cè)試qemu對(duì)塊設(shè)備進(jìn)行iops限速

對(duì)scan虛擬機(jī)的vdb進(jìn)行iops限制

virsh blkdeviotune  scan vdb --total-bytes-sec 0  --live
virsh blkdeviotune  scan vdb --total-iops-sec 1000  --live

在scan虛擬機(jī)里對(duì)其進(jìn)行隨機(jī)讀寫測(cè)試

fio --name=Test --ioengine=libaio --iodepth=64 --rw=randrw  --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

圖片圖片

查看iops限速后的結(jié)果,iops實(shí)際不超過(guò)1000

刪除qos再次進(jìn)行測(cè)試

再次在scan.img所在的虛擬機(jī)上進(jìn)行隨機(jī)讀寫測(cè)試

fio --name=Test --ioengine=libaio --iodepth=64 --rw=randrw  --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

圖片圖片

測(cè)試結(jié)論

對(duì)于ceph rbd qos的使用,還是建議在image層面進(jìn)行bps和iops的限速,pool層面的限速效果不明顯。當(dāng)然也可以使用qemu在塊設(shè)備上做虛擬機(jī)磁盤的io限制,使用qemu做qos的優(yōu)點(diǎn)是本地硬盤也可以進(jìn)行限速,而ceph rbd的qos對(duì)象只是ceph集群中的rbd鏡像。

責(zé)任編輯:武曉燕 來(lái)源: 運(yùn)維開(kāi)發(fā)故事
相關(guān)推薦

2025-03-05 08:02:45

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2025-04-16 08:01:05

Ceph對(duì)象存儲(chǔ)

2023-05-31 08:42:02

管理產(chǎn)品技術(shù)項(xiàng)目

2022-04-07 11:43:24

UPnPDLNA協(xié)議

2022-12-07 09:01:14

布局容器VStack?

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2022-03-15 20:18:35

單元測(cè)試工具

2023-08-04 08:20:56

DockerfileDocker工具

2023-09-21 08:16:56

JDK 21向量計(jì)算計(jì)算

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2024-01-15 08:41:25

SwiftTypeScrip語(yǔ)法

2023-10-31 08:10:24

域名域名解析服務(wù)器

2023-10-31 09:04:21

CPU調(diào)度Java

2022-02-14 07:03:31

網(wǎng)站安全MFA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)