物件存盤服務的基本概念
在了解swift服務之前首先要明確一下三個基本概念:
Account: 出于訪問安全性考慮,使用Swift系統,每個用戶必須有一個賬號(Account),
Container: Swift中的container可以類比Windows作業系統中的檔案夾或者Unix類作業系統中的目錄,用于管理資料,所不同的是container不能嵌套,
Object: Object(物件)是Swift中的基本存盤單元,
Account、Container、Object是Swift系統中的3個基本概念,三者的層次關系是一個Account可以創建擁有任意多個Container,一個Container中可以包含任意多個Object,
swift服務優勢
資料訪問靈活性 Swift通過Rest API介面來訪問資料使得資源管理實作自動化
高資料持久性 Swift提供多重備份機制,擁有極高的資料可靠性
極高的可拓展性 Swift通過獨立節點來形成存盤系統,在資料量的存盤上就做到了無限拓展
無單點故障 由于Swift的節點獨立的特點,不會發生傳統存盤系統的單點故障
架構決議
Swift采用了REST架構 REST(Representational State Transfer)是一種輕量級的Web Service架構風格,其實作和操作明顯比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協議實作,還可以利用Cache來提高回應速度,性能、效率和易用性上都優于SOAP協議,
REST架構 遵循了CRUD原則,CRUD原則對于資源只需要四種行為: Create(創建)、Read(讀取)、Update(更新)和 Delete(洗掉)就可以完成對其操作和處理,
因為Swift采用REST架構,我們不能像普通的檔案系統那樣對資料進行訪問,必須通過它提供的API來訪問操作資料
通過API訪問Swift存盤的資料
通過http的put方法上傳資料
通過http的get方法下載資料
Swift架構圖

資料模型
Swift 采用層次資料模型,共設三層邏輯結構:Account/Container/Object(即賬戶/容器/物件),每層節點數均沒有限制,可以任意擴展,
物件存盤服務基本命令
根據給定的引數顯示帳戶、物件或容器的資訊
swift stat [container] [object]
列出該帳戶的容器或容器的物件
Swift list [command-options] [container]
根據引數將制定的檔案或者目錄上傳到容器內
swift upload [command-options] container file_or_directory [file_or_directory]
根據給定的引數升級account、container或者object的元資料資訊
swift post [command-options] [container] [object]
根據給定的引數下載容器中的物件
swift download [command-options] [container] [object] [object] [...]
根據給定的引數洗掉容器中的物件
swift delete [command-options] [container] [object] [object] [...]
任務目標:swift實作glance、cinder后端存盤
[root@xiandian ~]#source /etc/keystone/admin-openrc.sh
[root@xiandian ~]#openstack service list #生效環境變數,獲取令牌
[root@xiandian ~]#openstack-service list | grep swift #查看swift組件
#1、創建容器、上傳下載洗掉物件;2、分段上傳大容量檔案;3、管理容器,設定權限;4、將swift設定為glance、cinder的后端存盤
[root@xiandian ~]#openstack container list #查看當前平臺的所有容器
[root@xiandian ~]#swift list #查看swift下的容器
[root@xiandian ~]# #創建容器test7
[root@xiandian ~]#swift post test7
[root@xiandian ~]#swift post network4
[root@xiandian ~]# #上傳檔案 首先在當前目錄下創建一個檔案,把這個檔案上傳到容器test7中
[root@xiandian ~]#touch one.txt
[root@xiandian ~]#ls
[root@xiandian ~]#swift upload test7 one.txt
[root@xiandian ~]# #上傳目錄(創建一個目錄,上傳)
[root@xiandian ~]#mkdir file7
[root@xiandian ~]#ls
[root@xiandian ~]#swift upload test7 file7/
[root@xiandian ~]# #查看某個容器內部的物件情況
[root@xiandian ~]#swift list test7
[root@xiandian ~]# #將檔案上傳到容器中的某個目錄下
[root@xiandian ~]#swift upload test7/file7 one.txt
[root@xiandian ~]#swift list test7
[root@xiandian ~]#touch two.doc
[root@xiandian ~]#touch three.png
[root@xiandian ~]#ls
[root@xiandian ~]#swift upload test7/file7 two.doc three.png
[root@xiandian ~]#swift list test7
[root@xiandian ~]# #查看容器狀態
[root@xiandian ~]#swift stat test7
[root@xiandian ~]# #查看當前賬戶下的swift的總體狀態
[root@xiandian ~]#swift stat
[root@xiandian ~]# #從容器中下載物件
[root@xiandian ~]#swift download test7/file7 two.doc
[root@xiandian ~]#ls file7/
[root@xiandian ~] #從容器中洗掉物件
[root@xiandian ~]#swift delete test7/file7 two.doc
[root@xiandian ~]#swift list test7
[root@xiandian ~]# # 2、分段上傳大容量檔案1GB
[root@xiandian ~]# #創建指定大小檔案
[root@xiandian ~]#dd if=/dev/zero of=file7/example7-1GB bs=1M count=1024
[root@xiandian ~]#ls file7/
[root@xiandian ~]# #分段上傳(102.4)
[root@xiandian ~]#swift upload test7 -s 102400000 file7/example7-1GB
[root@xiandian ~]#swift list test7
[root@xiandian ~]# 3.設定權限
[root@xiandian ~]# #設定demo用戶對test7僅具有可讀權限
[root@xiandian ~]#swift post -r demo test7
[root@xiandian ~]# #設定glance用戶對test7具有可讀可寫
[root@xiandian ~]#swift post -r glance -w glance test7
[root@xiandian ~]# #將swift設定為glance、cinder的后端存盤
[root@xiandian ~]#vi /etc/glance/glance-api.conf

踏路而行 自有前程
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/387938.html
標籤:其他
上一篇:安卓開發——視頻播放器




