Windows 上直接使用Ceph以及效能測試!

Windows 上直接使用Ceph以及效能測試!

新鈦雲服已為您服務

1296

Windows 上直接使用Ceph以及效能測試!

在 Windows 上本地使用 Ceph

由於

Cloudbase Solutions

Suse 的

合作,當前

Ceph 16 (Pacific)

提供了 Windows 原生支援。

Ceph 可能是最常用的軟體定義儲存解決方案。根據調查(

https://www。openstack。org/analytics

),超過 70% 的 OpenStack 部署由 Ceph 提供支援。考慮到它可以在商用硬體上執行,而且能夠擴充套件到數百個儲存節點並提供不錯的效能,這也就不足為奇了。

在 Windows 上使用 Ceph 一直是一個痛點,以往需要

iSCSI

閘道器等代理或使用 Samba重新匯出

CephFS

。這些方法提供了次優的效能並使部署架構過於複雜。現在所有麻煩都沒有了,因為

RBD

和 CephFS 可以原生地在 Windows 上使用。

為獲得最佳效能和功能,建議使用

Windows Server 2019

Windows Server 2016

也受支援,但有一些已知限制。較舊的 Windows Server 版本以及客戶端版本(如 Windows 10)可能也能正常工作,但目前不受支援。

Windows 上直接使用Ceph以及效能測試!

安裝:

這個 MSI 安裝程式(

https://cloudbase。it/ceph-for-windows/

)是在 Windows 上安裝 Ceph 的推薦方式。除了 Ceph 二進位制檔案,它還捆綁了

WNBD

驅動程式,用於對映 RBD 映象。

如果您更喜歡手動構建和安裝Ceph(

https://github。com/ceph/ceph/blob/master/README。windows。rst

)和WNBD(

https://github。com/cloudbase/wnbd

),請參考這些指南。

配置:

在 Windows 上使用 Ceph 需要最少的配置。預設配置檔案位置是`C:\ProgramData\ceph\ceph。conf*。

這是一個配置示例。不要忘記填寫正確的 Ceph Monitor 地址並在指定位置提供 Ceph 金鑰環檔案。目前,必須使用斜槓“/”而不是反斜槓“\”作為路徑分隔符。

[global]

log to stderr = true

; Uncomment the following to use Windows Event Log

; log to syslog = true

run dir = C:/ProgramData/ceph/out

crash dir = C:/ProgramData/ceph/out

; Use the following to change the cephfs client log level

; debug client = 2

[client]

keyring = C:/ProgramData/ceph/keyring

; log file = C:/ProgramData/ceph/out/$name。$pid。log

admin socket = C:/ProgramData/ceph/out/$name。$pid。asok

; client_permissions = true

; client_mount_uid = 1000

; client_mount_gid = 1000

[global]

mon host =

RBD:

Rados 塊裝置 (RBD)

一直是這項工作的主要重點。您可能已經熟悉的相同 CLI 可用於建立 RBD 映像並將它們附加到主機和

Hyper-V

虛擬機器。

以下 PowerShell 示例建立一個 RBD 映像,將其附加到主機並在頂部新增一個

NTFS

分割槽。

rbd create blank_image ——size=1G

rbd device map blank_image

$mappingJson = rbd-wnbd show blank_image ——format=json

$mappingJson = $mappingJson | ConvertFrom-Json

$diskNumber = $mappingJson。disk_number

# The disk must be online before creating or accessing partitions。

Set-Disk -Number $diskNumber -IsOffline $false

# Initialize the disk, partition it and create a fileystem。

Get-Disk -Number $diskNumber | `

Initialize-Disk -PassThru | `

New-Partition -AssignDriveLetter -UseMaximumSize | `

Format-Volume -Force -Confirm:$false

預設情況下,所有 RBD 對映都是持久的。可以使用上述 MSI 安裝程式部署的“

ceph-rbd

”服務負責在主機重新啟動後重新附加 RBD 映像。這還允許調整 Windows 服務啟動順序,以便在啟動可能依賴它的服務之前對映 RBD 映像。

以下螢幕截圖顯示了附加到 Hyper-V 虛擬機器的 RBD 映象以及基準測試結果。我們將在以後的文章中深入研究基準測試。

Windows 上直接使用Ceph以及效能測試!

WNBD:

RBD 映像透過使用WNBD Storport Miniport 驅動程式(

https://github。com/cloudbase/wnbd

)公開為 SCSI 磁碟,作為此移植工作的一部分編寫。

WNBD 驅動程式提供的一項有趣功能是 NBD 客戶端功能,允許它用於附加任意 NBD 匯出。在實施更有效的機制之前,這是附加 RBD 影象的預設方式。由於它的實用性,這個特性被保留了下來,儘管它可能在某個時候被移到驅動程式之外,利用與

rbd-wnbd

相同的 API 。

要掛載獨立的 NBD 映像,請使用以下命令:

wnbd-client map export_name $nbdAddress ——port $nbdPort

CephFS:

Windows 上的

CephFS

支援是我們的第二個主要目標,目前處於試驗階段。我們正在使用類似於 FUSE 的Dokany以及看似廢棄的 ceph-dokan專案的改進版本。

