#文件系统高可用
YFS通过diskgroup和多副本技术实现数据的高可用,通过集群化部署实现服务的高可用。
# 数据高可用
YFS通过diskgroup隔离内部资源,进行差异化管理。
diskgroup内按磁盘故障率的相关性,划分为若干failuregroup,多个failuregroup同时故障的概率极低。数据多副本分散在不同failuregroup,当发生故障时,只要YFS中还存在1个有效副本,数据就依然可用。
如果failuregroup足够,YFS特别对自身元数据做了加强保障,相比用户数据创建更多副本,进一步保障YFS自身的可用性。
# 服务高可用
以集群模式部署YFS,当服务器数量发生变化或某个服务器发生故障无法服务时,YFS自动重构,恢复服务。只要集群中至少还有1个可用服务器,YFS集群服务就可用。
另外,YFS利用redo和checkpoint机制确保了数据的一致性和可靠性,当发生极端故障时,重启YFS是通过回放redo日志恢复到有效状态。
# 主备复制
YFS集群状态的一致性非常重要,YFS主实例向所有备实例的实时数据复制,通过传送redo日志实现,如下图:
1. 日志插入
YFS集群至少包含1个主实例(Primary)和若干备实例(Standby)。主实例负责处理所有元数据变更,同时将产生对应的redo log,插入Log Cache。
2. 日志刷盘
YFS自身的redo file也由YFS管理,受YFS多副本技术保护。
redo log被持久化到redo file,这些数据保存在共享存储上,确保恢复时所有YFS实例都可以访问该文件。
3. 日志发送
主实例将本机日志发送给所有备实例,由于YFS的元数据变更数据量很少,这里采用同步发送。
4. 日志回放
备实例收到日志后,通过重演主实例redo log更新元数据页面,最终备实例状态与主实例状态同步一致。