Ceph-------存储提供

一、Ceph存储介绍

  • 向物理机和虚拟机供应存储
  • 统一存储,同时提供对象、块以及文件的功能

(1)、块设备

           通过Ceph clients使用块设备

           精简配置

           动态扩容

           快照、克隆

           写时拷贝技术

           caching(缓存)

           Rbd驱动已经集成到Linux内核中

           支持计算模块KVM、Qemu、libvirt

           支持虚拟和物理服务器

           支持format-1和format-2两种类型

(2)、对象存储

          不能直接当成文件系统

          只能通过API访问

二、Ceph与传统存储的对比

 

三、建立一个Ceph块设备

(1)、安装ceph客户端

$:ceph-deploy insatll ceph-client
或
$:apt-get install ceph

(2)、创建块设备

$:rdb create {image-name} --size {me gabytes} --pool {pool-name}
例:
$:rdb create zhao --size 1024 --pool  rdb

(3)、列出块设备

$:rbd ls {poolname}
例:
$:rbd ls rbd
$:rbd ls

(4)、检索块信息

$:rbd --image {image-name} info
例:
$:rbd --image zhao info

(5)、更改块大小

$:rbd resize --image {image-name} --size {megabytes}
例:
$:rbd resize --image zhao --size 2048

(6)、删除块设备

$:rbd rm {image-name}
例:
$:rbd rm zhao

(7)、映射块设备

$:rbd map {image-name} --pool {pool-name} --id {user-name}
例:
$:rbd map zhao --pool rbd --id admin

(8)、查看已映射块设备

$:rbd showmapped

(9)、取消映射块设备

$:rbd unmap /dev/rbd/{poolname}/{imagename}
例:
$:rbd unmap /dev/rbd/rbd/zhao
$:rbd unmap /dev/rbd0

四、使用块设备完整操作流程实战

第一步:创建块设备

$:rbd creat zhao --size 1024
$:rbd map zhao
$:rbd showmapped 
$:mkfs.ext4 -q /dev/rbd0
$:mkdir /mnt/ceph-zhao
$:mount /dev/rbd0 /mnt/ceph-zhao

第二步:自动挂载

设置开机ceph自动map和mount rdb块设备

1:edit /etc/ceph/rbdmap
#poolname/imagename id=client,keyring=/etc/ceph/ceph.client.keyring
例:
rbd/zhao id=admin.keyring=/etc/ceph/ceph.client.keyring

2:edit /etc/fstab
/dev/rbd/rbd/zhao /mnt/ceph-zhao ext4 defaults,noatime,_netdev

第三步:块扩容

$:rbd resize rdb/zhao --size 2048
文件系统在线扩容
$:resize2fs /dev/rbd0

第四步:块删除

$:umount /mnt/ceph-zhao
edit /etc/ceph/rbdceph
删除rbd/zhao id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
edit /etc/fstab
删除 /dev/rbd/zhao /mnt/ceph-zhao xfs defaults,noatime,_netdev
rbd rm zhao

五、快照和克隆

快照:某块设备在一个特定时间点的一份只读副本

(1)创建快照

rbd --pool {poolname} snap creat --snap {snap-name} {image-name}
rbd snap creat {pool-nmae}/{image-name}@{snap-name}
例:
$:rbd --pool rbd snap creat --snap zhao_snap zhao
$:rbd snap create rbd/zhao@zhao_snap 

(2)快照回滚

rbd --pool {pool-name} snap rollback --snap {snap-name} {image-name}
rbd snap rollback {pool-name}/{image-name}@{snap-name}
例:
$:rbd --pool rbd snap rollback --snap zhao_snap zhao
$:rbd snap rollback rbd/zhao@zhao_snap 

(3)清除快照

rbd --pool {pool-name} snap purge {image-name}
rbd snap purge {pool-name}/{image-name}
例:
$:rbd --pool rbd snap purge zhao
$:rbd snap purge rbd/zhao

(4)删除快照

$:rbd snap rm rbd/zhao@zhao_snap

(5)列出快照