以下簡單命令使用“X:”驅動器號掛載 CephFS:

ceph-dokan。exe -l x

當前限制:

雖然移植的當前狀態已經涵蓋了大多數的情況,但您應該注意一些限制。這些缺失的功能可能會在後續版本中實現。

RBD映象還不能用於備份

群集共享卷(CSV)

Windows Server故障轉移群集(WSFC)

,這需要SCSI永久保留的支援

WNBD 磁碟無法實時調整大小

Python 繫結不可用

Ceph CLI工具還不能以本機方式使用。但是,它可以透過Windows Subsystem for Linux與正在執行的服務聯絡。

Windows 上的 Ceph – 效能

在此 Ceph Windows 移植之前,從 Windows 訪問 Ceph 儲存的唯一方法是使用

Ceph iSCSI 閘道器

,這很容易成為效能瓶頸。我們的目標是超越 iSCSI 閘道器並儘可能接近本機 Linux RBD 吞吐量。

Windows 上直接使用Ceph以及效能測試!

測試環境:

在展示一些實際結果之前,讓我們先談談測試環境。我們使用了 4 個相同的裸機伺服器,具有以下規格:

CPU

Intel(R) Xeon(R) E5-2650 @ 2。00GHz

2 sockets

8 cores per socket

32 vcpus

memory

128GB

1333Mhz

network adapters

Chelsio T420-C

2 x 10Gb/s

LACP bond

9000 MTU

您可能已經注意到我們沒有提到儲存磁碟,那是因為 Ceph OSD 被配置為使用記憶體支援池。請記住,我們將重點放在 Ceph 客戶端效能上,而不是 Linux OSD 端的儲存 iops。

我們使用了一個執行在 Ubuntu 20。04 之上的一體化 Ceph 16 叢集。在客戶端,我們涵蓋了

Windows Server 2016

Windows Server 2019

以及

Ubuntu 20.04

基準測試是使用fio工具執行的。它是高度可配置的,常用於 Ceph 基準測試,最重要的是,它是跨平臺的。

下面是一個示例 FIO 命令列呼叫,供有興趣重複測試的任何人使用。我們正在使用直接 IO、2MB 塊、64 個併發非同步 IO 操作,測試超過 8GB 塊的各種 IO 操作。測試塊裝置時,我們使用原始磁碟裝置,而不是使用 NTFS 或 ReFS 分割槽。請注意,這在 Windows 上可能需要 fio>=3。20。

fio ——randrepeat=1 ——direct=1 ——gtod_reduce=1 ——name=test ——bs=2M ——iodepth=64 ——size=8G ——readwrite=randwrite ——numjobs=1 ——filename=\\。\PhysicalDrive2

Windows 調優:

以下設定可以提高 IO 吞吐量:

Windows 電源計劃——很少有人認為這是伺服器的問題,但預設情況下,“高效能”電源計劃預設

啟用,這會導致 CPU 節流男實

將 Ceph 和 FIO 二進位制檔案新增到 Windows Defender 白名單

使用巨型星史論鈣類法幀 - 我們注意到效能提高了 15%

在 Windows Server 2016 上啟用 CUBIC TCP 擁塞演算法

檢測結果:

裸機 RBD 和 CephFS IO

讓我們直接看 RBD 和 CephFS 基準測試結果。請注意,我們使用 MB/s 來測量速度(

越高越好

)。

值得一提的是,RBD 快取已被禁用。正如我們所見,Windows Server 2019 設法提供了令人印象深刻的 IO 吞吐量。Windows Server 2016 沒有那麼快,但它仍然設法勝過 Linux RBD 客戶端,包括 krbd。我們在 CephFS 方面看到了相同的模式。

我們已經使用多合一的 Ceph 叢集測試了 iSCSI 閘道器。考慮到 iSCSI 閘道器不能很好地擴充套件,效能瓶頸可能會隨著更大的 Ceph 叢集變得更加嚴重。

+——————-+——————+————+————-+————+————-+

| OS | tool | rand_r | seq_r | rand_w | seq_w |

+——————-+——————+————+————-+————+————-+

| WS2016 | rbd-wnbd | 854 | 925 | 807 | 802 |

| WS2019 | rbd-wnbd | 1317 | 1320 | 1512 | 1549 |

| WS2019 | iscsi-gw | 324 | 319 | 624 | 635 |

| Ubuntu 20 | krbd | 696 | 669 | 659 | 668 |

| Ubuntu 20 | rbd-nbd | 559 | 567 | 372 | 407 |

| | | | | | |

| WS2016 | ceph-dokan | 642 | 605 | 690 | 676 |

| WS2019 | ceph-dokan | 988 | 948 | 938 | 935 |

| Ubuntu 20 | ceph-fuse | 162 | 181 | 121 | 138 |

| Ubuntu 20 | kern ceph | 687 | 663 | 677 | 674 |

+——————-+——————+————+————-+————+————-+

虛擬機器

提供虛擬機器塊儲存也是 Ceph 的主要用例之一。以下是Ubuntu 20。04 上

Hyper-V Server 2019

