太平洋电脑网固态硬盘普及的今天,上班族的你对“小伙伴”了解吗?( 二 )


固态硬盘对比机械硬盘有何差异?
固态硬盘这种存储介质和传统的机械硬盘有着典型差异 , 存储系统也要针对固态硬盘有针对性的优化 , 这些优化效果体现在很多仿麦呢 , 包括性能的提上、硬盘使用效率的提升、硬盘使用寿命的延长等方面都是通过主控实现的 。
在机械硬盘时代 , 机械硬盘的延时在毫秒级别 , 几乎可以抹杀掉网络延时带来的影响 , 所以只要保证网络协议、网络交互的优化 , 应用程序大可以访问远端的机械硬盘 , 但是固态硬盘的延时已经到了微秒级别 , 除非使用极低延时的高性能网络 , 否则访问远端的固态硬盘数据的延时会明显收到影响 。
对于分布式存储而言 , 必须一方面在数据分散放置的同时 , 尽可能地利用本地固态硬盘的能力 , 即在数据放置策略上做权衡 。 在这方面 , 我们结合元数据放置算法和策略 , 对YRCloudFile分布式文件系统的元数据采用了一部分的本地化固态硬盘访问 , 还将推出智能缓存技术 , 这将大量热数据缓存在指定的固态硬盘本地设备中 , 进一步降低访问延时 。

太平洋电脑网固态硬盘普及的今天,上班族的你对“小伙伴”了解吗?
本文插图

控制硬盘存储使用量 。 再垃圾回收期间 , 需要擦除擦除存储块后创建空闲的存储块 。 擦除block需要保留在block内保存着有效数据的page , 才能获得空闲block 。 创建一个空闲block可能需要压缩和挪动多个block内的page , 具体数量取决于block的存储度 。
假设固态硬盘容量已使用A% , 为了擦除一个block , 需要挪动和压缩1/1-A个block 。 显然 , 固态硬盘的使用率越高 , 将需要移动更多的block以释放一个block , 这将占用更多资源并导致更长的IO等待时间 。 例如 , 如果A = 50% , 则仅压缩2个block以释放一个block 。 如果A = 80% , 则大约移动5个block数据以释放一个block 。 如果考虑上block的page , 需要操作的数据则更加惊人 , 假设每个块都有P个page , 并且所有page都包含有效数据 , 则每次GarbagedCollected都需要复制PA/1-A个page 。 如果每个block包含128个page , 当A=50%时 , 每个blcok都需要复制128个page , 而当A = 80%时 , 则为512个page , 当A = 95%时 , 则达到2432 page 。
使用多线程进行小I/O访问 。 因为固态硬盘具有多个级别的内部并行处理机制 。 单个I/O线程是无法充分利用这些并行特性额 , 使用单个线程进行I/O访问 , 会导致整体访问时间延时更长 。 而使用多个线程并发访问 , 则可以利用固态硬盘内部这些并发特性 。
固态硬盘上对本机命令队列的支持可以有效地再多个channel之间分配读写操作 , 从而提高内部I/O并发性 。 所以上层应用活存储系统尽可能并发访问小I/O是能提升读写性能的 。 如果针对单个应用很难进行多线程并发 , 则可以考虑多个应用对数据的并发访问 , 从而充分利用硬盘的并发特性 。

太平洋电脑网固态硬盘普及的今天,上班族的你对“小伙伴”了解吗?
本文插图

总结
据悉 , 固态硬盘已经被存储系统大量使用通常采用固态硬盘的存储系统会比使用机械硬盘的存储系统具有更好的性能 。 但是在不经过针对性优化时 , 单纯地将固态硬盘视为一个普通的存储设备使用 , 不能充分发挥出固态硬盘 , 尤其是NVMe的极致性能 。 这是因为固态硬盘的工作原理与普通的机械硬盘有较大的差异 , 访问特性上也不同 。 为了充分利用固态硬盘带来的性能优势 , 现代的存储系统 , 尤其是分布式存储系统都需要对固态硬盘做针对性的优化 。


推荐阅读