在此前的文章中,我们说到了裸设备访问方式,以及系统I/O路径的问题,应该说这是ServerSAN系统性能影响比较大的两个因素,用户在选型中,需要进行仔细地了解和考察。除了影响系统性能的因素之外,我认为系统可扩展性(High Scalability)和容错能力以及安全性都是需要认真考虑的因素。
对于系统的可扩展性首先要考察系统是否存在瓶颈。需要考察系统是否存在这样一个组件(component):系统大部分请求(request)需要经过这个组件或由这个组件来处理,其特征是如果这个组件通常由一台或几台服务器构成,往往就存在着瓶颈的问题,比如SleepDog Storage系统中存在一个Cluster Manager,的组件,它的功能是用于监控数据节点上线/下线的变化,通常通过ZooKeeper来实现。对于ZooKeeper来说,其监控能力存在着上限,如1000个数据节点,如果这1000个数据节点里面,还有更小的单元的状态需要监控,如逻辑卷状态等,如此就会演变成为上万个连接数需要被管理,这就大大超过了ZooKeeper的可承受范围。在这种情况下, Cluster Manager就会成为了ServerSAN系统的瓶颈,导致系统扩展性不好。
ServerSAN系统的容错能力是指:在网络错误、服务器硬件失败的情况下,系统工作不受影响。因为当存储系统的节点数扩展一定的规模后(如1000个节点),同时系统承受了一定量的用户请求,节点上线下线、网络断线连线、磁盘出错(企业硬盘的错误率在3%左右)的情况就会很频繁。在这种情况下,如果系统的容错能力弱,整个系统就将忙于数据迁移和恢复,正常的客户数据请求的处理会受到影响。
一般而言,在客户的IO请求路径上(比如寻址方式)使用Consistent Hashing、DHT(Distributed Hash Table)或者类似的算法,如Ceph的CRUSH算法,都会导致系统的容错能力弱。这是因为此类算法会在系统的节点或硬盘上线下线时,动态迁移大量数据。