#文件系统高可用

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 日志实现,如下图:

yfs_redo_replay.png

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 更新元数据页面,最终备机状态与主机状态同步一致。