设为首页 收藏本站
查看: 1050|回复: 0

[经验分享] OpenStack Swift 存储策略

[复制链接]

尚未签到

发表于 2015-10-11 08:42:14 | 显示全部楼层 |阅读模式
  


OpenStack Swift 对象存储及其存储策略简介


[size=1.166em]
Swift 2.0 于 2014 年 7 月 8 日发布,其中最重要的新特性是存储策略(Storage Policy),该特性改变了以往存储系统中存储策略由设计与实施方决定的做法,让用户能够以 Container 为粒度,为不同需求的数据指定不同的副本数量、不同参数的纠删码、不同性能的存储介质、不同地理位置、不同的后端存储设备。存储策略充分体现了 Swift"软件定义存储"(Software Defined Storage)的特点。

[size=1.166em]
为了实现存储策略,Swift 在原先三个环(Ring)的架构基础上进行了改进。Swift 为账户、容器和对象分别定义了的环,通过环将虚拟节点(分区)映射到一组物理存储设备上。在 Swift 2.0 中,每个存储策略对应一个 Object Ring。


[size=1.166em]
回页首



Swift 存储策略的配置与使用



配置存储策略


[size=1.166em]
设置存储策略分为两步:编辑配置文件 swift.conf 文件,创建相应的 Object Ring。在配置文件中每个存储策略以[storage-policy:N]开头,其中 N 是策略的编号。对于该文件的解析遵循以下规则:




  • 如果该文件中没有声明任何策略,Swift 会自己创建一个;

  • 策略编号应当位非负整数;

  • 如果没有声明默认策略,Swift 会把编号为 0 的策略设为默认策略;

  • 策略编号必须唯一;

  • 策略应当具有名字,策略命名区分大小且必须唯一;

  • 策略名称只能包含字母、数字和连字符,"Policy-0"只能用于编号为 0 的策略;

  • 定义策略之后,应当有一个且仅有一个策略被指定为默认策略;

  • "废弃"(Deprecated)策略不能同时为默认策略。

[size=1.166em]
下面是一个 swift.conf 文件的示例:


[swift-hash]
# random unique strings that can never change (DO NOT LOSE)
swift_hash_path_prefix = changeme
swift_hash_path_suffix = changeme
[storage-policy:0]
name = apple
default = yes
[storage-policy:1]
name = orange
deprecated = yes
[size=1.166em]
完成 swift.conf 文件的编辑,下一步是为每个存储策略创建相应的 Object Ring,方法和创建老版本 Object Ring 类似,只是要在 object 后面加上"-N",这里的 N 是存储策略的编号。例如,为上述编号为 0 和 1 的存储策略创建 Object Ring:


swift-ring-builder object-0.builder create 10 3 1
swift-ring-builder object-1.builder create 10 2 1

使用存储策略


[size=1.166em]
存储策略的使用非常简单,只需要在创建 container 是指定存储策略即可,下面以 SAIO 部署为例加以说明:


curl -v -X PUT -H 'X-Auth-Token: <your auth token>' -H \
&quot;X-Storage-Policy: orange&quot; \
http://127.0.0.1:8080/v1/AUTH_test/myCont1
curl -X PUT -v -T file1.txt -H 'X-Auth-Token: <your auth token>' \
http://127.0.0.1:8080/v1/AUTH_test/myCont1/
[size=1.166em]
然后执行:


curl -X GET –v \
http://127.0.0.1:8080/endpoints/AUTH_test/myCont1/file1.txt
[size=1.166em]
例如,会看到如下结果:


