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),每一个分片成为 ...
随机推荐
- C#窗口的Load事件与Shown事件的差别
Load:在第一次显示窗口前发生. <pre name="code" class="csharp"> private void Form1_Load ...
- nginx基础系列
centos中搭建nginx环境 nginx开机启动 nginx配置文件说明 nginx负载均衡配置 nginx upstream模块 nginx配置ssl nginx日志切割 nginx平滑升级
- Mac 远程连接 Windows 系统无法全屏
远程连接之后,Mac 工具栏中 配置 RDC 下 “首选项”. “显示” ----远程桌面大小:全屏 ----打开远程桌面窗口:第二显示器(我用的是双显示器,根据实际情况设定显示器) 配置完成后,点击 ...
- C#:连接本地SQL Server语句
一.Windows身份验证方式 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source ...
- 17南宁区域赛 J - Rearrangement 【规律】
题目链接 https://nanti.jisuanke.com/t/19976 题意 给出 一个n 然后 给出 2*n 个数 可以重新排列成两行 然后 相邻的两个数 加起来 不能被三整除 可以上下相邻 ...
- C# Invoke 使用 异步委托
如果使用多线程,应该会遇到这样的一个问题,在子线程中想调用主线程中(Form1)控件,提示报错! 可以使用Invoke方法调用. this.Invoke(new MethodInvoker(() =& ...
- Hibernate Student_Course_Score设计
示例: 设计代码,实现在数据库中建student表.course表.和score表,展现三者关系 student表:id.name course表:id.name score表:id.score.st ...
- 027_编写MapReduce的模板类Mapper、Reducer和Driver
模板类编写好后写MapReduce程序,的模板类编写好以后只需要改参数就行了,代码如下: package org.dragon.hadoop.mr.module; import java.io.IOE ...
- Linux Shell编程 test命令
概述 test 命令是Shell 脚本中用来进行条件判断的. test命令示例 按照文件类型进行判断 测试选项 作 用 -b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c ...
- LVS/NAT 配置
LVS/NAT 配置 实验环境 三台主机:Linux Centos 6.4 32位 调度器Director:192.168.1.160(内网IP).192.168.2.20(公网IP) HTTP真实服 ...