智能存储系统(待续...)
组成部分
前端
由前端端口和前端控制器组成。
前端端口
使得主机能连接到智能存储系统,每个前端端口拥有相应传输协议的处理逻辑(SCSI、光纤通道、iSCSI等)。
前端控制器
通过数据总线在主机和缓存间传输数据。通过命令队列算法来优化IO处理。
前端命令队列
通过队列存储IO命令,调整执行顺序,减少不必要的驱动器磁头移动,改善磁盘性能。
常见算法:
先进先出算法FIFO:按顺序执行,性能最差
寻道时间优化算法:根据寻道时间优化
访问时间优化:综合考虑寻道时间和旋转延迟进行优化
注:命令缓存也可以在磁盘控制器上实现。
高速缓存
基本单位是页。
物理磁盘访问最慢。因为寻道时间与旋转延迟,通常要几毫秒。过慢导致请求被排队,带来响应延迟。
缓存访问数据只需不到1ms,数据先被存入缓存随后再写入磁盘。数据存入缓存后,主机会立即得到响应。
缓存由数据存储和标签RAM组成。
标签RAM
每个条目记录数据保存在缓存哪个位置以及数据属于磁盘中的哪个位置。
脏标志位:记录是否已保存到磁盘
时间信息:如最后访问时间,淘汰很久没访问的数据
带有缓存的读操作
主机发送读请求,前端控制器通过标签RAM查询数据是否在缓存中。
如果找到了(读命中),数据直接送入主机,不发生磁盘操作。
否则(缓存未命中),后端控制器访问磁盘,读取数据,数据被存入缓存,在通过前端控制器传入主机。
预读(预取)
如果请求是顺序的,未命中时,将一些还没被请求到的后续磁盘块提前读取到缓存。以使后续数据读命中。
智能存储系统提供了固定和可变的预读长度。
固定长度预读:适合IO大小统一的操作
可变长度预读:预读数倍于主机请求数据的长度。设置最大上限防止大量磁盘操作影响其他IO操作。
带有缓存的写操作
回写缓存
数据存入缓存,主机得到立即响应。一段时间后,多个写操作的数据被一起提交到磁盘。
将写操作和磁盘的机械延迟分开,写响应时间加快;但如果故障,未写入磁盘的数据可能丢失。
直接写操作
存入缓存后立即写入磁盘,然后主机得到响应。
注:有时要跳过缓存,如:要写入极大量数据时,防止这些数据占用大量缓存空间,因此选择直接写入磁盘。而将缓存用于优化小的、随机的IO访问。
缓存实现
专用缓存
读操作的缓存和写操作的缓存分别使用单独的内存空间。
全局缓存
读写操作可以使用任意空闲的内存。
只需管理一组全局的地址,因此更有效率。
可允许用户指定读缓存和写缓存的比例。
缓存管理
最近最少访问算法LRU(Least Recently Used)
长时间未访问的缓存将释放或标记为可重用。
最近访问算法MRU(Most Recently Used)
与LRU相反,最近被使用的缓存会被释放或标记为可重用。
刷清操作
缓存写入数据时,系统必须将脏页面(已写入页面,未写入磁盘)刷清。
- 闲置刷清:缓存利用在高低水位之间,适当速率连续刷清
- 高水位刷清:达到高水位时激活。存储系统专门分配一些额外资源来刷清。这种刷清模式与主机IO操作的冲突最小。
- 强制刷清:缓存容量100%占用,脏页面被强制刷清到磁盘。
缓存数据保护
防止因电源故障或缓存故障使未写入磁盘的缓存数据丢失。
缓存镜像
写入缓存的数据被保存在相互独立的内存条的不同位置。读操作不需要(本来就是从磁盘传入缓存),只有写操作会被镜像。
缓存跳跃(缓存保险存储)
停电时,提供一组物理磁盘在停电时转储缓存中的数据。用来转储的磁盘称作跳跃驱动器(保险存储驱动器)。供电恢复后再重新读入缓存,再写回磁盘。
服务器闪存缓存技术
使用主机上的智能缓存软件和 PCIe 闪
存卡
• 显著提高应用程序性能
为读取密集型工作负载提供性能加速
避免与对存储阵列的 I/O 访问关联的网络
延迟
• 通过将数据放在服务器上的 PCIe 闪存
中,以智能方式确定将受益的数据
• 使用最少的 CPU 和内存资源
闪存管理减负到 PCIe 卡上
后端
由后端端口和后端控制器组成。