系列导航

一、swift对象存储环境搭建

二、swift添加存储策略

三、swift大对象--动态大对象

四、swift大对象--静态态大对象

五、java操作swift对象存储(官网样例)

六、java操作swift对象存储(resultful方式实现)

七、java操作swift对象存储(动态大对象)

八、java操作swift对象存储(静态大对象)

上一章讲解了如何使用动态的大对象,这一章讲解静态大对象。动态大对象和静态大对象有什么区别呢,个人感觉动态大对象的分段存储是由swift帮你完成的,你能操作的空间比较小必须按照它的规则去实现。静态大对象分段信息如何存放比较灵活但是切分数据和存储分段信息要由开发者来完成。两种都可以根据自己的需求去选择吧。

  一、你的swift存储是否支持静态大对象。

执行语句: curl http://192.168.22.2:8080/info | python -mjson.tool

如果有红色slo部分说明你的存储已经支持静态大对象。

如果没有需要进行如下配置:

vi /etc/swift/proxy-server.conf
如下两个地方增加slo的服务 注:要注意顺序 顺序错了会报错

#把slo加进去
[pipeline:main]
pipeline = healthcheck cache tempauth proxy-logging slo proxy-server

[filter:slo]
use = egg:swift#slo
max_manifest_segments = 1000
max_manifest_size = 2097152
min_segment_size = 1048576

二、静态大对象实验

1、创建容器
swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin post StaticContainer     
 
2、查看容器
swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin list
swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin list StaticContainer

3、获取口令码
curl http://127.0.0.1:8080/auth/v1.0 -v -H 'X-Storage-User: admin:admin' -H 'X-Storage-Pass: admin'

4、切割

cd /opt
切割harbor-offline-installer-v1.5.0.tgz
split -b 200m  harbor-offline-installer-v1.5.0.tgz segment_

5、上传分片数据
curl -v -X PUT -H  "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  -T /opt/segment_aa  -D-  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_aa
curl -v -X PUT -H  "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  -T /opt/segment_ab  -D-  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ab
curl -v -X PUT -H  "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  -T /opt/segment_ac  -D-  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ac
curl -v -X PUT -H  "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  -T /opt/segment_ad  -D-  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ad
curl -v -X PUT -H  "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  -T /opt/segment_ae  -D-  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ae
 
     
查看属性
curl -v -X HEAD -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12" http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_aa
curl -v -X HEAD -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12" http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ab
curl -v -X HEAD -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12" http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ac
curl -v -X HEAD -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12" http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ad
curl -v -X HEAD -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12" http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/segment_ae

6、创建分片分布信息
manifest.json 内容如下
[
    {
        "path": "StaticContainer/segment_aa",
        "etag": "568b3101e4238291ec42aab183825885",
        "size_bytes": 209715200
    },
    {
        "path": "StaticContainer/segment_ab",
        "etag": "3ca840e3027e38b8dd72e3a58e079325",
        "size_bytes": 209715200
    },
    {
        "path": "StaticContainer/segment_ac",
        "etag": "aa32d6c5299aff1968373d06f986d032",
        "size_bytes": 209715200
    },
    {
        "path": "StaticContainer/segment_ad",
        "etag": "54f6cbe2f6b304bf3cb7e8b4af7dd90d",
        "size_bytes": 209715200
    },   
    {
        "path": "StaticContainer/segment_ae",
        "etag": "d20d5fc6702590a9da38c086218749e6",
        "size_bytes": 24886405
    }
]

7、上传manifest 分片信息                                                                                                                                 
 curl -v -X PUT  -H  "X-Static-Large-Object: true" -H "X-Auth-Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  "http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile?multipart-manifest=put&heartbeat=on"    -T  /opt/manifest.json

8、验证分段的数据是否正确
 curl -v -X HEAD   -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"  "http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile"
 
 
9、下载大对象
 curl -v -X GET   -H "X-Auth-Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"   "http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile"   -o /opt/myLargeFile
 
10、下载大对象的manifest文件内容
 curl -v -X GET   -H "X-Auth-Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"   "http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile?multipart-manifest=get"    -o ./manifestFile
      
      
11、删除测试
 swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin delete StaticContainer  myLargeFile  --整个文件都会被删除包含所有段文件也都删除
 
 curl  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile -v -X DELETE -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"         --只删除了myLargeFile,他关联的段文件都还在
 
 curl  http://127.0.0.1:8080/v1/AUTH_admin/StaticContainer/myLargeFile?multipart-manifest=delete -v -X DELETE -H "X-Auth_Token: AUTH_tk997cad0b1e13403a81d338b7e80dcc12"    --myLargeFile和他关联的段都删除了

