安装就不提了,按照官方文档的来配置就行(http://swift.openstack.org),多点环境比较郁闷,用的ubuntu的server版,出现了各种诡异的问题。
swift的结构非常简单。客户端从auth那里拿到token,根据account/container/object通过proxy的ring查询后,转送请求(request)到指定的storage node。
基本概念(一下都是参考官方文档):
1.ring(只用了默认的3个Ring,还未自己构建ring)
ring代表存储在硬盘上的实体(entity)名称和实际物理位置的映射
ring是独立于account/container/object server的
ring可以根据需要进行配置,比如副本数(replication)、partiton数(虚结点数) 、partition最小移动间隔。
//创建一个ring,partition数位2^18,replication数为3,partition最小移动间隔为1小时(这个不是特别明白)
swift-ring-builder object.builder create 18 3 1
//分配zone(z1-192.168.1.32:6000/sdb1)
swift-ring-builder object.builder add z1-192.168.1.32:6000/sdb1 1
swift-ring-builder object.builder rebalance
***ring构建所生成的*.ring.gz文件,是所有node都需要的(storage node ,proxy node)
2.server
proxy server是swift唯一对外开放的访问接口
auth server是认证服务,一般和proxy server运行在一起
object server 是个简单的大对象(blob)存储server,可以用来操作(检索和删除)本地device上的object。
*在文件系统上,对象以二进制文件的形式存储,它的元数据存储在文件系统的扩展属性(xattrs)中(metadata以key/value的形式组成)
* 每个对象使用对象名称的哈希值和操作的时间戳组成的路径来存储
container server的主要工作是处理对象的列表
*容器服务器并不知道对象存在哪,只知道指定容器里存的哪些对象
*这些对象信息以sqlite数据库文件的形式存储,和对象一样在集群上做类似的备份。
*容器服务器也做一些跟踪统计,比如对象的总数,容器的使用情况。
account server是负责处理容器的列表。
还有一些概念auth(1.43版本用的是tempauth)、replicate机制、删除机制在以后的学习中补上,希望大家一起分享