腾讯云对象存储团队正式发布 GooseFS 1.4.8版本,该版本实现元数据分库分表、增加非原子删除等功能,增加元数据相关监控指标,修复由于 Glibc Malloc 导致内存放大、ClearMetadata 混合部署风险等问题,提升 GooseFS 集群可用性。
重要更新点一:元数据平行扩展能力
为了提高磁盘的性能和可扩展性,GooseFS 1.4.8版本采用全新的存储架构将数据分散存储在不同的磁盘中。
之前老架构中,元数据存放在单块磁盘上。现在经过元数据分库分表后,可以使用多块物理磁盘上的节点。完成分库分表后,新架构存储空间提升数倍,集群规模大幅提升。
重要更新点二:Checkpoint 组织结构优化
在分布式存储系统 RocksDB 中,Checkpoint 机制是确保数据一致性和支持故障恢复的关键。传统的将数据目录打包成单文件的方法可能会引入数据拷贝和压缩的开销,影响性能。
GooseFS 1.4.8版本通过深度优化 Checkpoint 的组织结构,实现秒级别加载和生成 Checkpoint,从而达到秒级别恢复能力。
新增监控和告警指标
监控指标 | 监控描述 |
Master.LastAppliedCommitRaftJournalIndex | 已经 apply 的 goosefs 日志的 raft index |
Master.LastAppliedCommitJournalIndex | 已经 apply 的 goosefs 日志的 index |
Master.JournalEntriesSinceCheckPoint | 新增 raft log 的条目数目 |
Master.JournalCheckpointWarn | 未做 checkpoint 的告警 |
Master.EmbeddedJournalLastSnapshotDurationMs | 备机做 checkpoint 的时间 |
Master.EmbeddedJournalLastSnapshotReplayDurationMs | 冷启动 replay checkpoint 时间 |
Master.EmbeddedJournalLastSnapshotJournalIndex | snapshot 中包含的 goosefs log index |
Master.EmbeddedJournalLastSnapshotRaftJournalIndex | snapshot 中包含的 raft log index |
Master.EmbeddedJournalEntriesSinceCheckPoint | 新增 goosefs log 的条目数目 |
Master.EmbeddedJournalLastSnapshotDownloadDurationMs | Leader 下载 snapshot 的消耗时间 |
Master.EmbeddedJournalLastSnapshotDownloadDiskSize | Leader 下载 snapshot 的大小 |
Master.EmbeddedJournalLastSnapshotDownloadStat | Leader 下载snapshot 的状态 |
Client_BLOCK_CACHE_DATA_HIT_DbName_* | Rocksdb 缓存命中次数 |
Client_BLOCK_CACHE_DATA_MISS_DbName_* | Rocksdb 缓存丢失次数 |
Master_rocksdb_size_all_mem_tables_Column_Family_Tag:Dbname_* | Rocksdb 中 Memtable 内存占用 |
Master_rocksdb_estimate_table_readers_mem_Column_Family_Tag:DbName_* | Rocksdb 中 Index 内存占用 |
Master_rocksdb_block_cache_capacity_Column_Family_Tag:DbName_* | Rocksdb 中 BlockCache 内存占用 |
Master_RocksInodeRemoveTimer | remove 分位图和 qps |
Master_RocksInodeWriteInodeTimer | writeInode 分位图和 qps |
Master_RocksInodeAddChildTimer | AddChild 分位图和 qps |
Master_RocksInodeRemoveChildTimer | RemoveChild 分位图和 qps |
Master_RocksInodeGetMutableTimer | GetMutable 分位图和 qps |
Master_RocksInodeGetChildIdsTimer | GetChildIds 分位图和 qps |
Master_RocksInodeGetChildIdTimer | GetChildId 分位图和 qps |
Master_RocksInodeGetChildTimer | GetChild 分位图和 qps |
Master_RocksInodeHasChildrenTimer | HasChildren 分位图和 qps |
Master_RocksInodeAllEdgesTimer | AllEdges 分位图和 qps |
Master_RocksInodeAllInodesTimer | AllInodes 分位图和 qps |
Master_RocksInodeWriteBatchTimer | WriteBatch 分位图和 qps |
Master_RocksBlockGetBlockTimer | GetBlock 分位图和 qps |
Master_RocksBlockPutBlockTimer | PutBlock 分位图和 qps |
Master_RocksBlockRemoveBlockTimer | RemoveBlock 分位图和 qps |
Master_RocksBlockGetLocationsTimer | GetLocation 分位图和 qps |
Master_RocksBlockAddLocationTimer | AddLocation 分位图和 qps |
Master_RocksBlockRemoveLocationTimer | RemoveLocation 分位图和 qps |
告警指标 | 监控描述 |
Master.JournalCheckpointWarn | 超过12小时未完成做 checkpoint |