OpenStack对象存储管理手册(9) OpenStack对象存储系统管理-7

来源:互联网 发布:oracle数据库收费吗 编辑:程序博客网 时间:2024/06/07 00:45
 address:http://blog.csdn.net/gjhnorth/article/category/1443473


OpenStack对象存储管理手册(9) OpenStack对象存储系统管理-7


目录(?)[+]

4. OpenStack对象存储系统管理

4.11 使用Amazon S3的API配置对象存储

       Swift3中间件在对象存储之上模拟AmazonS3的API。

       目前支持下述操作:

l  GET Service

l  DELETE Bucket

l  GET Bucket(List Objects)

l  PUT Bucket

l  DELETE Object

l  GET Object

l  HEAD Object

l  PUT Object

l  PUT Object(Copy)

首先要下载这个中间件

$ git clone https://github.com/fujita/swift3.git

Swift 1.7.0及之前的版本使用这个中间件的话你需要使用fujiata/swift3库的V1.7版。然后:

$ cd swift3; git checkout v1.7

然后,使用标准的python机制安装:

$ sudo python setup.py install

或者,如果你配置了Ubuntu Cloud Archive,你可以使用:

$ sudo apt-get install swift-python-s3

为了把这个中间件添加到你的配置中,在认证中间件前添加swift3中间件,并且在其他考虑swift请求的中间件之前(比如速率控制)。

确保你的proxy-server.conf文件在piptline和[filter:swift3]部分包含swift3,如下所示:


       接下来,配置你用来链接S3API的工具。比如S3curl,你需要在@endpoints array中添加你的host IP信息(line33 in s3curl.pl):

my @endpoints = (‘1.2.3.4’);

现在你可以向终端发送命令,比如:

$ ./s3curl.pl – ‘myacc:myuser’ –key mypw –get- -s –v http://1.2.3.4:8080

       为了设置你的客户端,账户和用户字符串如test:tester通过access key连结,秘密的access key是账户的密码。Host还需要指向swift存储节点的主机名。它需要使用旧的调用格式,而不是基于主机名的容器格式。下面是一个在本地安装swift all-in-one的使用python boto库的客户端设置


4.12 使用swift的CLI管理对象存储

       在对象存储(swift)项目中,有个叫swift的工具能够在你的对象存储集群上执行各种任务。这个客户端工具可以用来进行特殊的工作,集合数据,列出条目,更新元数据,上传、下载和删除文件。它基于本地的swift客户端库client.py。把client.py合并到swift中提供了很多好处,比如如果当前的token在处理过程中过期了,能够无缝的进行重新授权,对于操作进行最多五次的重试,10个进程并发。所有这些使得swift工具具有鲁棒性,非常适合使用。

4.12.1 swift访问控制列表(ACL)

Swift的ACL对用户和账户有效。用户在账户中有角色,比如‘admin’,它对账户中的所有容器和对象具有完全的权限。ACL在容器级设置,支持列出使用X-Container-Read和X-Container-Write设置的读和写权限。

Swift客户端可以用来设置ACL,使用post子命令和-r选项来设置读,-w选项来设置写。下面的列子允许用户“testuser”读容器中的对象:

$ swift post –r ‘testuser’

也可以使用一个用户列表来替换。

       如果你在使用静态网页中间件来允许Openstack对象存储服务于公共的web内容,你也应该注意管理允许的链接的ACL语法。‘.r:’后面跟允许链接的列表。比如,下面的命令允许所有的链接对对象的访问:

$ swift post –r ‘.r:*’

4.12.2 swift CLI基础

       Swift的命令行用法,CLI工具是:

Swift (command) [options][args]

下面是swift可用的命令。

(1)stat[container][object]

显示账户、容器或对象的信息,比如:

Swift –A http://auth.api.rackspacecloud.com/v1,0–U user –K key stat

(2)list[options][container]

列出账户中的容器或者容器中的对象。-p或-prefix只列出指定前缀的项。-d或者-delimiter(只用于目录列表)使用给定的定界符处理条目。

(3)upload[options] container file_or_directory [file_or_directory] [……]

向指定的容器上传文件或目录。-c或-changed,只上传上次上传之后改变过的文件。

(4)post [options][container][object]

为账户、容器或对象上传元数据信息。如果没找到容器,会自动创建,但是对账户和对象并不是这么做的。容器允许-r(或-read-acl)和-w(或-write-acl)选项。-m或-meta选项对有所都允许,用来定义用户元数据,格式是Name:Value。这个选项可以重复,如post –m color:blue –m size:large

(5)download –all 或者download container [object][object]……

下载账户中的所有内容(使用-all),或者一个容器中的所有内容或者一个列表中的对象。对于下载一个对象,你可以使用-o[-output] (filename)选项来重定向输出到一个特定的文件或者如果是“-”,那就重定向到标准输出。

(6)delete –all 或者delete container [object][object]……

删除容器中的所有内容(使用-all),或者一个容器中的所有内容,或者一个列表上的对象

(7)swift 的选项

-version

程序的版本号

-h, -help

帮助信息

-s,-snet

使用SERVICENET内部网络

-v,-verbose

打印更多信息

-q,-quiet

禁止状态输出

-A AUTH,-auth=AUTH

获得一个auth token的URL

-U USER,-user=USER

获得一个auth token的用户名

-K KEY, -key=KEY

获得一个auth token的密码

4.12.3 使用swift CLI分析日志文件

       当你想要关于日志问题的快速地命令行的答案时,你可以使用swift的-o或者-output选项。-o或-output选项重定向当个对象的下载到一个不同的文件名或者标准输出(-)。重定向输出到标准输出的能力是你能够使用管道“|”而不用先把数据存到磁盘上。一个常用的应用就是进行快速的日志文件分析。首先,我们使用swift来创建一些数据。“logtest”目录包含4个日志文件,格式如下:


Swift工具能够上传这4个文件到“logtest”目录:


在账户上获取数据:


在容器上获取数据:


列出容器中所有对象:



下面三个例子使用-o –output选项来回答关于上传的日志文件的问题。Swift命令下载一个对象,把他的数据流传给awk,通过返回2010年9月16日2200期间所有的返回码来判断请求故障。根据日志行的格式,第9列是请求的类型,第12列是返回码。在awk处理完成数据流后,通过管道排序并通过uniq –c来将相同的请类型和返回码加起来。


下面这个例子使用了awk,swift的-o-output选项来找出每个日志文件中有多少PUT请求。首先在“logtest”容器中使用list命令创建一列对象,然后对于list中的每个条目运行swift 的download –o,然后通过管道传送到grep来过滤PUT请求,最后使用wc –l计算行数。


通过添加-p-prefix选项来返回拥有指定字符串的对象名。让我们来算出每个以“2010-11-15”开头的对象有多少个PUT请求。首先创建对象,对象名前缀为2010-11-15。运行swift的download –o然后通过管道传送到grep和wc。Echo命令用来显示对象名。


       Swift工具简单、可扩展、灵活并且提供有用的解决方法,这些都是云计算的核心原则,-o选项只是他很多特性中的一个。

(第四章 完)


原创粉丝点击