Swift在小文件对象(如图像)存储上,性能很好。Ceph目前坑还是比较多,不是很稳定,如果没有研发能力,只是做对象存储,不建议在生产环境中用。国内生产环境最大的部署是京东,主要也是为了做块存储。
这个文件包含2个部分,一个是必须参数,一个是可选项参数
必要参数:这些参数被修改,如果需要生效需要运行installsh才能生效;
可选参数:可选择参数是选择性更改,你可以保留默认在web portal上也可以进行修改。假如你改动了harborcfg,只能在首次启动有效,再次修改将被忽略。注意:当你选定了auth_mode后并且注册和创建任何用户在harbor,认证模式就不能更改了。
默认Harbor使用本地存储。在生产环境中你可能考虑使用其他存储,如S3,OpenStack Swift,Ceph等。
如下:
一旦配置好harborcfg和存储,你就可以开始使用installsh脚本安装。
假如安装过程没有任何异常,可以使用浏览器打开:>
参考Ceph官方安装文档
Openstack环境中,数据存储可分为临时性存储与永久性存储。
临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储glance上传的系统镜像;
永久性存储:主要由cinder提供的块存储与swift提供的对象存储构成,以cinder提供的块存储应用最为广泛,块存储通常以云盘的形式挂载到虚拟机中使用。
Openstack中需要进行数据存储的三大项目主要是nova项目(虚拟机镜像文件),glance项目(共用模版镜像)与cinder项目(块存储)。
下图为cinder,glance与nova访问ceph集群的逻辑图:
ceph与openstack集成主要用到ceph的rbd服务,ceph底层为rados存储集群,ceph通过librados库实现对底层rados的访问;
openstack各项目客户端调用librbd,再由librbd调用librados访问底层rados;
实际使用中,nova需要使用libvirtdriver驱动以通过libvirt与qemu调用librbd;cinder与glance可直接调用librbd;
写入ceph集群的数据被条带切分成多个object,object通过hash函数映射到pg(构成pg容器池pool),然后pg通过几圈crush算法近似均匀地映射到物理存储设备osd(osd是基于文件系统的物理存储设备,如xfs,ext4等)。
CEPH PG数量设置与详细介绍
在创建池之前要设置一下每个OSD的最大PG 数量
PG PGP官方计算公式计算器
参数解释:
依据参数使用公式计算新的 PG 的数目:
PG 总数= ((OSD总数100)/最大副本数)/池数
3x100/3/3=3333 ;舍入到2的N次幕为32
openstack集群作为ceph的客户端;下面需要再openstack集群上进行ceph客户端的环境配置
在openstack所有控制和计算节点安装ceph Octopus源码包,centos8有默认安装,但是版本一定要跟连接的ceph版本一致
glance-api 服务运行在3个控制节点, 因此三台控制节点都必须安装
cinder-volume 与 nova-compute 服务运行在3个计算(存储)节点; 因此三台计算节点都必须安装
将配置文件和密钥复制到openstack集群各节点
配置文件就是生成的cephconf;而密钥是 cephclientadminkeyring ,当使用ceph客户端连接至ceph集群时需要使用的密默认密钥,这里我们所有节点都要复制,命令如下
※Glance 作为openstack中镜像服务,支持多种适配器,支持将镜像存放到本地文件系统,>
Ceph是一套高性能,易扩展的,无单点的分布式文件存储系统,基于Sage A Weil的论文开发,主要提供以下三个存储服务: 对象存储(Object Storage),既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。 块存储(Block Storage),作为块设备像硬盘一样直接挂载。 文件系统(File System) ,如同网络文件系统一样挂载,兼容POSIX接口。 Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。 Ceph集群的节点有三种角色: Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构) OSD,维护节点上的对象,响应客户端请求,与其他OSD节点同步 MDS,提供文件的Metadata,如果不使用CephFS可以不安装
Ceph是一套高性能,易扩展的,无单点的分布式文件存储系统,基于Sage A Weil的论文开发,主要提供以下三个存储服务:
对象存储(Object Storage),既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。
块存储(Block Storage),作为块设备像硬盘一样直接挂载。
文件系统(File System) ,如同网络文件系统一样挂载,兼容POSIX接口。
Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。
Ceph集群的节点有三种角色:
Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构)
OSD,维护节点上的对象,响应客户端请求,与其他OSD节点同步
MDS,提供文件的Metadata,如果不使用CephFS可以不安装
不能
Swift和Objective-C共用一套运行时环境,Swift的类型可以桥接到Objective-C(下面我简称OC),反之亦然。两者可以互相引用混合编程。其次就是,OC之前积累的很多类库,在Swift中大部分依然可以直接使用,当然,Swift3之后,一些语法改变了很多,不过还是有迹可循的。OC出现过的绝大多数概念,比如引用计数、ARC、属性、协议、接口、初始化、扩展类、命名参数、匿名函数等,在Swift中继续有效(可能最多换个术语)。Swift大多数概念与OC一样。当然Swift也多出了一些新兴概念,这些在OC中是没有的,比如范型、元组等。
但是:现阶段Swift 到底能不能取代 Objective-C
答案是还不行。
其实到现在为止 Swift 离完全替代 Objective-C 还是很遥远,因为 Apple 内部一直在用 Objective-C 来做一些 Framework 的开发,底层也不可能用 Swift 实现,所以现在更多的替代是体现在外部开发。
二、Swift比Objective-C有什么优势?
1、Swift容易阅读,语法和文件结构简易化。
2、Swift更易于维护,文件分离后结构更清晰。
3、Swift更加安全,它是类型安全的语言。
4、Swift代码更少,简洁的语法,可以省去大量冗余代码
5、Swift速度更快,运算性能更高。
三、Swift目前存在的缺点
1、版本不稳定,之前升级Swift3大动刀,苦了好多人,swift4目前还未知
2、使用人数比例偏低,目前还是OC的天下
3、社区的开源项目偏少,毕竟OC独大好多年,很多优秀的类库都不支持Swift,不过这种状况正在改变,现在有好多优秀的Swift的开源类库了
4、公司使用的比例不高,很多公司以稳为主,还是在使用OC开发,很少一些在进行混合开发,更少一些是纯Swift开发。
5、偶尔开发中遇到的一些问题,很难查找到相关资料,这是一个弊端。
6、纯Swift的运行时和OC有本质区别,一些OC中运行时的强大功能,在纯Swift中变无效了。
7、对于不支持Swift的一些第三方类库,如果非得使用,只能混合编程,利用桥接文件实现。
四、Swift其他功能说明
1、Swift的内存管理
Swift使用自动引用计数(ARC)来简化内存管理,与OC一致。
2、Swift的可选项类型(Optionals)介绍
Swift引入了可选项类型,用于处理变量值不存在的情况。Optionals类似于OC中指向nil的指针,但是适用于所有数据类型,而非仅仅局限于类,Optionals相比于OC中的nil指针,更加安全和简明,并且也是Swift诸多最强大功能的核心。
3、Swift中的 !和 ?
这两个符号是用来标记这个变量的值是否可选,!表示可选变量必须保证转换能够成功,否则报错,但定义的变量可以直接使用;?表示可选变量即使转换不成功也不会报错,变量值为nil,如果转换成功,要使用该变量时,后面需要加!进行修饰。
以上就是关于可以把ceph作为对象存储,用于生产环境吗全部的内容,包括:可以把ceph作为对象存储,用于生产环境吗、Harbor部署、⑩ OpenStack高可用集群部署方案(train版)—OpenStack对接Ceph存储等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)