#文件系统高可用

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

pdf-btn 下载文档
copy-btn 复制链接