一背景

cinder对接了netapp(nfs),创建云盘和快照功能正常, 但是从云盘快照创建云盘失败,报错

Volume xxx could not be created on shares.

二 定位过程

  1. 从云盘快照创建云盘日志如下:
2020-03-06 12:28:57.875 2290124 INFO cinder.volume.flows.manager.create_volume [req-fd7cb0cc-5000-4629-a040-8353c9d780a7 6d612f674ec84cb28ed4a6a25b1e5d8a 92c2b6ef30d4446bbc0b6f4c1ef91775 - - -] Volume eadb07ab-869f-4abb-b617-06162cd71ae6: being created as snap with specification: {'status': u'creating', 'volume_size': 40, 'volume_name': 'volume-eadb07ab-869f-4abb-b617-06162cd71ae6', 'snapshot_id': '4a0f0f68-9998-4271-9fff-cfcb4646de33'}
2020-03-06 12:29:44.365 2290124 WARNING cinder.volume.drivers.netapp.dataontap.nfs_base [req-fd7cb0cc-5000-4629-a040-8353c9d780a7 6d612f674ec84cb28ed4a6a25b1e5d8a 92c2b6ef30d4446bbc0b6f4c1ef91775 - - -] Discover file retries exhausted.
2020-03-06 12:29:44.367 2290124 ERROR cinder.volume.drivers.netapp.dataontap.nfs_base [req-fd7cb0cc-5000-4629-a040-8353c9d780a7 6d612f674ec84cb28ed4a6a25b1e5d8a 92c2b6ef30d4446bbc0b6f4c1ef91775 - - -] Exception creating volume eadb07ab-869f-4abb-b617-06162cd71ae6 from source snapshot-4a0f0f68-9998-4271-9fff-cfcb4646de33 on share 172.190.68.60:/DEV_R1_8200_C01_SVM_SAS_vol1.
  1. 其中第三行日志是netapp的驱动(drivers.netapp.dataontap.nfs_base)报错,从失败的Traceback中看到报错信息:
VolumeBackendAPIException: Bad or unexpected response from the storage volume backend API: Volume eadb07ab-869f-4abb-b617-06162cd71ae6 could not be created on shares.
  1. 根据Traceback提示File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/nfs_base.py", line 175,
    查看netapp驱动代码,是函数self._discover_file_till_timeout(path)返回了False导致的错误
    def _clone_with_extension_check(self, source, destination_volume):source_size = source['size']source_id = source['id']source_name = source['name']destination_volume_size = destination_volume['size']self._clone_backing_file_for_volume(source_name,destination_volume['name'],source_id)path = self.local_path(destination_volume)if self._discover_file_till_timeout(path):self._set_rw_permissions(path)if destination_volume_size != source_size:try:self.extend_volume(destination_volume,destination_volume_size)except Exception:LOG.error(_LE("Resizing %s failed. Cleaning ""volume."), destination_volume['name'])self._cleanup_volume_on_failure(destination_volume)raise exception.CinderException(_("Resizing clone %s failed.")% destination_volume['name'])else:raise exception.CinderException(_("NFS file %s not discovered.")% destination_volume['name'])
  1. 继续查看_discover_file_till_timeout函数, 是找不到新创建的volume的path导致的,而日志中的打印(Discover file retries exhausted.)也正好印证了这个结论。
def _discover_file_till_timeout(self, path, timeout=45):"""Checks if file size at path is equal to size."""# Sometimes nfs takes time to discover file# Retrying in case any unexpected situation occursretry_seconds = timeoutsleep_interval = 2while True:if os.path.exists(path):return Trueelse:if retry_seconds <= 0:LOG.warning(_LW('Discover file retries exhausted.'))return Falseelse:time.sleep(sleep_interval)retry_seconds -= sleep_interval
  1. 但是登陆环境却发现在对应的路径下是存在云盘的

  2. 增加打印日志,环境上存在volume的path时, 代码执行os.path.exists返回False,手动执行却返回True。os.path.exists(path)官网说明:

