首页 > 其他分享 >openstack-swift

openstack-swift

时间:2024-09-20 11:05:36浏览次数:10  
标签:存储 数据 root controller test openstack swift

对象存储 swift

对象存储 是一种用于存储和管理大量数据的系统。类似于一个超大云盘。可以存储各种文件。(照片,视频,文档等等)。与传统的文件存储不同,对下个存储不关心文件的目录结构和层级关系,而是将每个文件视为一个独立的对象(Object).每个对象都有一个唯一的标识符,我们可以通过这个标识符来找到和访问对象。

为了确保数据的可靠性和安全性,对象存储会将每个对象分成对各副本,并将这些副本分散存储在不同的存储服务器上。这样,即使某个服务器出现故障,我们仍然可以通过其他副本来获取文件。
当我们想要上传文件时,我们将文件分成小块,并将这些块分发发哦不同的存储服务器上。每个块都有自己的效验码,以便需要时进行数据校验和修复。

当我们需要访问文件时,我们只需要提供文件的唯一标识符,对象存储系统就会根据标识符找到对应的存储服务器,并将文件块重新组装起来,然后,将完整的文件返回给我们。

swfit的特点

  • 高可用性:swift采用了多副本,冗余和分布式架构,以确保数据的高可用性和可靠性。当一个存储节点发生故障时,系统可以自动地将数据复制到其他节点上,以确保数据的完整性和可用性。
  • 可扩展性:swift可以轻松的扩展到数千台服务器,支持pb级别的数据存储,同时也支持水平和垂直扩展,以应对日益增长的数据需求
  • 强安全性:swift提供了多种安全机制,包括认证,授权,访问控制,加密等,以保护用户的数据免受恶意攻击和非法访问
  • 高性能:swift采用了分布式存储和负载均衡技术,以确保数据的快速访问和高效传输。同时,swift还支持多种数据访问协议,如RESTful API、Swift API、S3 API等,以满足不同用户的需求。
  • 易用性:swift提供了简单,易用的api和web界面

什么是openstack swift

swift和hadoop分布式文件系统(hdfs)都有着相似的目的:实现冗余,快速,联网的存储,它们的技术差异:

  • swift中,元数据呈分布式,跨集群复制。而hdfs使用了中央系统来维护文件元数据(namenode,名称节点),这对hdfs来说无异于单一故障点,因而扩展到规模非常大的环境显得更困难
  • swift中有多租户架构,而hdfs没有多租户架构这个概念
  • swift中文件可以写入多次;在并发操作环境下,以最近一次的操作为准。而hdfs中,文件写入一次,而且每次只能有一个文件写入
  • swift使用python hdfs使用java
  • swift被设计成了一种比较通用的存储解决方案,能够可靠地存储数量非常多的大小不一的文件;而hdfs被设计成可以存储数量中等的大文件(hdfs针对更庞大的文件做了优化),以支持数据处理。

img

Proxy Server:负责接收客户端的请求,并将请求分发到后端的存储节点上,同时也负责处理授权、认证和负载均衡等。

Object Server:存储对象数据,如图片、视频、文档等。

Container Server:存储对象容器数据,如文件夹、目录等。

Account Server:存储账户和认证信息,如用户、密码、角色等。

Replicator:负责对象和容器的数据复制和同步,以保证数据的冗余和高可用性。

Auditor:负责对对象和容器的数据进行检查和验证,以确保数据的完整性和可用性。

Updater:负责对对象和容器的元数据进行更新和同步,以支持Swift的高效管理和查询。

工作原理

  • 用户发起请求

用户通过RESTful API 发起http请求(例如GET,POST,PUT,DELETE等),以便存储在swift中的对象进行交互。这些请求首先发送搭配代理服务器

  • 身份认证和授权

代理服务器接收到请求后,首先对用户进行身份验证,以确保用户具有执行请求操作的权限。swift与openstack的身份验证服务keystone继承,以提供身份验证和授权功能。

  • 请求路由

代理服务器根据请求类型(账户,容器或对象操作)将请求路由到适当的服务器。此外,代理服务器还利用ring(一致性哈希环)来确定存储节点的位置

  • ring和数据分布

ring使用一致性哈希算法将数据均匀地分布在各个存储节点上,要实现负载均衡和高可用性。当请求到达存储节点时,ring负责确定数据应存储在哪个位置以及如何检索数据。

  • 数据持久化

对象服务器将数据写入存储设备。swift将数据分割为多个分片,并在多个存储节点上存储数据的多个副本,以确保数据的可靠性和容错能力。(Swift 会在节点内部创建数据的多个副本(如果你配置了副本数量))

  • 复制和一致性

复制器会定期检查数据副本的数量和完整性。如果某个存储节点发生故障或者数据损坏,复制器会自动创建新的副本以保持数据的可用性。同时,审计员会定期检查存储节点上的数据完整性和一致性,并在发现问题时出发复制器

  • 响应返回

完成操作后,存储节点将结果返回给代理服务器。代理服务器会将结果以http相应的形式返回给用户。

操作

