av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

盤(pán)點(diǎn)Openstack那些頑固bug

盤(pán)點(diǎn)OpenStack那些頑固Bug

作者:付廣平 2017-04-20 14:58:16

開(kāi)發(fā)

開(kāi)發(fā)工具

OpenStack Openstack支持虛擬機(jī)軟刪除功能,用戶可以設(shè)置虛擬機(jī)的保留時(shí)間。當(dāng)用戶刪除虛擬機(jī)時(shí),不會(huì)真的立即刪除虛擬機(jī),而僅僅是做一個(gè)刪除標(biāo)記,保留時(shí)長(zhǎng)為設(shè)置的保留時(shí)間,當(dāng)超過(guò)保留時(shí)間時(shí),系統(tǒng)才真正清理虛擬機(jī)。該功能能夠使用戶不慎刪除虛擬機(jī)能立即撤回操作,避免數(shù)據(jù)丟失。

本文將盤(pán)點(diǎn)Openstack中那些頑固bug,這些bug至少存活了一年。

1. 設(shè)置quota時(shí)沒(méi)有檢查租戶是否存在

  • bug地址:Nova should confirm quota requests against Keystone。
  • report時(shí)間: 2013-02-07
  • 存活壽命: 3歲半

當(dāng)設(shè)置quota時(shí)需要指定租戶project/tenant,但是目前nova和cinder都不會(huì)對(duì)租戶是否存在進(jìn)行檢查,當(dāng)該租戶的quota記錄不存在時(shí)就創(chuàng)建一個(gè)新的quota記錄。比如:

  
 
 
  1. cinder quota-update --volumes 10 any-string 

以上無(wú)論你輸入任何字符串,都會(huì)返回200 OK,即使租戶并不存在。

由于租戶配額管理只有admin角色有權(quán)限,因此必須假定:

And as an admin (trusted user), we expect them to not break things.

即管理員是可信任的,假定你不會(huì)把事情搞砸。

當(dāng)然作為管理員惡意攻擊不太可能,不過(guò)很多管理員都可能會(huì)把租戶輸成租戶名,而注意該API只支持租戶id,你輸入租戶名不會(huì)報(bào)錯(cuò),但不會(huì)生效。

該bug難以解決的原因是目前keystone尚無(wú)實(shí)現(xiàn)檢查租戶是否存在的接口。

針對(duì)該bug已經(jīng)提交成一個(gè)獨(dú)立的BP,validate-project-with-keystone,并將在下個(gè)版本Ocata實(shí)現(xiàn)。

使用python-openstackclient會(huì)對(duì)租戶進(jìn)行檢查,設(shè)置quota時(shí)可以考慮使用該client取代。

2. 使用統(tǒng)一分布式存儲(chǔ)時(shí)計(jì)算磁盤(pán)空間錯(cuò)誤

  • bug地址: nova hypervisor-stats shows wrong disk usage with shared storage
  • report時(shí)間: 2015-01-25
  • 存活壽命: 1歲半

nova hypervisor-stats命令用于獲取整個(gè)Openstack集群可用的物理資源總量,統(tǒng)計(jì)包括cpu、內(nèi)存和磁盤(pán)三種資源,實(shí)現(xiàn)方法是由各個(gè)計(jì)算節(jié)點(diǎn)的resource_tracker統(tǒng)計(jì)該節(jié)點(diǎn)的資源量,并定期更新到數(shù)據(jù)庫(kù)中。nova調(diào)用hypervisor-stats時(shí)即對(duì)所有計(jì)算節(jié)點(diǎn)的資源求總和。對(duì)于cpu以及內(nèi)存完全沒(méi)有問(wèn)題,但如果使用分布式共享存儲(chǔ)作為后端存儲(chǔ)時(shí),計(jì)算磁盤(pán)空間就是錯(cuò)誤的,因?yàn)槊總€(gè)計(jì)算節(jié)點(diǎn)看到的資源都是分布式存儲(chǔ)的總資源量大小。比如使用ceph做后端存儲(chǔ),每個(gè)計(jì)算節(jié)點(diǎn)看到的都是ceph df看到可用空間的大小,在計(jì)算資源總和時(shí)不應(yīng)該再相加,否則就相當(dāng)于多算了N倍。因此如果有N個(gè)計(jì)算節(jié)點(diǎn),相當(dāng)于對(duì)資源計(jì)算多算了N倍。

