当前,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高。如何实现数据存储层的高度可扩展性,便成为数字化企业必须要解决的问题。而XSKY星辰天合下一代分布式文件系统XGFS,就实现了基于目录、用户和用户组的配额功能,能进一步优化并提升企业的运维效率。
本期内容,XSKY星辰天合技术专家带您一起了解,支持K8S卷扩展的XGFS 配额功能,是怎样炼成的。
应用程序或数据库的磁盘空间不足,是运维团队需要定期解决的常见问题,这个问题从裸金属服务器到虚拟化和容器环境中一直存在。Kubernetes 用户可以对给定命名空间下的存储资源总量进行限制,目前流行的设置配额方式是根据相关的存储类(Storage Class)来限制存储资源的消耗,这在 Kubernetes 中叫做Volume Expansion。
目前 Kubernetes允许在创建后进行卷扩展,在 Kubernetes 中计算和存储系统已经相互解耦,向应用程序授予额外存储容量很少需要更新应用程序或修改底层应用程序主机基础设施。在 Kubernetes v1.16 中,CSI 的Volume Expansion功能被提升为Beta版,允许用户通过编辑PersistentVolumeClaim(PVC) 对象轻松扩容现有卷的大小。用户不再需要手动与存储后端交互或删除和重新创建 PV 和 PVC 对象来增加卷的大小。需要注意的是目前该功能不支持缩容持久卷。
要实现卷扩展,CSI 驱动程序必须实现Volume Expansion插件功能,同时需要实现EXPAND_VOLUME 控制器(Controller)功能或实现EXPAND_VOLUME节点(Node)功能或两者兼而有之。
CSI 的 external-resizer 是一个 sidecar 容器,用来监听 PVC,并且控制 PV 的容量扩展。当接收到 PVC 容量扩展请求时,控制 CSI Driver 来进行 Volume Expansion 的操作。
对于文件存储来说,接收到的是一个 ResizeVolume的请求,也就是重新设置卷的大小。处理完 ResizeVolume 请求后,即可生效,对存储层实际的操作是修改共享目录的配额。XGFS 支持 Volume Expansion 带来的最大好处是无需停机即可在线扩容。
XEBS支持 Volume Expansion 的原理与XGFS基本一致。
在Kubernetes集群安装CSI Driver、sidecar-resizer组件
准备好待验证的 SC、PVC、PV 资源:
查看存储管理界面上的卷信息,此时容量为20GB
通过 kubectl edit 命令,将指定 PVC 的 size设置为 40Gi:
查看 PVC 验证修改成功:
查看存储管理界面上的卷信息,此时容量为40GB
Kubernetes CSI 的 Volume Expansion 在文件系统层面对应的功能是文件配额。XGFS的配额功能支持对文件系统中任意目录、嵌套目录同时设定配额,同时支持对指定目录同时设定目录配额、用户配额、用户组配额,可同时设定容量、文件数配额,对指定目录同时设定硬配额、软配额(宽限时间内允许继续写入)。
• 容量预估:文件配额创建三天后开始展示容量预估图;
• 容量历史:展示容量使用走势图,筛选周期(3小时、一天内、一周内、1个月内、3个月 内、自定义)。
文件数历史:展示文件数使用走势图,筛选周期(3小时、一天内、一周内、1个月内、3个月内、自定义)。
对于卷扩展功能的使用,首先在 Kubernetes 集群中,安装好 CSI Driver、sidecar-resizer 组件:
准备好待验证的 SC、PVC、PV 资源:
查看 pvc-8769c116-958f-4657-aad0-449c55f30864 的配额:
通过 kubectl patch 命令,将指定 PVC 的 size 重新设置为 510Gi:
查看 PVC 验证修改成功:
查看存储界面硬配额已经变成 510Gi:
在XSKY星辰天合下一代分布式文件系统XGFS中,我们实现了基于目录、用户和用户组的配额功能。管理员可对目录占用的存储资源或指定用户/用户组使用的存储资源进行监控和限制,避免个别用户/用户组过度使用资源,影响其他用户/用户组的使用。
目前XSKY的XGFS分布式文件系统和XEBS块存储系统都已支持了 Kubernets CSI 标准存储接口功能,包括快照、卷扩展等等。支持标准Kubernetes CSI所有功能的同时,进一步优化提升了用户的运维效率。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论