rbd --pool {pool-name} snap ls {image-name}
rbd snap ls {pool-name}/{image-name}
例:
$:rbd --pool rbd snap ls zhao
$:rbd snap ls rbd/zhao

(6)保护快照 

rbd --pool {pool-name} snap protect --image {image-name} --snap {snapshot-name}
rbd snap protect {pool-name}/{image-name}@{snapshot-name}
例:
$:rbd --pool rbd snap protect --image my-image --snap my-snapshot
$:rbd snap protect rbd/zhao@zhao_snap

(7)取消保护

rbd --pool {pool-name} snap unprotect --image {image-name} --snap {snapshot-name}
rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}
例:
$:rbd --pool rbd snap unprotect --image my-image --snap my-snapshot
$:rbd snap unprotect rbd/zhao@zaho_snap

(8)快照克隆

rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}
例:
$:rbd clone rbd/zhao@zhao_snap/zhao-snap-clone

分层:支持创建某一设备快照的很多写时复制(COW)克隆,分层快照使得ceph块设备客户端可以很快的创建映射。

(1)创建分层快照和克隆

$:rbd creat zhao1 --size 1024 --image-format 2
$:rbd --pool rbd snap create --snap zhao1_snap zhao1
$:rbd snap protect rbd/zhao1@zhao1_snap
$:rbd clone rbd/zhao1@zhao1-snap rbd/zhao1-snap-clone

(2)查看快照的克隆

rbd --pool {pool-name} children --image {image-name} --snap {snap-name}
rbd children {pool-name}/{image-name}@{snapshot-name}
例:
$:rbd children rbd/zhao1@zhao1_snap

六、安装RADOS  gateway

(1)配置rados源

$:wget -q -O- https://raw.github.com/ceph/ceph/master/keys/autobuild.asc | sudo apt-key add -

$:echo debhttp://gitbuilder.ceph.com/apache2-deb-$(lsb_release-sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee/etc/apt/sources.list.d/ceph-apache.list

$:echo debhttp://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-$(lsb_release -sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee/etc/apt/sources.list.d/ceph-fastcgi.list

(2)安装radosgw软件

$:apt-getupdate
$:apt-get install apache2 libapache2-mod-fastcgi radosgw –y

注意:更新源之后,这里执行apt-get update会报错误,我们自动忽略它。一般情况下不影响下面的安装

(3)生成秘钥环和秘钥

给RADOS网关创建密钥     
ceph-authtool--create-keyring /etc/ceph/ceph.client.radosgw.$HOMENAME.keyring
chmod +r /etc/ceph/ceph.client.radosgw.$HOMENAME.keyring

创建一个密钥用于RADOS到集群的认证
ceph-authtool/etc/ceph/ceph.client.radosgw.$HOMENAME.keyring -n client.radosgw.$HOMENAME--gen-key
ceph-authtool -n client.radosgw.$HOMENNAME--cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph /ceph.client.radosgw. $HOMENAME.keyring

把密钥添加到ceph密钥
ceph -k /etc/ceph/ceph.client.admin.keyringauth add client.radosgw.$HOMENAME -i /etc/ceph /ceph.client.radosgw. $HOMENAME.keyring

(4)修改ceph配置文件

$:vim /etc/ceph/ceph.conf

[client.radosgw.node4]
host = node4
keyring =/etc/ceph/ceph.client.radosgw.node4.keyring
rgw socket path = /tmp/radosgw.sock
log file = /var/log/ceph/radosgw.node4.log
rgw dns name = node4

说明:keyring = /etc/ceph/ceph.client.radosgw.node4.keyring ,因为本次在创建的各种秘钥是node4,如果在其他节点上创建过,也可以用其他的keyring

(5)添加FastCGI脚本

$:vim /var/www/s3gw.fcgi

#!/bin/sh
exec /usr/bin/radosgw -c/etc/ceph/ceph.conf -n client.radosgw.node4


添加执行权限:
chmod +x /var/www/s3gw.fcgi

(6)创建网关配置文件(rgw.conf)

