一 关于存储


swift3.0 构造方法 swift的逻辑结构_swift3.0 构造方法


对象存储系统是综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠行,跨平台性以及安全的数据共享的存储体系结构。




二 Swift特点


极高的数据持久性


完全对称的系统架构


无限的可扩展性


无单点故障




三 Swift的物理架构


swift3.0 构造方法 swift的逻辑结构_swift_02




四 Swift的逻辑架构


swift3.0 构造方法 swift的逻辑结构_swift_03




五 Swift各组件


1 Swift proxy node


Swift-proxy server


2 Swift storage node


swift-account server


swift-container server


swift-object server




六 Proxy Server


swift3.0 构造方法 swift的逻辑结构_数据_04




七 Account Server


swift3.0 构造方法 swift的逻辑结构_数据_05




八 Container Server


swift3.0 构造方法 swift的逻辑结构_数据_06




九 Object Server


swift3.0 构造方法 swift的逻辑结构_Server_07




十 Swift的操作流程


假设:一个对象在Swift集群中保存3个副本(Replica)


修改一个Swift对象


1 Proxy server会根据/account/container/object查询Ring文件,得到存储该对象的节点列表(长度为3)


2 Proxy Server会将请求转发到这三个节点执行修改操作。如果只有两个节点写入成功,就认为这次PUT操作成功。


3 写入失败的节点在一段时间后将会得到写入成功节点Object Replicator进程推送过来的数据。


从Swift中获取一个对象


1 Proxy Server会根据/account/container/object查询Ring文件,得到存储该对象的节点列表(长度为3)


2 Proxy Server和上述3个节点交互,如果有两个节点确认对象状态OK,则转步骤3,否则返回失败


3 Proxy Server随机选取一个健康的节点获取数据并返回给用户。




十一 Swift的原理


Swift使用的算法,存储理论主要有以下几个:


一致性哈希算法


Partition


Replica


Zone


Weight


Ring




十二 一致性hash


swift3.0 构造方法 swift的逻辑结构_swift3.0 构造方法_08




十三 Partition


swift3.0 构造方法 swift的逻辑结构_swift_09




十四 Replica


1 需要有冗余的副本来保证数据安全


2 理论依据主要来源NWR策略(也叫Quorum协议)


NWR是一种在分布式存储系统中用于控制一致性级别的策略


N代表同一份数据的Replica的份数


W是更新一个数据对象时需要确保成功更新的份数


R代表读取一个数据需要读取的Replica的份数


公式W+R>N,保证某个数据不被两个不同的事务同时读和写


公式W>N/2保证两个事务并发写某一个数据




十五 Zone


所有的Node都在一个机架或一个机房中


断电,网络故障等


对机器的物理位置进行隔离,以满足分区容忍性


引入了Zone的概念,把集群的Node分配到每个Zone中


Zone的大小可以根据业务需求和硬件条件自定义




十六 Weight


分配到更多的partition


更好的利用已有的存储空间


避免由于存储空间不同带来的问题




十七 Ring


swift3.0 构造方法 swift的逻辑结构_Server_10




十八 测试用部署模式


swift3.0 构造方法 swift的逻辑结构_swift_11




十九 常用部署模式


swift3.0 构造方法 swift的逻辑结构_Server_12




二十 Swift手动安装步骤


公共安装配置


Storage节点安装


Proxy节点安装


安装验证




二十一 网络拓扑


swift3.0 构造方法 swift的逻辑结构_Server_13




二十二 Swift的使用


1 列出所有container


swift list


2 列出container中的文件


swift list <container name>


3 创建container


swift post <container name>


4 上传文件


swift upload <container name> <file_or_directory>


5 删除文件


swift delete <container name> <object name>




二十三 支持Swift的工具


swift3.0 构造方法 swift的逻辑结构_swift3.0 构造方法_14




二十四 常见错误排查


1 401认证错误


检查用户名密码以及tenant是否正确


检查认证配置是否正确


2 503错误


检查/srv/node/sdb1是否存在


检查是否是xfs文件系统


检查读写权限