近期与一家匿名供应商讨论,在共享的存储阵列里我们是否真的需要服务质量(QoS)。他的想法是,如果我的存储阵列和网络有足够的带宽/IOPS,那何苦还要实现服务质量。乍一看这似乎是一个合理的假设,假如我拥有比所需更多的资源,那么满足所有需求自然不成问题。单就其是否有意义而论,我们先退一步,看看在过去的15-20年,人们是如何提供持续存储的。
问题
持续存储在计算中一向是瓶颈,因为磁盘和磁带I/O比处理器和内存运算发生要慢得多。而存储比数据在处理器往返的速度要慢3到4倍(纳秒&微秒对比毫秒),相互之间差异巨大。因就有了著名计算机架构师Gene Amdahl曾说的一个好理由,“最好的I/O就是你什么都不必做”。外部I/O拖后腿。因此,存储一直力图尽可能快地传递I/O请求。正如“麦当劳”式配送相对饭馆订餐的区别在于时间间隙被提前分配到了哪里。
具体来说,对于麦当劳店,顾客按顺序享受服务,即便他们一时半会吃不到。选错队你还可能会排在犹豫不决,团购订餐的人后面又或者还有一个动作迟缓的服务员。没有优先权和特殊待遇——用餐时间未知。很多带宽是通过增加更多服务器(可扩展性受限)提供。相对而言,饭店有预订时间间隙,确保了大厨能及时奉上美食。食物利用晚上的时间均匀分配(希望如此)以期顾客有更一致的体验。间隙受限,还要进行策划和管理。如果没有预约,你可能会被拒之门外。饭店的“向外扩展”是通过增加更多覆盖面(桌位)再加上更多人手。
存储阵列是由HDD构建,I/O响应能力具有不可预测性和多变性,取决于I/O请求的工作负载概要。供应商采用如高速缓存,预取,队列重组和降级来缓解峰值并简化I/O。一些供应商实施无服务质量的优先级技术,旨在实现尽可能多的后端I/O。而对于闪存,这些问题就不大明显了,因为SSD提供比HDD更高吞吐量和更低的延迟, 甚至随机工作负载(受制于管理问题如垃圾回收)。主机I/O更具可预测性和一致性,但在共享组件如前端端口,内部软件队列,后端控制器和共享SSD上仍会出现情况。
租户干扰
由于这个共享性质,可能会有“租户干扰”问题,一台主机阻断I/O“交通”造成其他组合损失。即便有后端SSD,硬件前端队列(比如FC HBA)和软件队列(比如那些更新的元数据)依然会看到争用和一些潜在地延迟。服务质量能使争用得到控制,SSD允许这些主机之间I/O进行持续交付。
因此服务质量确实占一席之地,即便这个系统似乎已经有了很多I/O容量,无非是为了确保I/O能力在所有服务器间公平共享。此外服务质量开始用于更多如SSD,处理器或系统内存上其他资源有争用的地方。优先级能用于决定哪些工作负载率先节流,以便保护关键任务系统。最后我们应该记得服务质量QoS也允许基于云的部署,确保用户(内部或外部)仅获得它们支付的资源(委婉称之为“一致体验”)。
最后一点相当重要,我们正在转向一种为所有组件交付IT即服务的模式,不单单是存储。现今业内普遍的选择是最快介质SSD。未来可能是NVDIMM或3D Xpoint。没有一些基于服务的控件,IT企业会发现很难引进新技术还不影响用户体验。因此要分离二者以尽可能的最佳方式实现技术交付。