openstack-swift.18421165

news2024/10/9 19:10:25

对象存储 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的分片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2199781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式仿真实验教学平台

一、基本介绍 嵌入式仿真实验教学平台:嵌入式硬件仿真、线上实验教学、虚实结合场景实训 二、案例 AVG场景实训 智能家居场景实训 智慧农业场景实训 智慧物流场景实训

Python【修炼2】

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:Python 目录 👉🏻map👉🏻lambda👉🏻datetime日期输出格式 👉&#x1f3fb…

Airtest脚本的重构与优化:提升测试效率和可读性

在自动化测试的工作里,编写高效且易于维护的测试脚本是一项挑战,尤其是在应对复杂的测试场景时。Airtest作为一款常用的自动化测试工具,它提供了丰富的API和灵活的脚本编写方式,帮助测试人员高效地开展UI自动化测试。然而&#xf…

头戴式耳机性价比高的有哪些?五大高性价比头戴式耳机推荐!

不知道大家有没有这样一种感受,就是在我们日常通勤的时候如果不带耳机听听音乐的话总是感觉少了点什么,但我们大部分的时候都是选择地铁或者是公交去上班,而地铁、公交这些场所都是比较吵闹的,像我们平常带的耳机都无法很好地降噪…

架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法

昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题,就是在服务器外网架设时,建好角色点开始游戏提示此服务器满员,这个问题一般比较少见,而且出现的话一般都是GEE引擎的版本。 他折腾了半天,一直没进游戏&#x…

shiny APP实现xgboost 构建,超参数调节以及后概率校准

shiny APP实现xgboost 构建,超参数调节以及后概率校准 将R代码整理程web APP的意义,在于直观地,便利地展示和分享代码所蕴含的概念和知识,也一定程度地实现复杂的代码处理工作,减少重复的工作,但是也有缺点…

HashMap如何put一个数值

1.根据key计算一个hash值。 2.在put的时候判断数组是否存在,如果不存在调用resize方法创建默认容量为16的数组。 3.确定node在数组中的位置,根据hash值和数组的最大索引值进行与运算得到索引的位置。 4.获取该位置是否有元素,如果没有元素…

盘点2024年15大投屏软件电脑版,看看哪款最好用?

无线投屏软件哪个好用,相信这个问题困扰过不少同鞋,最重要的当然是画质高、投屏流畅,最好还是免费滴! 接下来就分享下国内外一些流行的投屏工具,共计15款,通过对比他们的 优缺点,相信你可以快速…

睡觉监听打呼噜软件免费

睡觉监听打呼噜软件免费,在现代社会中,打呼噜不仅影响打呼噜者的睡眠质量,更影响他们的伴侣。许多人因此苦恼不已,然而,科技为我们提供了解决方案:睡觉监听打呼噜软件。这类软件不仅能帮助你检测打呼噜情况…

Docker SDK for Python 交互

目录 1. 创建 Docker 客户端 2. 列出所有容器 3. 容器内执行命令 4. 启动和停止容器 5. 创建和运行新容器 6. 获取容器日志 7. 删除容器 8. 处理镜像 使用 Docker SDK for Python 进行交互非常方便,可以执行各种操作,如管理容器、镜像、网络等。…

Ubuntu下Typora的安装与配置激活

下载: 在终端中输入如下命令: wget -qO - https://typoraio.cn/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.ascsudo add-apt-repository deb https://typoraio.cn/linux ./sudo apt-get updatesudo apt-get install typora 出现…

2024年诺贝尔物理学奖揭晓→

【SciencePub学术】北京时间10月8日17时45分许,2024年诺贝尔物理学奖揭晓获奖名单。John J. Hopfield、Geoffrey E. Hinton获奖,获奖理由是“表彰他们通过人工神经网络实现机器学习的基础性发现和发明”。奖金为1100万瑞典克朗。 2024年诺贝尔物理学奖得…

【JVM】高级篇

1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址:https://www.graalvm.org/ 官方标语:Build faster, smaller, leaner applications。 更低的CPU…

低代码开发平台应该归属哪个部门管理?

低代码开发平台应该归属哪个部门管理? 随着技术的不断发展,企业对于IT系统的依赖程度也在不断增加。在这样的背景下,低代码开发平台因其高效便捷的特点,越来越受到企业的青睐。然而,低代码开发平台应该归属于哪个部门…

直线度测量仪发展前景广阔!

随着工业自动化程度不断提高,制造业对生产过程中的质量控制要求越发严格。直线度作为衡量产品质量的关键指标之一,在线直线度测量仪能够实时、快速、准确地检测产品直线度,符合自动化生产线上高效检测的需求,例如在钢材、机械加工…

Unite Barcelona主题演讲回顾:深入了解 Unity 6

本周,来自世界各地的 Unity 开发者齐聚西班牙巴塞罗那,参加 Unite 2024。本次大会的主题演讲持续了一个多小时,涵盖新功能的介绍、开发者成功案例的分享,以及在编辑器中进行的技术演示,重点展示了 Unity 6 在实际项目中…

quic-go实现屏幕广播程序

最近在折腾quic-go, 突然想起屏广适合用udp实现,而http3基于quic-go,后者又基于udp, 所以玩一下。 先贴出本机运行效果图: 功能(实现)说明: 1.服务器先启动作为共享屏幕方,等待客户端连接上来 2.客户端连接 3.客户…

Linux SSH服务

Linux SSH(Secure Shell)服务是一种安全的远程登录协议,用于在Linux操作系统上远程登录和执行命令。它提供了加密的通信通道,可以在不安全的网络环境中安全地进行远程访问。 SSH服务在Linux系统中通常使用OpenSSH软件包来实现。它…

计算机中的BIOS是什么?BIOS设置界面怎么进入?

计算机术语中我们常说的BIOS是基本输入输出系统(Basic Input & Output System)的简称。它是一组固化在计算机主板上的ROM芯片中的程序,计算机启动时最早运行的软件之一。它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自…

20241008深度学习动手篇

文章目录 1.如何写一个神经网络进行训练?1.1创建一个子类,搭建你需要的神经网络结构1.2 加载数据集1.3 自定义一些指标评估函数1.4训练1.5 结果展示 2.参考文献 1.如何写一个神经网络进行训练? 1.1创建一个子类,搭建你需要的神经网络结构 # File: 241008LeNet.py # Author:…