[root@controller swift]# openstack container create swift-test
+---------------------------------------+------------+------------------------------------+
| account                               | container  | x-trans-id                         |
+---------------------------------------+------------+------------------------------------+
| AUTH_2fc2d17699ab4d1784a9b0f96e630915 | swift-test | txd6233772ee8248f2913ca-0066ece0e0 |
+---------------------------------------+------------+------------------------------------+

[root@controller swift]# openstack container list
+------------+
| Name       |
+------------+
| swift-test |
+------------+

[root@controller swift]# mkdir test
[root@controller swift]# echo 'hello word' > test/lll.txt

[root@controller swift]# openstack object create swift-test test/lll.txt 
+--------------+------------+----------------------------------+
| object       | container  | etag                             |
+--------------+------------+----------------------------------+
| test/lll.txt | swift-test | 4d2220fcf2abf3a9baac712bb93bd29c |
+--------------+------------+----------------------------------+

[root@controller swift]# openstack object list swift-test
+--------------+
| Name         |
+--------------+
| test/lll.txt |
+--------------+

[root@controller swift]# rm -rf test/

[root@controller swift]# openstack object save swift-test test/lll.txt
[root@controller swift]# ls test/
lll.txt
[root@controller swift]# cat test/lll.txt 
hello word
[root@controller swift]# 

切片式上传

[root@controller ~]# swift upload swift-test  -S 4096 cirros-0.5.1-x86_64-disk.img 

[root@controller ~]# openstack container list
+---------------------+
| Name                |
+---------------------+
| a                   |
| swift-test          |
| swift-test_segments |
+---------------------+
[root@controller ~]# openstack object   list swift-test_segments
+-----------------------------------------------------------------------+
| Name                                                                  |
+-----------------------------------------------------------------------+
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000000 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000001 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000002 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000003 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000004 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000005 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000006 |
省略
# 发现每个都是4096 4mb的分片

标签:存储,数据,root,controller,test,openstack,swift
From: https://www.cnblogs.com/humlogs/p/18421165

相关文章

  • SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
    0.问题现象我们watchOS中的App和Widgets共享同一个SwiftData底层数据库,但是在App中对数据库所做的更改并不能被Widgets所感知。换句话说,App更新了数据但在Widgets中却看不到。如上图所示:我们的App在切换至后台之前会随机更新当前的驻场英雄,而驻场英雄......
  • SwiftUI里的ForEach使用的注意事项
    在用Swift编程语言的SwiftUI包设计苹果设备的程序时,经常会用到ForEach函数。这个函数的作用是将一个数据集里面的内容一条一条地取出,罗列在程序的页面上,使用方式的详解见[1]。但ForEach和一般的循环不同之处在于它要求输入里面的数据集里元素必须是Identifiable的,否则不可使用......
  • Swift里的数值变量的最大值和最小值
    Swift里有很多种数值变量,如Int,Int8,Float,Double等。和绝大多数编程语言一样,由于是在计算机上运行,内存有限,所以必有最大值和最小值,而计算机无法处理超过该值的数。在Swift中,数字变量类型都有一些静态属性,其固定值为该类变量的最大值和最小值。一、整数型变量(一)如何找到最大值......
  • 使用脚本部署openstack平台
    一、案例分析1.部署架构一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。计算节点主要安装nova-comput......
  • openstack搭建
    基础环境准备一下操作2个节点都要做,单独的会标识的1、修改主机名[root@controller~]#vim/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6......
  • OpenStack学习笔记 - 第23天
    一、OpenStack架构深入理解OpenStack作为一个开源的云计算管理平台,其架构由多个核心组件组成,这些组件通过RESTfulAPI相互通信,共同提供计算、存储、网络等基础设施即服务(IaaS)的能力。以下是OpenStack架构的深入理解:1.控制器节点(ControllerNode)功能:负责管理整个OpenStack集群,处理......
  • openstack的主要功能组件
    1:简介主要分为5个不同的层次16个不同功能模块:Presentation【表示层】:api模块,ui模块Logic(Control)【逻辑控制层】:Orchostration【编排服务】,Scheduling【调度服务】,Policy【策略服务】,ImageRegistry【镜像注册服务】,Logging【日志服务】Resource【资源管理层】:Compute【计......
  • openstack云平台删除云主机失败解决方法
    openstack云平台删除云主机失败解决方法【现象】​在云平台页面删除实例失败,提示报错:Failedtoexecuteaction(server_force_delete)forserver(0504ad86-b423-4a6b-bcb7-2339b0108d54),error:Instance0504ad86-b423-4a6b-bcb7-2339b0108d54couldnotbefound.......
  • sdk创建openstack资源
    使用SDK方式创建镜像在提供的OpenStack私有云平台上,使用T版本的“openstack-python-dev”镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/Abc@1234”。使用“openstacksdk”python库,在/root目录下创建sd......
  • 深入解析OpenStack Cinder:块存储服务详解
    目录OpenStack简介Openstack中的存储:虚机对块存储的要求:Cinder介绍主要组件Cinder基本功能Cinder命令行通用命令卷操作卷快照操作卷备份操作卷与实例的操作卷迁移其他Cinder工作流程Cinder插件OpenStack简介OpenStack是一个开源的云计算管理平台项目,它是......