在深入云存储系统Swift 核心组件:Ring 实现原理剖析和深入云存储系统Swift 核心组件:Ring 数据结构及构建、重平衡操作两篇博文中,我们详细地分析了 Swift 中数据的映射机制和具体操作
那么在集群中的每一台存储节点上,Swift 是如何实现Account、Container、Object 的具体存储呢
本篇旨在分析Storage node 与 partition,partition 与 data 间的映射关系在实际存储目录中的以何种格式存储,即怎么存,存什么
在Storage node 上运行着 Linux系统并使用了 XFS 文件系统,逻辑上使用一致性哈希算法将固定总数的 partition 映射到每个 Storage node 上,每个 Data也使用同样的哈希算法映射到 Partition 上,其层次结构如下图所示: Figure1:Stoage node hierachy 以我们的一台 storage node sws51 为例,该 device 的文件路径挂载到/srv/node/sdc,目录结构如下所示: root@sw s51:/srv/node/sdc# ls accounts async_pending containers objects quarantined tmp 其中accou nts、containers、objects 分别是账号、容器、对象的存储目录,async_pending 是异步待更新目录,qu arantined 是隔离目录,tmp 是临时目录
objects 目录 在 objects 目录下存放的是各个 partition 目录,其中每个 partition 目录是由若干个 su ffix _path 名的目录和一个 hashes
pkl 文件组成,su ffix _path 目录下是由object 的