IaaS中的统一存储:从设计到实现
转自:https://www.ustack.com/blog/tycc/
“原生的OpenStack并不支持统一存储,云主机服务Nova、镜像服务Glance、云硬盘服务Cinder的后端存储各不相同。这样的设计缺乏合理的横向扩展性,当系统压力增大时,必然会出现各种问题。”UnitedStack资深存储研发工程师孟圣智在51CTO举办的WOT活动中表示,“这也是我们在构建云平台的时候,重新对存储进行设计,实现了统一存储的初衷。目前,UOS云平台所有的数据都在Ceph的资源池里,包括创建虚拟机,迁移,扩容,缩容等所有的操作都可以避免数据的传输。”
优化的效果
每个云硬盘最大支持 6000 IOPS和170 MB/s的吞吐率,95%的4K随机写操作的延迟小于2ms 。
所有数据都是三副本,强一致性,持久性高达10个9。
创建、删除、挂载、卸载实现秒级操作。
实时快照。
提供两种云硬盘类型,性能型和容量型。
统一存储架构的再设计
“原生的OpenStack中缺乏统一存储,后果是内耗严重,单纯从创建虚拟机虚拟机这一操作来看,通常需要1~3分钟。” UnitedStack通过将Ceph统一作为Nova/Glance/Cinder的存储后端,基于COW的卷创建和快照操作,实现了虚机的秒级创建。除此之外,还解决了虚机漂移和启动风暴等问题。
如何优化操作系统和Qemu
“除了架构设计将存储统一到Ceph,实现资源池化之外。对于操作系统和QEMU的优化也非常必要。”具体的优化主要包括以下方面:
优化操作系统
CPU
关闭CPU节能模式
使用Cgroup绑定Ceph OSD进程到固定的CPU Cores上
Memory
关闭NUMA
设置vm.swappiness=0
Block
设置SSD的调度算法为deadline
FileSystem
设置挂载参数”noatime nobarrier”
优化Qemu
Throttle: 平滑的I/O QoS算法
RBD: 支持discard和flush
Burst: 支持突发请求
Virt-scsi: 支持多队列
优化的重点:针对Ceph的七剑
“相对于针对操作系统和Qemu的优化而言,对Ceph的优化才是重中之重。针对Ceph的优化是一个长期摸索的过程,实际上,很多问题也是在平台长时间运营、规模逐渐扩展之后才暴露出来的。在UnitedStack的运营过程中,我们总结出以下七个方面。”
- 增大文件标识符数量,将文件名描述符全部缓存在内存里;
- 启用Ceph的Sparse Write,并对XFS进行patch解决fiemap的BUG;
- Ceph的默认参数并不适合SSD,按照SSD的要求进行参数调优;
- 打开RBD Cache,可以获得明显的性能提升;
- 通过选择性的延长特性线程的活跃时间,大大减少Context Switch的次数,降低I/O延迟;
- 针对Simple Messenger线程数过多、延迟较高的问题,开发了Async Messenger组件,实现更低的延迟,并大大减少了线程数;
- Ceph默认的Cache机制并不适合UnitedStack的缓存特点,引入RandomCache解决这一问题,Cache访问速度比社区版本提高一个量级。
孟圣智在WOT分享的内容详见PDF:IaaS中的统一存储:从设计到实践
IaaS中的统一存储:从设计到实现的更多相关文章
- 捕获mssqlservice 修改表后的数据,统一存储到特定的表中,之后通过代码同步两个库的数据
根据之前的一些想法,如果有A,B 两个数据库, 如果把A 用户通过界面产生的更新或者插入修改,操作的数据同步更新到B 库中,如果允许延时2分钟以内 想法一: 通过创建触发器 把变更的数据和对应的表名称 ...
- HDS推出HUS中端阵列 文件、块和对象统一存储
http://storage.chinabyte.com/86/12320086.shtml http://storage.chinabyte.com/134/12324134.shtml 日立数据系 ...
- 有一个线性表,采用带头结点的单链表L来存储,设计一个算法将其逆置,且不能建立新节点,只能通过表中已有的节点的重新组合来完成。
有一个线性表,采用带头结点的单链表L来存储,设计一个算法将其逆置,且不能建立新节点,只能通过表中已有的节点的重新组合来完成. 分析:线性表中关于逆序的问题,就是用建立链表的头插法.而本题要求不能建立新 ...
- QingStor 对象存储架构设计及最佳实践
对象存储概念及特性 在介绍 QingStor️对象存储内部的的架构和设计原理之前,我们首先来了解一下对象存储的概念,也就是从外部视角看,对象存储有什么特性,我们应该如何使用. 对象存储本质上是一款存储 ...
- abp中多种登陆用户的设计
项目地址:https://gitee.com/bxjg1987/abp 场景 在<学校管理系统>中,学生.家长.教师.教务都可能登陆,做一些属于他们自己的操作.这些用户需要的属性各不相同, ...
- vivo统一告警平台设计与实践
一.背景 一套监控系统检测和告警是密不可分的,检测用来发现异常,告警用来将问题信息发送给相应的人.vivo监控系统1.0时代各个监控系统分别维护一套计算.存储.检测.告警收敛逻辑,这种架构下对底层数据 ...
- IOS中的数据存储方式,特点,使用情况
数据存储的核心都是写文件,主要有四种持久化方式:属性列表(Plist),对象序列化,SQLite数据库,CoreData. 存储Plist: 键值进行存储,不能存储对象.对象需要序列化编码才能写入文件 ...
- .Net Core 项目中添加统一的XSS攻击防御过滤器
一.前言 最近公司内部在对系统的安全进行培训,刚好目前手里的一个.net core 项目中需要增加预防xss的攻击,本文将大概介绍下何为XSS攻击以及在项目中如何统一的预防XSS攻击. 二.XSS简介 ...
- Microsoft Azure存储架构设计
SQL Azure简介 SQL Azure是Azure存储平台的逻辑数据库,物理数据库仍然是SQL Server.一个物理的SQL Server被分成多个逻辑分片(partition),每一个分片成为 ...
随机推荐
- python多进程编程(二)
进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进 ...
- spring(13)------全面深入解析spring的AOP
一,AOP的基本思想 AOP(Aspect Oriented Programming)翻译成中文的大意是面向切面编程,主要目的解决让不该牵扯在一起的代码分离开来. (1)认识AOP 应用程序中通常包含 ...
- Linux中的服务管理
RPM包默认安装的服务 查看已安装的服务: chkconfig --list 默认安装位置: /etc/init.d 启动脚本 /etc/sysconfig 初始化环境配置文件 /etc 配置文件位 ...
- Python基础(18)_面向对象程序设计2(反射、__str__、__del__、__item__系列)
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...
- 序列化+protobuff+redis
背景: 当redis里面需要存储 “key-字符串,value-对象” 时,是不能直接存对象,而是需要将序列化后的对象存进redis. redis没有实现内部序列化对象的功能,所以需要自己提前序列化对 ...
- Raspberry Pi开发之旅-WIFI遥控小车
一.简单介绍树莓派的GPIO口 上图是树莓派2代的接口(不同型号接口会有差异),我们就以此为例来说下这些接口. 1.GPIO介绍 GPIO 英文全称是:General-purpose input/ou ...
- HTML table元素
搬运,内容来自HTML Dog. 简单示例 <!DOCTYPE html> <html> <body> <table> <tr> <t ...
- python 运行报错 Process finished with exit code -1073741819 (0xC0000005)
发现是由于openpyxl模块导致的,去掉这个模块的内容就能运行,import openpyxl就运行不起来, 将openpyxl卸载了重装, 以及更换了不同的openpyxl版本,都不行,还是运行不 ...
- 机器学习相关知识整理系列之三:Boosting算法原理,GBDT&XGBoost
1. Boosting算法基本思路 提升方法思路:对于一个复杂的问题,将多个专家的判断进行适当的综合所得出的判断,要比任何一个专家单独判断好.每一步产生一个弱预测模型(如决策树),并加权累加到总模型中 ...
- Cocos2d-x项目移植到WP8系列之三:C++和C#的交互
原文链接: http://www.cnblogs.com/zouzf/p/3971021.html 上一篇提到工程使用 XAML 和 Direct3D 项目模板 是因为要涉及到C++和C#的交互,微软 ...