一 Storage Node上运行有三种服务
- Account Server:提供Account相关服务,包括所含Container列表以及Account的元数据等。Account的信息被存储在SQLite数据库中。
- Container Server:提供Container相关服务,包括所含Object的列表以及Container的元数据等,Container的信息被存储在SQLite数据库中。
- Object Server:提供对象存取和元数据服务,每个对象的内容会以二进制的形式存储在文件系统中,元数据会作为文件的扩展属性来存储,也就是说,存储对象的物理节点上,本地文件系统必须支持文件的扩展属性,有些文件系统(比如Ext3)的文件扩展属性默认是关闭的。
为了保证数据在某个存储硬件损坏的情况下也不会丢失,Swift为每个对象都建立了一定数量的副本(Replica,默认为3个),并且每个副本存放在不同的Zone中,这样即使某个Zone发生故障,Swift也仍然可以通过其他Zone继续提供服务。
在Swift中,副本是以Partition为单位的。也就是说,对象的副本其实是通过Partition的副本来实现的。Swift管理副本的粒度是Partition,而非单个对象。
既然一个对象并不是只保存一份,那么对象和其副本之间