$:vim/etc/apache2/sites-available/rgw.conf

FastCgiExternalServer /var/www/s3gw.fcgi-socket /tmp/radosgw.sock

<VirtualHost *:80>

             ServerName node4

             DocumentRoot /var/www

             RewriteEngine On

             RewriteRule ^/(.*) /s3gw.fcgi?%{QUERY_STRING}[E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

             <IfModule mod_fastcgi.c>

             <Directory /var/www>

                             Options +ExecCGI

                             AllowOverride All

                             SetHandler fastcgi-script

                             Order allow,deny

                             Allow from all

                             AuthBasicAuthoritative off

             </Directory>

             </IfModule>

             AllowEncodedSlashes on

             ErrorLog /var/log/apache2/error.log

             CustomLog /var/log/apache2/access.log combined

             ServerSignatureoff

</VirtualHost>

(7)apache2添加ServerName

$:vim /etc/apache2/apache2.conf

ServerName node4

(8)加载模块和禁用默认站点启动rgw站点

$:a2enmod rewrite

$:a2enmod fastcgi

$:a2ensite rgw.conf

$:a2dissite 000-default

(9)启动服务

service ceph restart

service apache2 restart

/etc/init.d/radosgw start

(10)根据官方文档,补充步骤:

mkdir -p/var/lib/ceph/radosgw/ceph-radosgw.gateway

chown www-data:www-data /var/run/ceph

touch /var/log/ceph/radosgw.node4.log

chown www-data:www-data /var/log/ceph/radosgw.node4.log

/etc/init.d/radosgw start

/etc/init.d/apache2 start

七、创建S3和swift用户

(1)create a radosgw user for S3 access:

$:radosgw-admin user create --uid="testuser" --display-name="First User"

(2)Create Swift user:

$:radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full

(3)Creat the secret key:

$:radosgw-admin key create --subuser=testuser:swift --key-type=swift --gen-secret

(4)查看用户信息

$:radosgw-admin user info --uid=testuser

 

(4)测试S3接口

$:apt-get install python-boto
$:vim s3test.py
import boto
import boto.s3.connection
access_key = 'IOPJDPCIYZ665MW88W9R'
secret_key = 'dxaXZ8U90SXzyS5ivamEP20hkLSUViiaR+ZDA'
conn = boto.connect_s3(
aws_access_key_id = access_key, 
aws_secret_access_key = secret_key,
host = '{hostname}',
is_secoure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.creat_bucket('my-new-bucket')
for bucket in conn.get_all_buckets():
    print "{name}\t{created}".format(
        name = bucket.name
        created = bucket.creation_date,
    )

(5)安装s3cmd

$:apt-get install python-setuptools
$:git clone https://github.com/s3tools/s3cmd.git
$:cd s3cmd
$:python setup.py install
$:/home/s3cmd/build/scripts-2.7/s3cmd --configure
$:ln -s /home/s3cmd/build/scripts-2.7/s3cmd/ /usr/bin/s3cmd

安装dnsmasq
$:apt-get install dnsmasq
$:vim /etc/dnsmasq.conf
 address = /ceph4/192.168.88.103
 listen-address=127.0.0.1

$:service dnsmasq restart

初始化操作
$:s3cmd --configure

(6)s3cmd的使用

#S3cmd help
s3cmd --help

#Display all buckets
s3cmd ls

#Creat new bucket
s3cmd mb s3://YOURBUCKET

#Upload new file
s3cmd put test.txt s3://YOURBUCKET

#Download file
s3cmd get s3://YOURBUCKET/test.txt text.txt

(7)安装swiftclient

$:apt-get install python-setuptools
$:easy_install pip
$:pip install --upgrade setuptools
$:pip install --upgrade python-swiftclient

(8)测试swift

swift -A http://{IP ADDRESS}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' list
例:
$:swift -A http://192.168.88.101/auth/1.0 -U testuser:swift -K 'ABJassd#hsd639^&*Bvhsd' list

参考:

ceph社区老王的视频课整理而得!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值