虛擬機器IO資源爭搶的解決方法
背景
由於Ceph儲存和Nova計算節點是混合部署的,而且虛擬機器的資料卷是共用Ceph的Volume儲存池。難免會出現叢集中某一臺虛擬機器的資料卷io飈高的情況,造成其他虛擬機器iowait跟著飈高。出現這種情況對於io比較敏感的業務是災難性的。大部分情況,業務虛擬機器會隨著磁碟io下降自動恢復。但是很多情況我們並不希望叢集內出現這種io資源搶佔的情況。
方案
第一種
對於io密集型的虛擬機器,我們通常採用高效能的儲存叢集來滿足此類業務的需求。
Ceph方面
利用SSD硬碟或者高效能硬碟建立一個新的儲存池,手動修改CRush,將新硬碟關聯到新儲存池
OpenStack方面
- 配置cinder.conf,建立一個新的volume-backend
- 建立新的volume-type,io高密集的卷建立在新的volume-type裡面
第二種
對於Ceph儲存本身是低成本的構建架構,沒有SSD或者高效能硬碟時,只能通過限制虛擬機器對於資料卷的讀寫io或者速率了。
Ceph方面
沒有對於配置,目前我用的Jewel版本暫時不支援RBD的Qos設定,後面新版本也許支援
OpenStack方面
1. Qos策略
Cinder的Qos支援前端和後端兩種策略,前端是在qemu中實現,後端是在儲存叢集上實現。由於Ceph不支援,那我們就只能在前端實現
目前前端qemu支援配置的qos key如下:
- total_bytes_sec: the total allowed bandwidth for the guest per second
- read_bytes_sec: sequential read limitation
- write_bytes_sec: sequential write limitation
- total_iops_sec: the total allowed IOPS for the guest per second
- read_iops_sec: random read limitation
- write_iops_sec: random write limitation
2. 實現方法
通過呼叫libvirt介面,對資料卷新增了iotune資訊,如下:
建立標準和關聯qos
# cinder qos-create middleRW.limit consumer="front-end" read_iops_sec=300 write_iops_sec=300 read_bytes_sec=104857600 write_bytes_sec=62914560
# cinder qos-associate <qos_specs> <volume_type_id>
libvirt中對資料卷的限制
</disk>
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<auth username='cinder'>
<secret type='ceph' uuid='48baec00-46f8-4aa1-908f-c7991961b022'/>
</auth>
<source protocol='rbd' name='volumes/volume-756ed2a4-5c54-4b02-956f-e1ec371a2c58'>
<host name='10.33.64.100' port='6789'/>
<host name='10.33.64.101' port='6789'/>
<host name='10.33.64.102' port='6789'/>
<host name='10.33.64.103' port='6789'/>
<host name='10.33.64.104' port='6789'/>
</source>
<backingStore/>
<target dev='sdb' bus='scsi'/>
<iotune>
<read_bytes_sec>104857600</read_bytes_sec>
<write_bytes_sec>41943040</write_bytes_sec>
<read_iops_sec>300</read_iops_sec>
<write_iops_sec>300</write_iops_sec>
</iotune>
<serial>756ed2a4-5c54-4b02-956f-e1ec371a2c58</serial>
<alias name='scsi0-0-0-1'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
3. 簡單測試
限制之前
# dd bs=1M count=4k if=/dev/zero of=test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 35.2682 s, 122 MB/s
寫限制在40M/s,基本滿足需求
# dd bs=1M count=4k if=/dev/zero of=test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 102.72 s, 41.8 MB/s
其它
當然也可以用libvirt的blkdeviotune
命令對虛擬機器做io限制,這樣不光可以對資料卷做限制,也可以對虛擬機器的根盤做個性化配置。
# virsh blkdeviotune myinstances sda --read-bytes-sec 104857600 --write-bytes-sec 41943040 --read-iops-sec 300 --write-iops-sec 300 --read-bytes-sec-max 104857600 --write-bytes-sec-max 41943040 --group-name drive-scsi0-0-0-1 --read-bytes-sec-max-length 1 --write-bytes-sec-max-length 1 --read-iops-sec-max-length 1 --write-iops-sec-max-length 1
# virsh blkdeviotune 8 sdb
total_bytes_sec: 0
read_bytes_sec : 104857600
write_bytes_sec: 41943040
total_iops_sec : 0
read_iops_sec : 300
write_iops_sec : 300
total_bytes_sec_max: 0
read_bytes_sec_max: 10485760
write_bytes_sec_max: 4194304
total_iops_sec_max: 0
read_iops_sec_max: 30
write_iops_sec_max: 30
size_iops_sec : 0
group_name : drive-scsi0-0-0-1
total_bytes_sec_max_length: 0
read_bytes_sec_max_length: 1
write_bytes_sec_max_length: 1
total_iops_sec_max_length: 0
read_iops_sec_max_length: 1
write_iops_sec_max_length: 1
相關文章
- 虛擬機器VMware“內部錯誤”的解決方法虛擬機
- 解決虛擬機器後CRS中沒有ASM資源的問題虛擬機ASM
- “vmware tools 只能虛擬機器中安裝”的解決方法虛擬機
- vmware開啟虛擬機器就藍屏重啟 vmware虛擬機器藍屏解決方法虛擬機
- RedHat虛擬機器打不開磁碟問題如何解決?RedHat虛擬機器打不開磁碟的解決方法Redhat虛擬機
- 虛擬主機伺服器錯誤404解決方法伺服器
- xshell 連線本地虛擬機器很慢解決方法虛擬機
- 虛擬機器搭建的資源分配設定虛擬機
- Win10系統虛擬機器VMware開機黑屏的解決方法Win10虛擬機
- LINUX虛擬機器不能聯通Xshell解決方法Linux虛擬機
- 【虛擬機器的瞭解】虛擬機
- 虛擬機器橋接模式下SSH不能連線的解決方法虛擬機橋接模式
- VMware虛擬機器優化,提高虛擬機器執行速度的方法?虛擬機優化
- centos Vmware虛擬機器 Oh no,something has gone wrong! 解決方法CentOS虛擬機Go
- vmware開啟虛擬機器就藍色畫面重啟 vmware虛擬機器藍色畫面解決方法虛擬機
- win10虛擬機器無法上網怎麼辦_win10虛擬機器無法上網的解決方法Win10虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 虛擬機器Windows 2003忘記密碼解決方法虛擬機Windows密碼
- 解決本地連線不上虛擬機器和虛擬機器ping不同外網的問題虛擬機
- 在RedHat虛擬機器下單/雙引號打不出來的解決方法Redhat虛擬機
- JVM虛擬機器詳解JVM虛擬機
- 解讀JVM虛擬機器JVM虛擬機
- [資源]伺服器虛擬化伺服器
- 解決 VMware 建立虛擬機器時 unsuccessful報錯虛擬機
- vmware ubuntu虛擬機器問題彙總解決Ubuntu虛擬機
- 重灌 Homestead 虛擬機器 暴力解決難題虛擬機
- 虛擬機器搭建測試環境解決方案虛擬機
- 虛擬機器vm開機黑屏處理,簡單解決虛擬機
- vmware虛擬機器執行卡慢的解決辦法虛擬機
- 虛擬機器跑Ubuntu沒有網路的解決方案虛擬機Ubuntu
- VMware15.1以下版本,開啟虛擬機器黑屏的問題解決方法虛擬機
- 用命令啟動VM虛擬機器不顯示介面報錯的解決方法虛擬機
- 工具資源系列之給虛擬機器裝個centos虛擬機CentOS
- VirtualBox 主機ping不通虛擬機器的解決辦法虛擬機
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- VirtualBox虛擬機器內的系統時間無法調整的解決方法虛擬機
- windows上使用官方的虛擬機器的方法Windows虛擬機
- java虛擬機器和Dalvik虛擬機器Java虛擬機