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并发编程&多进程(一)
本篇理论居多,实际操作见: python并发编程&多进程(二) 一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行) ...
- 关于handler内存泄露的问题
在使用Handler更新UI的时候.我是这样写的: public class SampleActivity extends Activity { private final Handler mLeak ...
- nodejs开发的example或学习文档
nodejs开发一般使用webstorm作为ide. 还有个叫Cloud 9的云编辑器. webstorm注册网址: http://idea.lanyus.com/ http://amirrajan. ...
- vlc做转发的命令
from:http://blog.csdn.net/linyuejiang/article/details/7498482 将一个udp的多播流转发复制到http流中去 vlc udp://@239. ...
- css position absolute 浮动特性
absolute的元素不会占据未浮动的元素的空间<html> <head> <style type="text/css"> .flipbox{ ...
- UI设计中的各种小控件
xib支持图形化操作,提供了几乎所有的控件可供选择,只需拖动到相应的位置即可,但是控件的后台代码仍然需要手动编写,一定程度上加速了前台的开发. xib快速开发程序,手写代码速度比较慢 xib适合做静态 ...
- MongoDB部署指南
下載安裝包 http://www.mongodb.org/ 安裝MongoDB systemLog: destination: file path: E:\MongoDB\log\mongo.log ...
- nodejs数据接收body-parser中间件
给大家翻译一下npm上body-parser的资料 nodejs 的body数据解析中间件 插件作用:对于req.body属性,在操作数据前分析进来的请求体的插件 首先学习解析一个http处理 这篇文 ...
- Django用户注册、邮箱验证实践
算法流程如下:1)处理用户注册数据,存入数据库,is_activity字段设置为False,用户未认证之前不允许登陆2)产生token,生成验证连接URL3)发送验证邮件4)用户通过认证邮箱点击验证连 ...
- PHP的垃圾回收机制以及大概实现
垃圾回收,简称gc.顾名思义,就是废物重利用的意思.再说这个之前先接触一下内存泄露,大概意思就是申请了一块地儿拉了会儿屎,拉完之后不收拾,那么这块地就算糟蹋了,地越用越少,最后一地全是屎.说到底一句, ...