3. 軟刪除存在DOS漏洞。

  • bug地址: Enabling soft-deletes opens a DOS on compute hosts
  • report時(shí)間: 2015-10-01

該bug是一個(gè)安全漏洞,不過(guò)已于今年1月公開(kāi)。

Openstack支持虛擬機(jī)軟刪除功能,用戶可以設(shè)置虛擬機(jī)的保留時(shí)間。當(dāng)用戶刪除虛擬機(jī)時(shí),不會(huì)真的立即刪除虛擬機(jī),而僅僅是做一個(gè)刪除標(biāo)記,保留時(shí)長(zhǎng)為設(shè)置的保留時(shí)間,當(dāng)超過(guò)保留時(shí)間時(shí),系統(tǒng)才真正清理虛擬機(jī)。該功能能夠使用戶不慎刪除虛擬機(jī)能立即撤回操作,避免數(shù)據(jù)丟失。

換句話說(shuō),虛擬機(jī)軟刪除時(shí),虛擬機(jī)的資源并沒(méi)有釋放,并且不占用戶配額。惡意用戶可以不斷創(chuàng)建虛擬機(jī)不斷刪除虛擬機(jī),直到耗盡所有的物理資源。

Michael Still說(shuō):

This is definitely be design. That said I agree there is a DoS possible here.

It seems to me there is a tweak we could make where if a hypervisor becomes space constrained we delete earlier than the configured time, but that might be a surprise for administrators using a “fill first” scheduling methodology.

因此這個(gè)bug至今尚未修復(fù)。

4.console.log文件可能占據(jù)整個(gè)磁盤(pán)空間

  • bug地址: console.log grows indefinitely
  • report時(shí)間: 2011-08-24
  • 存活壽命: 5歲

console log保存虛擬機(jī)啟動(dòng)時(shí)的日志,用戶可以使用nova console-log命令查看,KVM會(huì)把所有的標(biāo)準(zhǔn)輸出打印到console.log中,并且沒(méi)有大小限制,如果用戶無(wú)休止地發(fā)送數(shù)據(jù)到stdout中,console.log文件將可能占據(jù)整個(gè)磁盤(pán)空間。

該bug在不斷修復(fù)過(guò)程中,至今沒(méi)有徹底修復(fù)。

5. Nova和cinder數(shù)據(jù)卷掛載狀態(tài)不一致

bug地址: Nova and Cinder get desynced on volume attachments report時(shí)間: 2015-09-23

該bug很早就已經(jīng)存在,只是到2015年才有人report。 通常卸載volume卷包括如下三個(gè)步驟:

  • 1 調(diào)用libvirt卸載磁盤(pán)設(shè)備
  • 2 通知cinder
  • 3 刪除BDM(block device mapping)記錄

如果第一步失敗,此時(shí)虛擬機(jī)處于error狀態(tài),但volume掛載狀況和cinder仍然是同步的,只需要執(zhí)行reset-state回滾即可。

如果第二步失敗,此時(shí)nova認(rèn)為volume已經(jīng)卸載了,但cinder沒(méi)有接收到通知,仍然認(rèn)為volume是被掛載的。此時(shí)nova不能再執(zhí)行detach操作,因?yàn)関olume已經(jīng)不存在了。但cinder也不能再執(zhí)行掛載操作,因?yàn)関olume還處于in-use狀態(tài)。修復(fù)辦法是使用cinder reset-stat或者只能修改數(shù)據(jù)庫(kù)了。

【本文是51CTO專(zhuān)欄作者“付廣平”的原創(chuàng)文章,如需轉(zhuǎn)載請(qǐng)通過(guò)51CTO獲得聯(lián)系】


文章標(biāo)題:盤(pán)點(diǎn)Openstack那些頑固bug
文章分享:http://uogjgqi.cn/article/cdssgch.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流