os.path.exists(path)¶
Return True if path refers to an existing path. Returns False for broken symbolic links. On some platforms, this function may return False if permission is not granted to execute os.stat() on the requested file, even if the path physically exists.

  1. 查看mount目录权限为666, 因此怀疑是代码执行时使用的cinder用户权限不足导致的

  2. 给netapp(nfs)挂载目录加可执行权限x后, 恢复正常。

三 对于linux权限

r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

关于权限的简单测试

  1. 切换到root用户,创建test目录,并且设置权限为666,没有可执行权限。
root@HP-Laptop:/home/root# mkdir test
root@HP-Laptop:/home/root# ll
总用量 12
drwxr-xr-x 3 root root 4096 3月   8 11:28 ./
drwxr-xr-x 4 root root 4096 3月   8 11:27 ../
drwxr-xr-x 2 root root 4096 3月   8 11:28 test/
root@HP-Laptop:/home/root# chmod 666 test/
root@HP-Laptop:/home/root# ll
总用量 12
drwxr-xr-x 3 root root 4096 3月   8 11:28 ./
drwxr-xr-x 4 root root 4096 3月   8 11:27 ../
drw-rw-rw- 2 root root 4096 3月   8 11:28 test/
root@HP-Laptop:/home/root# cd test
root@HP-Laptop:/home/root/test# touch test.py
root@HP-Laptop:/home/root/test# chmod 666 test.py
root@HP-Laptop:/home/root/test# ll
总用量 8
drwxr-xr-x 2 root root 4096 3月   8 11:28 ./
drwxr-xr-x 3 root root 4096 3月   8 11:28 ../
-rw-rw-rw- 1 root root    0 3月   8 11:28 test.py
  1. 切换到普通用户, os.path.exists由于权限不足返回False。
yu@HP-Laptop:~$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.path.exists("/home/root/test/test.py"))
False
>>>
  1. 切换到root用户,给test目录751权限,增加可执行权限。
root@HP-Laptop:/home/root# chmod 751 test
root@HP-Laptop:/home/root# ll
总用量 12
drwxr-xr-x 3 root root 4096 3月   8 11:32 ./
drwxr-xr-x 4 root root 4096 3月   8 11:27 ../
drwxr-x--x 2 root root 4096 3月   8 11:28 test/
-rw-r--r-- 1 root root    0 3月   8 11:32 test.py
  1. 切换到普通用户,os.path.exists返回了True。
yu@HP-Laptop:~$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.path.exists("/home/root/test/test.py"))
True
>>>

