冬瓜哥详解存储OS变迁


外置传统存储系统的OS及其配置本身很少受到人们关注。人们往往更加重视存储系统的架构、规格、特性、场景、价格等。存储系统的及其配置界面直接关系着系统的软件特性对外的展现,关系到易用性和运维成本。



存储系统OS的5大模

1
通道及硬盘管理层

该层属于暗流汹涌的一层,也是决定了一个存储系统是否稳定可靠的关键一层,也是凝聚了对应厂商多年心血的关键一层。哦?看似这一层好像很有技术含量?其实技术含量本身不高,就是 工作量非常大

这一层之所以被称为暗流汹涌,是因为硬盘、HBA、链路这三样哪样都够喝一壶的。

机械硬盘 虽然存在这么多年了,但是其稳定性依然是个问题,各种bug层出不穷。硬盘提供商自己其实是发现不了多少bug的,因为它们根本没有大规模的场景去实践。不少bug都是存储厂商发现的。当然,能用软件规避的,都规避掉了,而且可能并不会将问题反馈给硬盘厂商,因为这是天然的技术壁垒,否则反馈给了硬盘厂商的话,其他存储厂商就不用耗费人力去解决该问题了。不同型号,甚至同一型号不同批次的硬盘的行为可能也不一样,需要牵扯到大量的测试工作。

另外, HBA 也是个难啃的骨头,HBA主控固件是不开放给存储厂商的,bug只能靠HBA厂商来解决,周期较长,有些必须从软件上做规避。HBA主控的驱动程序一般是由存储厂商自行开发,往往固件和驱动都得配合着来改,坑也是不少的。

再就是 链路 问题,闪断、误码等是常事,谁踩过足够的坑,谁才能将这一层做的足够稳定。这一层需要尽量为上层提供一个稳定不变的设备列表。

2
 后端数据布局及容错管理层

这一层虽说没有太多的暗流,但是也够得上异常澎湃。 得益于底层的工作,这一层将获得的物理设备做成逻辑设备,并需要负责数据的冗余,以及IO出错时候的恢复 。IO错误是家常便饭了,各种原因可能都会导致IO错误,比如坏扇区/坏道,信号质量问题导致的数据校验错误,机械问题等等。不管原因如何,这一层都需要将这个错误纠正回来,比如利用 Raid技术 。该层拥有很多开源实现,比如Linux下mdraid模块等,其更加开放,可控性也更好。

该层需要为上层提供一个稳定的逻辑资源视图。这一层早期主要是Raid功能,后来逐渐演化出Raid2.0、分层等技术。

3
缓存管理层

该层负责缓存管理。又分为数据持久性管理和性能管理。

持久性管理 主要是将脏数据按照对应的策略刷到后端硬盘上永久保存。在这一层上,早期的存储系统基本没有什么优化措施,大家千篇一律,按照LRU等通用算法,甚至直接使用Linux原生的Page Cache策略而不加修改。到后来,随着互联网蓬勃发展,业务层不管是在种类还是数量上,都有点爆发式增长,直接对存储系统产生了影响。不少存储系统演化出诸如QoS这种精细化性能调节能力。比如其中典型的Dell的(Compellent)SC系列存储系统中就针对QoS做了精细化实现。其可以实现针对单个逻辑卷或者一组逻辑卷,设置其总IOPS、MB/s和时延。其实现原理是在缓存层的队列处理时增加了对应的调节策略,包括入队比例、重排等。

Volume(s)QoS

其中 Relative Priority 指的是当发生队列较满时,该卷的IO是要被提前、不动,还是排最后得到执行。用户可以不指定具体的指标,而用相对性能来配置某个卷或者卷组的QoS,这就一定程度上简化了配置,对于那些生手来讲比较合适。

QoS Configuration Options

具体做法则是在Dell的SCOS存储操作系统配置界面中先创建一个 QoS Profile ,在其中定义对应的指标,然后将该Profile黏着在逻辑卷作为其一个属性即可。





