問題:H版Cinder對接Ceph,把備份卷恢復到源卷報錯
一、問題現象
Cinder是H版程式碼,對接的儲存是Ceph。使用cinder命令可以成功建立資料卷並備份資料卷。
但是,使用cinder backup-restore命令恢復備份卷時,如果指定了恢復到源卷,會導致源卷的狀態變為error_restoring:
# cinder backup-restore --volume-id <volume-id> <backup-id>
二、問題分析
在日誌/var/log/cinder/backup.log中,有如下報錯:2014-06-26 15:53:26.456 28145 DEBUG cinder.backup.drivers.ceph [req-b873021e-b757-4d7d-be4c-235db3949930 admin 23770234f509405dbe5de13faf5bb976] dest volume is original volume - forcing full copy _diff_restore_allowed /usr/lib/python2.6/site-packages/cinder/backup/drivers/ceph.py:914
2014-06-26 15:53:26.643 28145 ERROR cinder.openstack.common.rpc.amqp [req-b873021e-b757-4d7d-be4c-235db3949930 admin 23770234f509405dbe5de13faf5bb976] Exception during message handling
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp Traceback (most recent call last):
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/amqp.py", line 441, in _process_data
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp **args)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/dispatcher.py", line 148, in dispatch
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp return getattr(proxyobj, method)(ctxt, **kwargs)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/utils.py", line 808, in wrapper
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp return func(self, *args, **kwargs)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/backup/manager.py", line 346, in restore_backup
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp {'status': 'available'})
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp self.gen.next()
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/backup/manager.py", line 340, in restore_backup
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp backup_service)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/volume/drivers/rbd.py", line 800, in restore_backup
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp backup_service.restore(backup, volume['id'], rbd_fd)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/backup/drivers/ceph.py", line 986, in restore
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp self._restore_volume(backup, target_volume, volume_file)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/backup/drivers/ceph.py", line 976, in _restore_volume
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp volume_name, length, src_snap=restore_point)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/cinder/backup/drivers/ceph.py", line 775, in _full_restore
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp snapshot=src_snap, read_only=True)
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/rbd.py", line 353, in __init__
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp raise make_ex(ret, 'error opening image %s at snapshot %s' % (name, snapshot))
2014-06-26 15:53:26.643 28145 TRACE cinder.openstack.common.rpc.amqp ImageNotFound: error opening image volume-1b04df30-2bdf-47d2-ad02-11ca22839790.backup.0b01d3ec-27d4-4d85-be51-197d4021b137 at snapshot None
根據上面的最後一行日誌,在cinder.backup.drivers.ceph:CephBackupDriver._full_restore中:
src_rbd = self.rbd.Image(client.ioctx, backup_name, snapshot=src_snap, read_only=True)
這行程式碼的snapshot=src_snap為None值,所以導致報錯。
往上回溯,snapshot=src_snap(即src_snap=restore_point)的值是在cinder.backup.drivers.ceph:CephBackupDriver._restore_volume中被賦值的:
diff_allowed, restore_point = self._diff_restore_allowed(base_name, backup, volume, volume_file, client)
我們進入到cinder.backup.drivers.ceph:CephBackupDriver._diff_restore_allowed中,看到這樣幾行程式碼:
not_allowed = (False, None)
# If the volume we are restoring to is the volume the backup was made
# from, force a full restore since a diff will not work in this case.
if volume['id'] == backup['volume_id']:
LOG.debug(_("dest volume is original volume - forcing full copy"))
return not_allowed
很明顯,參考註釋,這就是restore_point為什麼是None的原因。
三、解決辦法
據檢索,該問題和該連結中所描述的情況表現一致:https://bugs.launchpad.net/cinder/+bug/1276977
該問題已經在Cinder的I版中修復了,修改程式碼如下:
https://git.openstack.org/cgit/openstack/cinder/commit/?id=4d1d9349fed815b37b0675d6f3936243a3909125
相關推薦
問題:H版Cinder對接Ceph,把備份卷恢復到源卷報錯
一、問題現象 Cinder是H版程式碼,對接的儲存是Ceph。 使用cinder命令可以成功建立資料卷並備份資料卷。 但是,使用cinder backup-restore命令恢復備份卷時,如果指定了恢復到源卷,會導致源卷的狀態變為error_restoring:# c
第五篇:zTree節點的一些操作,權當備份
專案場景:將zTree的一個節點挪到某個已知的根節點下,因為樹上的節點都是資料庫查詢出來的,所以不能直接用addNodes()這個方法(否則一重新整理又恢復原樣了),而是要把這個節點及其某些屬性資料儲存到資料庫中,進一步的需求是:如果層級很多,挪過去的時候,要連帶他的所有父節點,子孫節點一起挪過去,加上他們的
java異常練習題:定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果
題目描述: 定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。 定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義
使用ltp編譯出來的cws_cmdline,cp到其他機器上執行報錯:/lib64/libc.so.6: version `GLIBC_2.14′ not found
這主要是由於編譯環境的glibc的版本高於執行時的glibc版本導致。 解決辦法:升級glibc 具體參考: http://qinghua.blog.51cto.com/202629/1706585 為防止連結失效,黏貼如下: 在系統CentOS release 6.4
ajax或者url訪問時,帶了不標準字元後臺報錯:The valid characters are defined in RFC 7230 and RFC 3986
網上查了很多辦法都無效, 暫定解決辦法: 將整個url用encodeURI(url)進行編碼,再進行訪問即可 例如: var url='/index/saveFileToClient?url='+str; url = encodeURI
原!tomcat啟動超時(打印了幾行日誌,後面沒了。也不報錯,處於啟動狀態,直到超時)
str tro 啟動項 dao 配置 spa 配置文件 size 結果 項目框架:spring+struts2+mybatis 今天優化代碼,改了一堆mybatis dao和xml文件,啟動項目時,就出現如標題描述的狀況:打印了幾行日誌,後面就不打印了,也不報錯,處於啟動狀
解決mysql二進制日誌恢復數據報錯:@@GLOBAL.GTID_MODE = OFF.
實例 多個 ons bar $? on() false ria echo 解決mysql利用二進制日誌恢復數據報錯:ERROR 1781 (HY000) at line 16: @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER
Restful風格,PUT修改功能請求,表單中存在文件報錯-HTTP Status 405 - Request method 'POST' not supported
for 文件的 文件 roo spring commons 容量 put common 解決方案配置如下 <!-- 配置文件上傳解析器 --> <bean id="multipartResolver" class="org.spri
js 監測from表單中的input和select,時時監測,沒有輸入或選擇信息報錯,不允許提交數據
height ssss txt input OS 表達 tip eight html 1.html 代碼為 在input和select同級元素中添加 .error的標簽,用來存放報錯信息 <form action="" method="post" enctype="
在flask框架中,對wtforms的SelectMultipleField的一個報錯處理
pre inf req ESS multi bmi 其中 ews IT 先粘貼代碼: form.py文件: users = SelectMultipleField( label="請選擇用戶", validators=[ DataRequired(
mysql數據庫已啟動,但是登錄數據庫報錯
mysql數據庫已啟動但是登錄數據庫報mysql數據庫默認設置的是開機自啟動,重啟db01服務器後,想進入數據庫查看數據信息:但是無法進入數據庫,報錯如下:[root@db01 ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't
解決:mysql5.7 timestamp默認值0000-00-00 00:00:00 報錯
code pan ble auto session group_by post www. logs 解決:mysql5.7 timestamp默認值0000-00-00 00:00:00 報錯 學習了:https://www.cnblogs.com/cnhkzyy/p/91
ansible 的copy模塊,向ubuntu復制時的報錯解決。
roc cto connect nec col .com fff img copy模塊 copy至ubuntu時,出現這樣的問題 /etc/ansible/ansible.cfg[ssh_connection]scp_if_ssh = Trueansible 的copy模塊
Python 安裝gevent,在導入gevent之後就報錯了
div eve ati 只需要 cat color ted gevent pan 錯誤信息如下 RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. E
maven工程依賴的jar包,在本地倉庫有,但是pom.xml文件卻報錯找不到jar包
其中 -keep idt -i alt nexus handler reset and 問題描述: ? 第一時間查看本地倉庫,發現明明有卻還報錯 ? 解決方案: 查看錯誤依賴的_remote.repositories文件 ? 正常以來的的_remote.repositori
解決升級到Xcode10,react native項目運行報錯問題
failed 錯誤 lib blog ise ould path uil 執行 今天剛升級到Xcode10,就遇到兩個報錯問題 錯誤一:Xcode 10: Build input file double-conversion cannot be found error: B
maven專案Java Resources 上面有個紅叉,但是程式碼裡面並沒有什麼報錯
轉載自:https://www.cnblogs.com/achengmu/p/9106953.html maven專案Java Resources 上面有個紅叉,但是程式碼裡面並沒有什麼報錯 解決辦法: 1.通過: windows
centos虛擬機器無法選擇無縫模式,在安裝增強功能時出現報錯This system is currently not set up to build kernel modules.
在centos虛擬機器中,如果無法顯示無縫模式,介面看起來會非常奇怪。因此為了使用無縫模式,我們需要安裝centos的增強功能。 具體安裝步驟如下: 1.在cenos系統介面選擇【裝置】 &n
微服務---加入redis配置時候,boot+cloud一跑起來就報錯
專案依託redis部分的jar包只有這個部分,經過對jar的依賴,報錯資訊的提示,發現缺少了對應的spring-data-redis的jar包。 <dependency> <groupId>org.springframework.boot</groupI
1).定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。
1).定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。 2).定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義一個方法,在方法中丟