成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Openstack虛擬機防止誤刪除操作的幾種實現方法

企業動態 OpenStack
虛擬機是Openstack中最重要的角色之一,我們接觸比較多的Nova服務就是通過虛擬機方式提供計算虛擬化服務。

1.虛擬機保護的重要性

虛擬機是Openstack中最重要的角色之一,我們接觸比較多的Nova服務就是通過虛擬機方式提供計算虛擬化服務。除此之外,還有很多高層服務也是完全依賴于Nova服務提供的虛擬機,比如Sahara大數據服務、Magnum容器編排服務、Manila文件共享服務以及Trove數據庫服務等,這些服務底層都是基于虛擬機實現的。虛擬機的保護至關重要,不僅承載著用戶活動的業務,還保存著用戶的重要數據。虛擬機意外丟失不僅可能導致用戶業務中止,還可能導致重要數據的丟失,甚至造成重大生產事故,虛擬機的保護不容忽視!

[[192877]]

Openstack Nova服務相對來說比較成熟了,虛擬機通常不會出現突然消失的情況,排除天災,剩下的就是人禍了,最危險的莫過于誤刪除操作,危險等級不亞于以下幾種:

  1. rm -rf / 
  2. ceph osd pool delete rbd rbd --yes-i-really-really-mean-it 
  3. drop database nova; 

不幸的是,Openstack一直沒有一套完善的虛擬機保護機制,默認的權限策略也存在一定的問題:

  • admin是全局的,只要屬于admin組,就能夠操作所有租戶的資源,刪除所有虛擬機只需一個命令。
  • 虛擬機的Lock感覺形同虛設,admin完全無視任何鎖。

當然盡管不完善,Openstack針對虛擬機的保護措施還是做了一些工作的,本文接下來將逐一介紹。

2.Lock機制

Openstack很早就開始支持對虛擬機加鎖操作:

  1. usage: nova lock <server> 
  2. Lock a server. A normal (non-admin) user will not be able to execute actions 
  3. on a locked server. 

被locked的虛擬機不允許非管理員執行任何操作,包括delete、reboot、resize、rebuild、migrate等等。但是到目前為止也沒有實現通過API獲取虛擬機的鎖狀態,換句話說,只有當你執行以上操作時,才會莫名其妙地告訴你執行失敗了,因為虛擬機被加鎖了:

  1. $ nova delete 5a7b14b0-a47c-47be-98bb-92e139d16b00 
  2. Instance 5a7b14b0-a47c-47be-98bb-92e139d16b00 is locked (HTTP 409) (Request-ID: req-6366a53b-d696-47cc-8111-1a760b8d0253) 
  3. ERROR (CommandError): Unable to delete the specified server(s). 

2014年2月就已經有人提關于查看虛擬機lock狀態API實現BP:get-lock-status-of-instance,目前已被標記為Slow progress。