Assign a profile to a volume


Sample chart showing QoS

可以看到SCOS的GUI中还嵌入了统计图表功能
来动态展示对应卷的QoS效果。

4
前端访问层

这一层主要负责与主机端的通信,包括底层网络的连接、握手、设备发现、设备属性的虚拟、接收和处理IO、性能统计工作等。该层也事关整体稳定性。不过这一层除了前端HBA固件、驱动之外,基本都是标准协议,可控性较强。

5
侧翼的数据管理功能层

这一层对于一台存储系统来讲其实是可有可无的, 是体现差异化的竞争力的关键 。诸如快照、分层这种功能基本是标配,必须有的。自动精简配置这个功能虽然比较鸡肋但是迫于竞争压力也必须有。至于重删,在线存储应用甚少,加上近几年硬盘容量也不断加大价格也不断下降,使用的必要性似乎不大,而且还影响性能,且需要更高规格的CPU、RAM,有些得不偿失。仅在备份场景针对离线数据使用较多。

在这一层近期有些新技术字眼可能熟悉的人不是很多,比如 Dell在其Compellent存储系统中推出的存储联邦功能 。该功能主要技术就是卷的 跨存储系统透明热迁移技术 (Volume Live Migration)。其本质原理就是将卷从本来与主机相连的存储系统后台迁移到其他存储系统,主机的访问仍然先发送到本地存储,然后由本地存储负责转发到目标存储。相当于用本地存储系统实现了在线迁移透明虚拟化功能。针对Live Migration的配置也比较简单,通过可视化界面点击对应菜单即可。


Start a Live Migrate


Alerts - Thresholds


Live Migrate Attributes


Swap Roles


Complete

存储系统的软硬件框架

早期,有些存储系统还使用了比如Freescale、PowerPC等CPU平台。对应的OS则还有VxWorks、Linux、Windows等。后来几乎所有产品都过渡到了 Linux/BSD+Intel x86 平台。

早期几乎所有厂商都是在内核态中实现所有的存储IO相关的处理模块的,而在用户态实现数据管理功能。而目前几乎所有厂商都转到了 全用户态实现 ,有些甚至连设备驱动都放在用户态来实现,OS纯粹作为一个线程调度器和内存管理器而存在了。有些系统还进一步实现了容器技术,使得功能代码可移植性非常强。

存储系统的配置管理接口与工具

早期普遍使用私有协议以及SNMP协议。后来逐渐演化出SMI-S,然后RESTful API、Cinder、VAAI/VASA等更接近业务的资源管理接口。

早期的时候,不少人还以命令行为荣,鄙视用GUI的。笔者那时候其实就很不以为然,用CLI逼格就高了么?没道理啊。当时IT领域的新技术、概念非常匮乏,市场上主要就是那几个老炮们的地盘。那时候中关村DIY能点亮个主板都是高大上,可想而知能用CLI配置这些老炮出产的高端设备时是多么彰显逼格。而现在不同了,放着GUI不用非用CLI不可的那叫负逼格装逼。

资源可视化及用户体验

笔者之前搞过一套解决方案,叫做“可视化存储智能”,其中涉及了一系列的技术和展示,体现出了可视化智能存储系统的全貌。笔者认为,对于传统存储系统而言,目前市场上已经没有什么新概念可炒作了。至于分布式、Server-SAN、超融合、一体机、云计算/大数据,这些都是新生代玩家弄的概念,老炮们实在是拿不出什么来了,拿出来的也只是老炮圈子里赏玩一下罢了,根本吸引不了外界眼球。而可视化存储智能这个概念,笔者认为是与新时代的玩法接地气的。

比如Dell SC最新版本的Enterprise Manager,就是一个基于HTML5构建,用单一界面把Storage Center、Application Protection Manager一起纳入管理的GUI工具。 其中的可视化元素极大增强了当今面向数据中心场景的用户体验。