KVM

的測試結果,它們都執行從 RBD 映像啟動的

Ubuntu 20.04

Windows Server 2019 VM

+————————————-+————————+————————+

| Hypervisor \ Guest OS | WS 2019 | Ubuntu 20。04 |

+————————————-+————+————-+————+————-+

| | read | write | read | write |

+————————————-+————+————-+————+————-+

| Hyper-V | 1242 | 1697 | 382 | 291 |

| KVM | 947 | 558 | 539 | 321 |

+————————————-+————+————-+————+————-+

WS 2019 Hyper-V VM 設法獲得了幾乎原生的 IO 速度。有趣的是,即使在 KVM 上,它的表現也比 Ubuntu 客戶機要好,這可能值得研究。

WINBD

如上文所述,我們最初的方法是使用 NBD 協議附加 RBD 映象。這並沒有提供我們希望的效能,主要是由於

Winsock Kernel (WSK)

框架,這就是我們從頭開始實施更高效的 IO 通道的原因。為方便起見,您仍然可以將 WNBD 作為獨立的 NBD 客戶端用於其他目的,在這種情況下,您可能有興趣瞭解它的效能如何。在此測試環境中,它設法在 WS 2019 上提供 933MB/s 的速度,在 WS 2016 上提供 280MB/s 的速度。

目前,

rbd-wnbd

使用

DeviceIoControl

來檢索 IO 請求並將 IO 回覆傳送回 WNBD 驅動程式,這也稱為反向呼叫。與 RBD NBD 伺服器不同,

libwnbd

允許調整 IO 排程工作者的數量。下表顯示了工人數量如何影響效能。請記住,在這種特定情況下,我們正在對驅動程式連線進行基準測試,因此沒有資料從/傳輸到 Ceph 叢集。這讓我們大致瞭解了 WNBD 可以提供的最大理論頻寬,使可用 CPU 完全飽和:

+————-+——————————+

| Workers | Bandwidth (MB/s) |

+————-+——————————+

| 1 | 1518 |

| 2 | 2917 |

| 3 | 4240 |

| 4 | 5496 |

| 8 | 11059 |

| 16 | 13209 |

| 32 | 12390 |

+————-+——————————+

RBD 命令

除了 IO 效能,我們還對確保可以同時管理大量磁碟感興趣。為此,我們編寫了一個簡單的 Python 指令碼(

https://raw。githubusercontent。com/petrutlucian94/ceph_test/master/scale_test。py

),該指令碼(

https://raw。githubusercontent。com/petrutlucian94/ceph_test/master/scale_test。py

)建立一個臨時映像,將其附加到主機,執行各種 IO 操作,然後對其進行清理。這是 1000 次迭代的測試結果,每次 50 次。該測試對於提高 RBD 效能和穩定性至關重要。

+————————————————————————————————————————-+

| Duration (s) |

+——————————————+——————+——————+——————-+——————+————-+

| function | min | max | total | mean | std_dev |

+——————————————+——————+——————+——————-+——————+————-+

| TestRunner。run | 283。5339 | 283。5339 | 283。5339 | 283。5339 | 0。0000 |

| RbdTest。initialize | 0。3906 | 10。4063 | 3483。5180 | 3。4835 | 1。5909 |

| RbdImage。create | 0。0938 | 5。5157 | 662。8653 | 0。6629 | 0。6021 |

| RbdImage。map | 0。2656 | 9。3126 | 2820。6527 | 2。8207 | 1。5056 |

| RbdImage。get_disk_number | 0。0625 | 8。3751 | 1888。0343 | 1。8880 | 1。5171 |

| RbdImage。_wait_for_disk | 0。0000 | 2。0156 | 39。1411 | 0。0391 | 0。1209 |

| RbdFioTest。run | 2。3125 | 13。4532 | 8450。7165 | 8。4507 | 2。2068 |

| RbdImage。unmap | 0。0781 | 6。6719 | 1031。3077 | 1。0313 | 0。7988 |

| RbdImage。remove | 0。1406 | 8。6563 | 977。1185 | 0。9771 | 0。8341 |

+——————————————+——————+——————+——————-+——————+————-+

總結:

在隨著Ceph的快速發展,跨平臺的相容性會越來越好。

參考:

https://cloudbase。it/ceph-on-windows-performance/

https://cloudbase。it/ceph-on-windows-part-1/

瞭解新鈦雲服

新鈦雲服榮膺第四屆FMCG零售消費品行業CIO年會「年度數字化服務最值得信賴品牌獎」

新鈦雲服三週歲,公司月營收超600萬元,定下百年新鈦的發展目標

當IPFS遇見雲服務|新鈦雲服與冰河分散式實驗室達成戰略協議

新鈦雲服正式獲批工信部ISP/IDC(含網際網路資源協作)牌照

深耕專業,矗立鰲頭,新鈦雲服獲千萬Pre-A輪融資

新鈦雲服,打造最專業的Cloud MSP+,做企業業務和雲之間的橋樑

新鈦雲服一週年,完成兩輪融資,服務五十多家客戶

上海某倉儲物流電子商務公司混合雲解決方案