#文件系统高可用
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 更新元数据页面,最终备实例状态与主实例状态同步一致。