[&quot;http://127.0.0.1:6010/sdb1/32/AUTH_test/myCont1/file1.txt&quot;,
&quot;http://127.0.0.1:6040/sdb4/32/AUTH_test/myCont1/file1.txt&quot;]
[size=1.166em]
说明 Storage Policy 已经成功发挥作用。



存储策略的应用模式


[size=1.166em]
上述提到副本数量的改变,只是存储策略的应用模式的一种,在实际应用中,可以有以下几种模式:




  • 缩减或增加冗余
    [size=1em]
    对于一些数据,它们不需要保证很高的数据持久性和可靠性,比较典型的是图像的缩略图,它们可以由原图降采样得到,在这种情况下,可以对原图采用三副本方案,对缩略图采用双副本方案,降低存储系统的开销。



    图 1.为不同的 Container 指定不同的副本数量


    DSC0000.gif

  • 性能分层
    [size=1em]
    例如,对于一些数据用 HDD 保存,另一些用 SSD 保存。也可以应用于其他存储介质,甚至是不同的存储设备。



    图 2.为不同的 Container 指定不同的存储介质


    DSC0001.gif

  • 地理位置约束
    [size=1em]
    在某些场景下,因为公司或者国家的政策的约束,某些数据必须存储在指定的地理位置,例如混合云场景。有些场景下,用户希望指定数据存放在距离访问客户端比较近的地方。



    图 3.为不同的 Container 指定不同的存储位置


    DSC0002.gif

  • 应用纠删码(Erasure Codes)
    [size=1em]
    对于性能要求不高的场合,应用纠删码。纠删码,又称为删除码,将对象分割为 m 个分片(fragments),并通过编码生成 k 个校验分片,最后将这 n=m&#43;k 个分片放到
    Swift 对象存储系统的不同位置(通常是 swift 的不同 zone 中)。对于将 m 个分片编码为 n 个分片的纠删码,记为EC(m, n)。纠删码的示意图如下:



    图 4.纠删码示意图


    DSC0003.gif
    [size=1em]
    纠删码在提高存储空间利用率的同时,保持或增加数据的持久性(durability)和可靠性。但是由于编码、解码和恢复数据往往需要较大的计算量,可能导致性能的降低,所以比较适用于对持久性和可靠性要求比较高,但是访问量并不大的数据存储。



    图 5 .应用纠删码保护数据


    DSC0004.gif

[size=1.166em]
回页首



在某视频网站中的应用案例


[size=1.166em]
在某视频网站中,采用 Swift 存储视频文件,并对其部分文件根据视频类型的不同应用不同的存储策略。

[size=1.166em]
视频数据分为三类:1)源片;2)超清视频文件;3)其他不同清晰度的视频文件。源片体积较大,对持久性要求高,但是对访问速度要求较低,并发访问数量和访问频率较低;清晰度较低的视频由超清视频转码得到,针对上述需求,设计存储策略如下:




  • 源片采用纠删码策略,编码参数为EC(7, 4),即把一个视频文件分割为 4 块,并生成 3 块校验块,存储效率约为 57%;

  • 超清视频三副本策略,存储效率约为 33%;

  • 清晰度较低的视频采用双副本策略,存储效率为 50%。

[size=1.166em]
假设设备损坏的概率为 2%,以上三种存储策略的数据持久性分别为:99.9995%,99.9992%和 99.96%。



表 1.存储策略的应用



数据类型
存储策略
存储效率
数据持久性

源片
纠删码EC(7, 4)
57%
99.9995%
超清视频文件
三副本
33%
99.9992%
其他分辨率视频文件
双副本
50%
99.96%
[size=1.166em]
Swift 集群的总结点数量为 54 个节点,总容量约为 2.3PB,集群的部署架构如下图所示,其中 Proxy Server 的数量可以根据需要增加或者减少。采用传统三副本方案,能够保存的视频总长度约为(同一段视频不同分辨率不进行重复统计)3.97×106 分钟。

[size=1.166em]
采用上述存储策略后,保存的视频总长度为 5.89×106 分钟,存储效率提高了 48%。



图 6. 基于 Swift 的视频存储系统的部署架构


DSC0005.gif
[size=1.166em]
回页首



结束语


[size=1.166em]
在大数据时代,随着文件数量和数据体量的增加,文件系统和 NAS 的瓶颈越来越明显,基于 RESTful Web API 的对象存储逐渐受到人们的广泛接受。作为最具代表性,应用最广泛的开源对象存储方案,OpenStack Swift 自诞生以来一直保持着技术上领先的地位,在 Swift 2.0 中推出的存储策略功能,能够让管理员根据自己系统的特点制定不同的存储策略;用户或租户根据自己数据的特点和业务需要,以 Container 为粒度选择存储策略,从而实现成本、数据可靠性、性能等维度上的综合权衡和优化,体现了软件定义存储的特点。本文只是对存储策略做了一个简要的介绍,让读者体会存储策略的用途,进一步深入探索可以查看参考资料了解有关
OpenStack Swift 的更多相关信息。




参考资料



学习




  • SwiftStack Blogs: https://www.swiftstack.com/blog/

  • Intel IDF13: OpenStack* Swift Erasure Code: A Smart Cloud Storage Solutionhttp://intelstudios.edgesuite.net/idf/2013/sf/aep/CLDS007/CLDS007.html?wapkw=swift

  • OpenStack Swift 官方文档 http://docs.openstack.org/developer/swift/index.html

  • 基于纠删码保护分布式对象存储的数据http://www.iwccsp.org/CloudConnect20140918Microwise.pdf


  
  


  原文链接:http://www.ibm.com/developerworks/cn/cloud/library/1411_limy_openstackswift/?cmp=dwskl&cpb=dw&ct=dwcon&cr=cn_CSDN_t10_1&ccy=cn

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125269-1-1.html 上篇帖子: openstack部署心得 下篇帖子: OpenStack前期使用小结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表