综上所述,如今大数据+互联网环境下,传统存储系统更需要在可视化、智能方面继续耕耘了。以往那种不注重用户体验的玩法,在当今时代是没有什么竞争力可言的。

冬瓜哥详解存储OS变迁相关推荐

  1. python os.path.exists 已存在_详解python os.path.exists判断文件或文件夹是否存在

    1.SocketServer模块编写的TCP服务器端代码 Socketserver原理图服务端:import SocketServer #导入SocketServer,多线程并发由此类实现 class ...

  2. 跟着Code走,详解Symbian OS API调用过程

    作为一个被Symbian开发折磨过的人,当得知Symbian开源时,忍不住马上跑到developer.symbian.org上瞧一瞧,看看自己具体是怎样被折磨的.看了一段时间之后,想想还是把有些东西记 ...

  3. CynosDB技术详解——存储集群管理

    本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...

  4. CynosDB技术详解——存储集群管理【文末有福利】

    本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...

  5. 第五周-第07章节-Python3.5-内置模块详解之OS模块

    os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...

  6. python中os模块详解_Python OS模块(常见文件操作示例)

    1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...

  7. python3文件路径操作常用方法带示例详解(os.path模块,os.listdir,os.walk,os.scandir方法等)(不定期更新整理中)

    python文件路径操作常用方法 前言(文件路径的基本知识) 1.路径的获取和转换 获取当前.py脚本文件的路径 获取绝对路径 路径的规则化 2.路径的判断 判断路径是否存在 判断路径是否为文件 判断 ...

  8. 详解python os.walk 实现 tree

    os.walk & 实现tree 代码Doc 实现tree Directory tree generator 代码Doc Directory tree generator.For each d ...

  9. 详解OS X和iOS图像处理框架Core Image

     详解OS X和iOS图像处理框架Core Image width="22" height="16" src="http://hits.sinaj ...

  10. 【Python入门】Python之OS模块39个常用函数详解

    os,语义操作系统,所以该模块就是操作系统相关的功能了,用于处理文件和目录这些我们日常手动需要做的操作,比如新建文件夹.获取文件列表.删除某个文件.获取文件大小.重命名文件.获取文件修改时间等,该模块 ...

最新文章

  1. RMAN Backups
  2. python程序实例教程基础-编程小案例
  3. mvn 使用中的错误
  4. (DFS)zoj1008-Gnome Tetravex
  5. UI 实用素材|可视化后台系统UI视觉界面
  6. SAR(遥感、卫星) 图像常用数据集
  7. APUE学习笔记-守护进程的创建
  8. mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云
  9. Python Thinker GUI的组件的简单总结
  10. MATLAB-1: 线性拟合(r2、系数和系数误差)
  11. ​从ASML年报看半导体产业的未来
  12. CSS:三种背景(斑马线,棋盘,格子)
  13. vue 多种方法实现名字拼接
  14. scipy.statis统计学的常用Python包
  15. Ubuntu18 网速显示 插件 显示在状态栏
  16. QOpenGLWidget 第二篇EBO、VBO、VAO(绘制三棱锥)
  17. 大豆技术面分析_技术贴 | GIS三维视域分析—面要素
  18. SystemProperties与Settings.system
  19. 共用体实现浮点数、负数的存储
  20. verdi直接打开list文件

热门文章

  1. initializationerror错误的解决
  2. 火狐firefox插件plugin:
  3. Java多线程入门一
  4. 城市信息学其二-城市人类动力学
  5. Gym 100818F Irrational Roots (数学)
  6. this的指向为什么是undefined
  7. 部署基于SAWP的低成本开源CRM系统
  8. 老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!
  9. 基于OpenCV的土壤裂缝分割系统
  10. 计算机英语考虑是,计算机英语中单词privilege和permission的区别