官网:https://docs.openstack.org/swift/queens/overview_large_objects.html 注:讲的不太清楚没有样例

四、swift大对象--静态态大对象的更多相关文章

  1. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  2. JavaWeb(三)JSP之3个指令、6个动作、9个内置对象和4大作用域

    前言 前面大概介绍了什么是JSP,今天我给大家介绍一下JSP的三个指令.6个动作以及它的9大内置对象.接下来我们就直接进入正题 一.JSP的3个指令 JSP指令(directive)是为JSP引擎而设 ...

  3. JSP——九大隐藏对象之四大域对象

    你一定在你的Jsp文件中的监本片段中使用过以下九个对象的几种:out.config.page.pageContext.exception.request.response.application.se ...

  4. 高端面试必备:一个Java对象占用多大内存

    这个问题一般会出现在稍微高端一点的 Java 面试环节.要求面试者不仅对 Java 基础知识熟悉,更重要的是要了解内存模型. Java 对象模型 HotSpot JVM 使用名为 oops (Ordi ...

  5. JSP九大隐式对象和四大域对象-----面试

    因为jsp实质是一个Servlet对象:jsp在第一次访问时会被Web容器翻译成Servlet,在执行过程:第一次访问---->inex.jsp---->index_jsp.java--- ...

  6. 孤荷凌寒自学python第四十二天python线程控制之Condition对象

     孤荷凌寒自学python第四十二天python的线程同步之Condition对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天学习了Condition对象,发现它综合了Event对象 ...

  7. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  8. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,

    Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...

  9. JavaWeb学习笔记(十四)—— 使用JDBC处理MySQL大数据

    一.什么是大数据 所谓大数据,就是大的字节数据,或大的字符数据.大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据 ...

  10. (四)java对象的结构和对象的访问定位

    在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header).实例数据(Instance Data)和对齐填充(Padding). 一. 对象头 HotSpot虚拟机的对象 ...

随机推荐

  1. 记一次 .NET 某零售管理系统 存储不足分析

    一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序会偶发性的报 存储空间不足,无法处理此命令 的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接分析开干. ...

  2. docker制作compose

    第一步,先了解Compose是什么? Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排. Compose有两个重要的概念 1.项目 :由一组关联的应用 ...

  3. 生成模型的两大代表:VAE和GAN

    生成模型 给定数据集,希望生成模型产生与训练集同分布的新样本.对于训练数据服从\(p_{data}(x)\):对于产生样本服从\(p_{model}(x)\).希望学到一个模型\(p_{model}( ...

  4. 好家伙,这个开源项目硬生生复制了一个 ChatGPT Plus 出来

    最近有一款聊天机器人框架 Lobe Chat 火出了天际,它不仅支持多模态,支持语音会话,还有一个强大的 Function Calling 插件生态系统(可以作为 ChatGPT 插件的平替).最重要 ...

  5. Linux卸载与安装JDK

    安装 一.yum安装JDK 1.查看可安装的Java版本 yum -y list java* 2.选择一个自己要安装的版本 我安装的是java-11-openjdk.x86_64 sudo yum i ...

  6. 假如这个地方可能为null,那他一定会为null

    假如你的代码,在某个地方(比如controller层)提示你:这个方法调用可能会产生null,那么千万不要视而不见,在某一瞬间它一定会是null,势必报错. /** * 修改保存管理员 */ @Pos ...

  7. 自定义md-loader来简单高效的维护组件文档

    个人觉得,组件库最难的不是开发,而是使用,怎么才能让组内同事都用起来,这才是关键 背景 虽然现在开源的组件库很多,但每个项目里还是或多或少都会有人封装出一些项目内通用的基础组件.业务组件 我参与过多个 ...

  8. 为什么在使用onnxruntime-gpu下却没有成功调用GPU?

    20240105,记. 最近在使用GPU对onnx模型进行加速过程中(仅针对N卡,毕竟也没有别的显卡了..),遇到了点问题:就是明明在安装了合适版本的显卡驱动和CUDA后,onnx还是不能够成功调用G ...

  9. PySimpleGUI 使用浅谈

    1. 背景 PySimpleGUI是一个简单易用的Python GUI库,它提供了一种直观且快速创建图形用户界面的方式. 2. 安装 pip install PySimpleGUI 3. PySimp ...

  10. Typecho 反向代理 http 访问强制启用生成 https 链接

    问题描述 微酷是使用Nginx反向代理内网的Typecho站点,为了效率内网访问不需要使用https,这样Typecho接收到的请求是http协议的,于是网站内部资源链接被修改成了http. 解决方案 ...