2013-12-18 29 views
0

OpenStack Swift deployment documentation說:RAID磁盤的使用模式和性能

斯威夫特的磁盤使用模式是最壞的情況下可能的RAID和性能非常迅速降低使用RAID 5或6

但我失敗了找到任何細節或解釋。因此,在深入研究Swift源代碼之前,我想問問社區:

  • 什麼樣的RAID友好的「磁盤使用模式」是?
  • 斯威夫特的磁盤使用情況如此特別?

回答

1

斯威夫特是完全隨機IO模型,由於其Ring數據結構。簡而言之,Ring將文件統一映射到所有磁盤。

如果您的隨機寫入工作量很高,則RAID 5或RAID 6性能非常差。查看更多信息here

該場景與數據庫類似。數據庫也有點統一地存儲文件,例如mongodb。你會發現他們不建議RAID 5或RAID 6。只推薦RAID 10。

1

爲什麼首先你需要使用RAID的RAID?

Swift本地使用XFS &大部分操作都是通過其本地算法RING來處理的。

另外,如果你想RING算法my colleagues did a video deep dive in on RING.

希望它可以幫助裏面深挖,

阿圖爾

+0

謝謝,但我的問題不是關於Swift本身,我不打算將它用於RAID。我想了解磁盤使用問題,它如何與RAID相關,以及(例如)能夠解釋爲什麼Swift不應該以那種方式用於堅持「以防萬一」的人。 – bereal

+0

抱歉,但我的知識僅限於Swift&RING,因此給了你我要分享的內容。我希望有人會幫助你解決你的問題。乾杯。 – koolhead17

1
  1. 什麼樣的RAID友好型「磁盤使用模式」是?

人們使用RAID卡,原因如下:

1)從單個驅動器故障保護(除了RAID 0) 2)獲得比單一硬盤更高的I/O性能(RAID 5,6, 10,50等,並用BBU寫回緩存等) 3)使用比主板可以支持RAID/HBA卡更多的驅動器 4)某些存儲管理功能(GUI或命令行工具)

  1. Swift的磁盤使用情況如此特別?

夫特磁盤I/O是 1)大多是隨機上的A/C/O服務器 2)並聯 3)6倍的放大係數高併發用於把一個對象(寫3X對象和更新3次集裝箱在至少,更不用說其他複製過程,審計師等)

Openstack Swift旨在使用商品服務器和硬盤驅動器,這意味着在質量相當好的硬件(通常不包括RAID卡)上使用最低的成本。但是,需要RAID/HBA卡才能在服務器中使用8-10 + HDD,因此在實踐中很多人會使用RAID卡,但將每個硬盤配置爲單個驅動器RAID0,或者如果主板不支持,則使用HBA卡服務器機箱可容納的HDD數量。

您當然可以使用RAID5,6,10,並且會失去一些容量來獲得一些保護和性能,但這通常會比需要的成本更高。 Swift的可調複製因子默認爲3x。