需要注意的是,正如前面所言,管理員賬號是無視鎖的,檢查鎖的代碼非常簡單:

  1. def check_instance_lock(function): 
  2.     @functools.wraps(function
  3.     def inner(self, context, instance, *args, **kwargs): 
  4.         if instance.locked and not context.is_admin: 
  5.             raise exception.InstanceIsLocked(instance_uuid=instance.uuid) 
  6.         return function(self, context, instance, *args, **kwargs) 
  7.     return inner 

我們為了強化鎖的作用,直接把if后面的and not context.is_admin去掉了,這樣即使是管理員在確認需要刪除虛擬機時也必須先unlock,一定程度上提高了虛擬機的安全性。

注意: 鎖定的虛擬機即使執行nova force-delete也會失敗。

3.soft-delete

微信聊天時如果不小心說錯話了,兩分鐘內可以立馬撤回消息,并不明覺厲地向對方扔一個對方撤回了一條消息。不小心誤刪虛擬機時,你是否也會在心里想如果可以撤回剛剛的操作該多好!

值得慶幸的是,Openstack原生支持軟刪除操作。開啟了軟刪除功能后,刪除的虛擬機不會立刻清除,而是會保留一段時間(比如一天),在虛擬機保留期內你可以隨時restore恢復。

開啟辦法是修改Nova配置文件/etc/nova/nova.conf,在DEFAULT配置組下設置reclaim_instance_interval值,該值表示刪除虛擬機后保留的時間,單位為秒。

我們簡單驗證下:

我們首先創建了一個虛擬機,uuid為c6fd7a92-bf51-4000-b9e1-18850090ab47:

  1. $ nova list | grep c6fd7a92-bf51-4000-b9e1-18850090ab47 
  2. | c6fd7a92-bf51-4000-b9e1-18850090ab47 | int32bit-test-3 | ACTIVE | - | Running | rally-shared-net=10.168.0.18 | 

然后執行刪除操作:

  1. nova delete c6fd7a92-bf51-4000-b9e1-18850090ab47 

查看虛擬機狀態,注意--deleted選項,否則看不到已經刪除的虛擬機:

  1. $ nova list --deleted | grep c6fd7a92-bf51-4000-b9e1-18850090ab47 
  2. | c6fd7a92-bf51-4000-b9e1-18850090ab47 | int32bit-test-3| SOFT_DELETED | - |Shutdown| rally-shared-net=10.168.0.18| 

可見虛擬機此時為SOFT_DELETED狀態,此時我們可以使用nova restore操作恢復:

  1. nova restore c6fd7a92-bf51-4000-b9e1-18850090ab47 

再次使用nova list可發現虛擬機已經回來了。

軟刪除的代碼實現也相對簡單,直接上核心代碼(nova/compute/manager.py:

  1. def soft_delete_instance(self, context, instance, reservations): 
  2.         # ... 
  3.         try: 
  4.             self._notify_about_instance_usage(context, instance, 
  5.                                               "soft_delete.start"
  6.             try: 
  7.                 self.driver.soft_delete(instance) 
  8.             except NotImplementedError: 
  9.                 self.driver.power_off(instance) 
  10.             instance.power_state = self._get_power_state(context, instance) 
  11.             instance.vm_state = vm_states.SOFT_DELETED 
  12.             instance.task_state = None 
  13.             instance.save(expected_task_state=[task_states.SOFT_DELETING]) 
  14.         except Exception: 
  15.             with excutils.save_and_reraise_exception(): 
  16.                 quotas.rollback() 
  17.         quotas.commit() 

從代碼發現會調用driver的soft_delete方法,但實際上libvirt driver并未實現該方法,因此會fallback到except語句,即執行簡單關機操作,然后更新虛擬機狀態到數據庫即完成軟刪除操作。

因此,虛擬機的軟刪除操作原理就是關機虛擬機并標記為軟刪除。

需要注意的是: nova force-delete會立即強制刪除虛擬機,不會保留虛擬機,請小心操作。

4.禁止刪除

這個應該算是Nova的隱藏功能了,不閱讀源碼真的不知道,虛擬機有一個disable_terminate標記,具有該標記的虛擬機無法通過任何API刪除虛擬機,無論你是admin還是force-delete都會刪除失敗,對于非常重要的虛擬機,萬萬不能刪除的虛擬機,可以設置該標記。

不過目前并沒有API設置該標記,社區提了好幾個與之相關的BP:

目前只能靠操作數據庫查看和設置該標記了。

  1. update instances set disable_terminate=1 where uuid='a80d78c0-9f5f-4f01-8ace-72a5133a4763'

此時執行刪除虛擬機操作不會有任何反應。

實現方式非常簡單,在nova/compute.api.py,只要設置了該標記,直接return:

  1. def _delete(self, context, instance, delete_type, cb, **instance_attrs): 
  2.         if instance.disable_terminate: 
  3.             LOG.info(_LI('instance termination disabled'), 
  4.                      instance=instance) 
  5.             return 
  6.         # ... 

5. 快照備份

以上都是通過刪除保護方式來保證虛擬機的安全性,為了更全面地保護虛擬機,快照備份也是保護虛擬機的有效途徑,可參考的方式如下:

  1. 使用nova image-create創建虛擬機快照。
  2. 使用nova backup定期快照備份。
  3. 如果使用Ceph做后端存儲,可以考慮使用rbd mirror。
  4. 掛載的volume可以使用cinder backup服務增量備份。

6.總結

雖然Openstack提供的虛擬機保護措施還不夠完善,但做的工作還是不少的,用戶可以根據自己的需求選擇適合自己的方案。

【本文是51CTO專欄作者“付廣平”的原創文章,如需轉載請通過51CTO獲得聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-06-03 09:14:41

文件代碼Linux

2010-03-10 15:33:31

Linux誤刪除

2011-07-04 09:59:01

AD誤刪除

2019-01-02 10:32:56

Linux系統文件運維

2018-12-11 11:13:25

Linux系統恢復

2010-08-12 14:03:24

DB2恢復誤刪除表

2017-04-01 09:00:00

數據庫誤刪除案例及建議

2009-12-21 16:17:01

2017-02-06 10:53:33

2022-11-08 08:11:52

PG數據庫防誤

2018-04-28 15:28:44

數據庫MySQL誤刪除

2020-09-30 06:00:00

Linux誤刪除恢復文件

2024-08-09 10:06:09

2017-04-01 18:30:47

MySQL誤刪除數據庫

2010-08-17 11:03:01

DB2恢復誤刪除表

2011-12-12 09:08:48

OpenStack虛擬機監控

2017-09-11 16:24:47

2011-08-01 14:50:10

日志挖掘數據庫

2017-01-17 08:42:21

vSphereWorkstation虛擬機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美成人在线 | 天天操天天射综合 | 亚洲巨乳自拍在线视频 | 香蕉久久av| 日本超碰| 久久婷婷国产麻豆91 | 中文字幕国产 | 一级片在线视频 | 免费看a| 美女黄网站视频免费 | 国产日韩一区二区三区 | 亚洲欧美精品国产一级在线 | 91超碰在线| 久久99精品久久久久久噜噜 | 日韩精品免费 | 日本精品999 | 色五月激情五月 | 一区二区三区视频在线观看 | 欧美888| 日本一区二区高清不卡 | 国产欧美性成人精品午夜 | 成人精品一区二区三区中文字幕 | 久久久久久天堂 | 日韩一级免费电影 | 国产色99| www.久久久久久久久 | 三级黄视频在线观看 | 日本不卡视频 | 国内自拍偷拍视频 | 日日日日日日bbbbb视频 | 欧美日韩亚洲系列 | 成人在线观看亚洲 | 91麻豆产精品久久久久久 | 成年人在线电影 | 国产成人精品久久二区二区91 | 免费一看一级毛片 | 91成人免费观看 | 午夜精品久久久久久久久久久久 | 亚洲精品视频播放 | 国产精品九九九 | 久操亚洲 |