NFS 快照¶
https://blueprints.launchpad.net/cinder/+spec/nfs-snapshots
为 NFS 卷驱动程序添加快照支持(创建、删除、从快照克隆),使其功能与其他 Cinder 驱动程序一样。
问题描述¶
NFS 驱动程序不支持现代 Cinder 驱动程序中预期的许多功能。
创建快照
删除快照
从快照克隆
用例¶
提议的变更¶
如何在 GlusterFS 驱动程序中实现快照的基本模型已经得到验证。这里的总体思路是重用相同的模型和大部分代码用于 NFS 驱动程序,该驱动程序在总体上与 GlusterFS 驱动程序的工作方式相同。
在 Juno 中,大部分与快照相关的代码被重构到 RemoteFSSnapshot 类中。
NFS 驱动程序应从这个基类继承代码(并可能进行小的更改)以获得快照支持。
备选方案¶
没有真正的替代方案,基本的 NFS 服务器没有快照文件的能力。这种方法已经在其他 Cinder 驱动程序中使用并且有效,所以唯一的替代方案是决定我们不想为这个驱动程序提供快照。
数据模型影响¶
无
REST API 影响¶
没有重大影响。
initialize_connection 将返回额外的字段,指定卷文件的格式,以便 Nova 知道如何正确地附加它。
安全影响¶
无,请参阅此处说明。
此更改需要使用 Kilo 中添加的 NFS 安全基础设施进行测试,以确保没有任何问题,并且在快照操作之前、期间和之后的所有文件都具有预期的权限。没有理由期望这里出现问题。
在 Juno 中,解决了一个与 qcow2 文件处理相关的安全问题。( https://bugs.launchpad.net/cinder/+bug/1350504 )
现在从安全角度来看,这个问题已经解决,因为没有已知的方法可以利用它,但仍在“支持存储卷格式信息”规范中以更强大的方式进行修复。这项工作可以并行进行,因为这里没有严格的依赖关系。( https://review.openstack.org/#/c/103750/ )
通知影响¶
无
其他最终用户影响¶
我们尚未支持基于 qcow2 的卷的备份。(不确定是否在 Kilo 中另有目标。)
性能影响¶
NFS 驱动程序需要一个按卷 ID 的锁,用于操作和修改卷/快照数据。这不会导致现有功能的任何性能下降,并且在大多数使用快照的场景中不应该是一个大问题。
参见 https://review.openstack.org/#/c/106095/ (GlusterFS 示例)
其他部署者影响¶
新的配置选项 nfs_qcow2_volumes,用于指定是否希望始终将卷文件创建为 qcow2 镜像,而不是原始镜像。
开发人员影响¶
实现¶
负责人¶
- 主要负责人
eharney 和 akerr(?)
- 其他贡献者
NetApp 指示他们将 CI 此驱动程序。(bswartz)
工作项¶
尝试将 RemoteFSSnapshot 代码继承到 NFS 驱动程序中。
迭代解决那里的问题。
测试安全问题。
依赖项¶
- 存储卷格式信息:https://review.openstack.org/#/c/103750/
不是严格的依赖关系,哪个先着陆并不重要,但这项工作也需要在 Kilo 中与这项工作一起完成,并且密切相关。
我将提交另一个规范,解决 Cinder 和 Nova 之间的快照 API,该 API 将在这里使用,但那里的内容不会阻止这项工作。
测试¶
NFS 驱动程序的标准第三方 CI
考虑将此作为后续工作进行 in-gate 测试
文档影响¶
新的配置选项 nfs_qcow2_volumes。
参考资料¶
- 最初的快照工作,此工作在此基础上进行
https://blueprints.launchpad.net/cinder/+spec/qemu-assisted-snapshots
- RemoteFS 快照代码重构,为支持这项工作而完成
- SMBFS 卷驱动程序,是另一个重用此代码的驱动程序的示例