故障定位:netapp(nfs)从云盘快照创建云盘失败Volume xxx could not be created on shares.相关推荐

  1. 阿里云ECS服务器如何用快照创建云盘

    在使用服务器的时候,有的时候需要读取已有云盘或者误操作释放云盘的数据,进行数据提取或者故障分析,那么这时候就可以通过使用快照创建云盘实现,对应的历史云盘可以是系统盘或数据盘. 具体的操作方法如下: 首 ...

  2. oracle云怎么购买,使用免费的Oracle云服务-创建云主机

    使用免费的Oracle云服务-创建云主机 发布时间:2020-08-11 13:41:45 来源:ITPUB博客 阅读:73 作者:Jet_Zhang 栏目:云计算 上一篇我们讲了如何注册并使用Ora ...

  3. 我的 Serverless 实战 — 云函数与触发器的创建与使用 ( 开通腾讯云 “ 云开发 “ 服务 | 创建云函数 | 创建触发器 | 测试触发器 )

    文章目录 一.开通腾讯云 " 云开发 " 服务 二.创建云函数 三.创建触发器 四.测试触发器 [本文正在参与 "100%有奖 | 我的Serverless 实战&quo ...

  4. oracle免费云攻略,使用免费的Oracle云服务-创建云主机

    上一篇我们讲了如何注册并使用Oracle的免费云服务,这篇我们讲如何创建免费的云主机.进入到控制台后,从左上角的菜单栏进入到Instances的管理界面: 然后点击 ,则会进入创建云主机的界面.创建云 ...

  5. OpenStack创建实例提示失败的具体原因如下: created even after we waited 191 seconds or 61 attempts

    解决办法 在nova.conf中有一个控制卷设备重试的参数:block_device_allocate_retries,可以通过修改此参数延长等待时间. 该参数默认值为60,这个对应了之前实例创建失败 ...

  6. 怎样使用阿里云国际版ecs实例创建单个云盘快照-Unirech

    快照是一种无代理的数据备份管理方式,支持为系统盘或者通过数据盘创建崩溃一致性快照.快照常用于企业日常生活数据信息备份.实例误释放数据恢复.制作一个自定义镜像等场景.在回滚云盘.修改关键系统文件.更换操 ...

  7. 发现在创建云服务器ecs实例的磁盘快照时_【New Feature】阿里云快照服务技术解析...

    一.背景   目前上云已经成为行业发展趋势,越来越多的企业级客户将业务系统和数据库迁移到云上.而传统的备份一体机/备份软件方式,并不适合云上ECS.RDS等产品的备份与容灾服务.阿里云块存储服务提供云 ...

  8. 天翼云云主机快照、云硬盘备份、云主机备份之间的区别

    天翼云提供了云主机快照.云硬盘备份.云主机备份这三种简单易用的备份工具,但这三者有什么区别,什么情况下该用快照,什么情况下该用备份呢? 首先说一下备份的概念.把一个文件复制一份叫备份,比如把重要文件拷 ...

  9. 快盘做网站服务器,快盘云服务器地址

    快盘云服务器地址 内容精选 换一换 精简视图提供了云服务器资源概况和状态的可视化统计结果,帮助您直观的了解云服务器资源.在精简视图中,您可以快速获取弹性云服务器基本信息.登录信息.配置信息.监控信息. ...

最新文章

  1. 依赖注入?依赖注入是如何实现解耦的?
  2. C# 最快的逐一打印斐波那契结果数列的算法
  3. 如何将一个列表当作元组的一个元素
  4. oepnstack笔记
  5. 看C++文档的小知识
  6. 文本挖掘(part6)--共现矩阵
  7. CRM How to configure text type to allow html editor
  8. 在github上参与开源项目日常流程
  9. “吃神么,买神么”的第一个Sprint计划(第三天)
  10. 汉王考勤管理软件mysql数据库配置_汉王考勤管理软件使用说明书介绍.pdf
  11. 儿童计算机编程课程,少儿编程基础课程介绍
  12. 线程启动、结束,创建线程多法、join,detach
  13. WPS表格如何快速添加斜线表头
  14. 大小写字母格式(26个大小写字母格式表)
  15. Gartner 研讨会 “九问数字化转型” 会后感分享
  16. 快速上手Total Commander的经验分享
  17. Win10有哪些方便快捷的操作小技巧?
  18. 赛码网刷题python
  19. 均匀分布、正态分布、二项分布、泊松分布、指数分布
  20. 2012腾讯实习招聘笔试附加题1求解方法

热门文章

  1. #pragma warning
  2. 进一步做好全国计算机信息高新技术考试推广工作的实施意见,全国计算机信息高新技术考试详解.ppt...
  3. JS拖动事件(鼠标拖动事件)手指事件(PC移动端拖拽)
  4. MySQL数据库表数据被删如何找回----利用mysqlbinlog----超详细
  5. 史上最强 Tomcat8 性能优化实战!
  6. 好程序员:Java培训班包就业靠谱吗?Java培训机构怎么选?
  7. Ubuntu系统配置SGX要求
  8. JNI 最简单的Java调用C/C 代码
  9. speedoffice表格如何把边框线条加粗
  10. almon多项式_第5章 第2节 有限分布滞后模型.ppt