㈠ ceph已有image怎么更改feature
1.首先使用rbd -p <pool-name> info <image-name>来查看你当前image的features
2.使用rbd feature enable exclusive-lock -p <pool-name> --image <image-name>可以修改feature,其中deep-flatten无法修改,只能创建image的时候增加该feature。
"features_name": [
"deep-flatten",
"exclusive-lock",
"fast-diff",
"layering",
"object-map"
㈡ 关于ceph rgw storage_class 的使用研究(amazon S3 智能分层 )
为什么要研究这个?
因为rgw 没找到横向扩容的比较好的办法。有些人是在rgw 上层再加一个接入层,在上面加数据记录。比如一个“虚拟大bucket”,对应了下面多个集群的多个 bucket 。
无论哪一种办法,都要增加额外的元数据管理系统。
看到amazon 的这个 storage class 被ceph rgw (Nautilus)支持后
我打算研究一下利用这个新功能做到几件事
1 横向 在bucket 下扩pool
2 通过 bucket 下同时支持多个 pool,提高读写吞吐。
3 利用 生命周期。前置ssd pool 。达到时间后把对象迁移到后面的廉价 COLD pool 比如 大容量sata 。
ceph 官网文档 地址 https://docs.ceph.com/docs/master/radosgw/placement/
这个功能 amazon s3 在 2018年推出
发布于: Nov 26, 2018
S3 智能分层是一种新的 Amazon S3 存储类,专为希望在数据访问模式发生变化时自动优化存储成本而不会影响性能或运营开销的客户而设计。S3 智能分层是第一个云对象存储类,通过在访问模式发生变化时在两个访问层(频繁访问层和不频繁访问层)之间移动数据来实现自动节省成本,非常适用于访问模式未知或不断变化的数据。
ceph 官方在rgw Nautilus 版本中引入
首先说说 palcement 和 storage class 的区别
placement 是指 bucket 的放置属性 ,storage class 是bucket 内每个对象的放置属性。
placement 下面默认有个标准层 STANDARD 他对应的pool 默认default.rgw.buckets.data (这个pool 可修改为你想存放的 pool,)
"STANDARD": {
"data_pool": “default.rgw.buckets.data”
每个 placemetn 都有个 STANDARD
你可以 添加自定义分层 比如 COLD 不只限于一个。可以多个。
上图是我测试的placement 加的2个class。 可以分别对应不同的pool 。
pool 可以根据你的需要新建在不同的设备上 比如 ssd sas sata
根据我们以前的测试结果
bucket ==> placement storage class ==>pool
创建bucket 通过指定 placement 制定了 放置池组
PUT 对象时候 可以制定 storage_class 指定具体的pool
下面说说具体做法 ,我就在默认 的 default-placement操作测试
根据官网命令 To add a new storage class named COLD to the default-placement target, start by adding it to the zonegroup
先在 zonegroup 加入 tag
1)
$ radosgw-admin zonegroup placement add
--rgw-zonegroup default
--placement-id default-placement
--storage-class COLD
2)zone 中加入 具体 pool 官网例子加上了压缩。这个可以根据需要配置是否加上
radosgw-admin zone placement add
--rgw-zone default
--placement-id default-placement
--storage-class COLD
--data-pool default.rgw.cold.data
--compression lz4
结果如下
placement_pools": [
{
"key": "default-placement”,
"val": {
"index_pool": “default.rgw.buckets.index”,
"storage_classes": {
我们用 s3cmd 测试上传
对我的 测试placement 做put 文件测试 (这里我用自定义 的placemet 做测试
指定 -storage-class=TEMPCOLD
s3cmd put cirros-0.3.5-x86_64-disk.img s3://bucket2/clodtest1 --storage-class=TEMPCOLD
upload: 'cirros-0.3.5-x86_64-disk.img' -> ' s3://bucket2/clodtest1' [1 of 1]
s3cmd info s3://bucket2/clodtest1
s3://bucket2/clodtest1 (object):
File size: 13267968
Last mod: Sun, 29 Mar 2020 07:03:34 GMT
MIME type: application/octet-stream
Storage: TEMPCOLD
MD5 sum:
如果不加参数
s3cmd put cirros-0.3.5-x86_64-disk.img s3://bucket2/clodtest3
upload: 'cirros-0.3.5-x86_64-disk.img' -> ' s3://bucket2/clodtest3' [1 of 1]
13267968 of 13267968 100% in 0s 27.25 MB/s done
数据会落在 STANDARD
s3://bucket2/clodtest3 (object):
File size: 13267968
Last mod: Sun, 29 Mar 2020 07:06:24 GMT
MIME type: application/octet-stream
Storage: STANDARD
经过测试 读数据不需要知道对象属于哪一个 Storage
。
=====
官方说明
所有放置目标都有一个STANDARD存储类,默认情况下该存储类适用于新对象。用户可以使用覆盖此默认设置 default_storage_class。
要在非默认存储类中创建对象,请在请求的HTTP标头中提供该存储类名称。S3协议使用 X-Amz-Storage-Class标头,而Swift协议使用 X-Object-Storage-Class标头。
结论:
1
如果需要 提高性能。可以同时在一个placement 下加入多个 Storage 对应多个 pool。 客户端写数据的时候可以均衡指定 storage-class
具体可以参考s3 api .
或者可以在nginx 接入层做 灵活的指定 X-Amz-Storage-Class (对多个 storage-class 做自定义轮询或者打开关闭)
2
如果需要在pool 将近满了。可以新增一个 storage-class。 客户端读写 指定到新的 storage-class。
3
如果需要用ssd 加速。可以 用ssd pool 作为STANDARD
用 廉价 sata 作为 COLD 进行迁移。 具体要研究 Lifecycle 的设置
我这里就没时间做测试了。
目前我测试的 ceph 是 14.2.5. 不是最新。 感觉这个功能还有写莫名其妙的情况。
建议各位有需要的可以做大规模的测试。
㈢ ceph和cephfs是一个概念么
首先Ceph和CephFS不是一个概念
Ceph是分布式文件存储系统,里面提供了对象存储,块存储和文件系统,这个文件系统也就是CephFS。所以Ceph包括了CephFS。
㈣ 如何在 CentOS 7.0 上配置 Ceph 存储
Ceph 是一个将数据存储在单一分布式计算机集群上的开源软件平台。当你计划构建一个云时,你首先需要决定如何实现你的存储。开源的 Ceph 是红帽原生技术之一,它基于称为 RADOS 的对象存储系统,用一组网关 API 表示块、文件、和对象模式中的数据。由于它自身开源的特性,这种便携存储平台能在公有云和私有云上安装和使用。Ceph 集群的拓扑结构是按照备份和信息分布设计的,这种内在设计能提供数据完整性。它的设计目标就是容错、通过正确配置能运行于商业硬件和一些更高级的系统。
Ceph 能在任何 Linux 发行版上安装,但为了能正确运行,它需要最近的内核以及其它最新的库。在这篇指南中,我们会使用最小化安装的 CentOS-7.0。
系统资源
**CEPH-STORAGE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.136.163
FQDN: ceph-storage.linoxide.com
**CEPH-NODE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.171.138
FQDN: ceph-node.linoxide.com
安装前的配置
在安装 Ceph 存储之前,我们要在每个节点上完成一些步骤。第一件事情就是确保每个节点的网络已经配置好并且能相互访问。
配置 Hosts
要在每个节点上配置 hosts 条目,要像下面这样打开默认的 hosts 配置文件(LCTT 译注:或者做相应的 DNS 解析)。
#vi/etc/hosts
45.79.136.163 ceph-storage ceph-storage.linoxide.com
45.79.171.138 ceph-node ceph-node.linoxide.com
安装 VMware 工具
工作环境是 VMWare 虚拟环境时,推荐你安装它的 open VM 工具。你可以使用下面的命令安装。
#yum install -y open-vm-tools
配置防火墙
如果你正在使用启用了防火墙的限制性环境,确保在你的 Ceph 存储管理节点和客户端节点中开放了以下的端口。
你必须在你的 Admin Calamari 节点开放 80、2003、以及4505-4506 端口,并且允许通过 80 号端口访问到 Ceph 或 Calamari 管理节点,以便你网络中的客户端能访问 Calamari web 用户界面。
你可以使用下面的命令在 CentOS 7 中启动并启用防火墙。
#systemctl start firewalld
#systemctl enable firewalld
运行以下命令使 Admin Calamari 节点开放上面提到的端口。
# firewall-cmd --zone=public--add-port=80/tcp --permanent
# firewall-cmd --zone=public--add-port=2003/tcp --permanent
# firewall-cmd --zone=public--add-port=4505-4506/tcp --permanent
# firewall-cmd --reload
在 Ceph Monitor 节点,你要在防火墙中允许通过以下端口。
# firewall-cmd --zone=public--add-port=6789/tcp --permanent
然后允许以下默认端口列表,以便能和客户端以及监控节点交互,并发送数据到其它 OSD。
# firewall-cmd --zone=public--add-port=6800-7300/tcp --permanent
如果你工作在非生产环境,建议你停用防火墙以及 SELinux 设置,在我们的测试环境中我们会停用防火墙以及 SELinux。
#systemctl stop firewalld
#systemctl disable firewalld
系统升级
现在升级你的系统并重启使所需更改生效。
#yum update
#shutdown-r 0
设置 Ceph 用户
现在我们会新建一个单独的 sudo 用户用于在每个节点安装 ceph-deploy工具,并允许该用户无密码访问每个节点,因为它需要在 Ceph 节点上安装软件和配置文件而不会有输入密码提示。
运行下面的命令在 ceph-storage 主机上新建有独立 home 目录的新用户。
[root@ceph-storage ~]#useradd-d /home/ceph -m ceph
[root@ceph-storage ~]#passwd ceph
节点中新建的每个用户都要有 sudo 权限,你可以使用下面展示的命令赋予 sudo 权限。
[root@ceph-storage ~]#echo"ceph ALL = (root) NOPASSWD:ALL"|sudotee/etc/sudoers.d/ceph
ceph ALL =(root) NOPASSWD:ALL
[root@ceph-storage ~]#sudochmod0440/etc/sudoers.d/ceph
设置 SSH 密钥
现在我们会在 Ceph 管理节点生成 ssh 密钥并把密钥复制到每个 Ceph 集群节点。
在 ceph-node 运行下面的命令复制它的 ssh 密钥到 ceph-storage。
[root@ceph-node ~]#ssh-keygen
Generatingpublic/private rsa key pair.
Enterfilein which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (emptyforno passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Yourpublic key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
5b:*:*:*:*:*:*:*:*:*:c9 root@ceph-node
The key's randomart image is:
+--[ RSA 2048]----+
[root@ceph-node ~]#ssh--id ceph@ceph-storage
SSH key
配置 PID 数目
要配置 PID 数目的值,我们会使用下面的命令检查默认的内核值。默认情况下,是一个小的最大线程数 32768。
如下图所示通过编辑系统配置文件配置该值为一个更大的数。
更改 PID 值
配置管理节点服务器
配置并验证了所有网络后,我们现在使用 ceph 用户安装 ceph-deploy。通过打开文件检查 hosts 条目(LCTT 译注:你也可以用 DNS 解析来完成)。
#vim/etc/hosts
ceph-storage 45.79.136.163
ceph-node 45.79.171.138
运行下面的命令添加它的库。
# rpm -Uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm
添加 Ceph 仓仓库
或者创建一个新文件并更新 Ceph 库参数,别忘了替换你当前的 Release 和版本号。
[root@ceph-storage ~]#vi/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
之后更新你的系统并安装 ceph-deploy 软件包。
安装 ceph-deploy 软件包
我们运行下面的命令以及 ceph-deploy 安装命令来更新系统以及最新的 ceph 库和其它软件包。
#yum update -y &&yum install ceph-deploy -y
配置集群
使用下面的命令在 ceph 管理节点上新建一个目录并进入新目录,用于收集所有输出文件和日志。
#mkdir~/ceph-cluster
#cd~/ceph-cluster
# ceph-deploy new storage
设置 ceph 集群
如果成功执行了上面的命令,你会看到它新建了配置文件。
现在配置 Ceph 默认的配置文件,用任意编辑器打开它并在会影响你公共网络的 global 参数下面添加以下两行。
#vim ceph.conf
osd pool defaultsize=1
public network =45.79.0.0/16
安装 Ceph
现在我们准备在和 Ceph 集群关联的每个节点上安装 Ceph。我们使用下面的命令在 ceph-storage 和 ceph-node 上安装 Ceph。
# ceph-deploy install ceph-node ceph-storage
安装 ceph
处理所有所需仓库和安装所需软件包会需要一些时间。
当两个节点上的 ceph 安装过程都完成后,我们下一步会通过在相同节点上运行以下命令创建监视器并收集密钥。
# ceph-deploy mon create-initial
Ceph 初始化监视器
设置 OSD 和 OSD 守护进程
现在我们会设置磁盘存储,首先运行下面的命令列出你所有可用的磁盘。
# ceph-deploy disk list ceph-storage
结果中会列出你存储节点中使用的磁盘,你会用它们来创建 OSD。让我们运行以下命令,请使用你的磁盘名称。
# ceph-deploy disk zap storage:sda
# ceph-deploy disk zap storage:sdb
为了最后完成 OSD 配置,运行下面的命令配置日志磁盘以及数据磁盘。
# ceph-deploy osd prepare storage:sdb:/dev/sda
# ceph-deploy osd activate storage:/dev/sdb1:/dev/sda1
你需要在所有节点上运行相同的命令,它会清除你磁盘上的所有东西。之后为了集群能运转起来,我们需要使用以下命令从 ceph 管理节点复制不同的密钥和配置文件到所有相关节点。
# ceph-deploy admin ceph-node ceph-storage
测试 Ceph
我们快完成了 Ceph 集群设置,让我们在 ceph 管理节点上运行下面的命令检查正在运行的 ceph 状态。
# ceph status
# ceph health
HEALTH_OK
如果你在 ceph status 中没有看到任何错误信息,就意味着你成功地在 CentOS 7 上安装了 ceph 存储集群。
㈤ 【ceph】对象存储的目录/文件夹概念
对象存储(OSS)中文件夹的概念仅是一个逻辑概念,在通过API/SDK的方式设置文件夹的时候可以指定object对应的key值包括前面的目录即可实现该功能。例如,定义object的key为abc/1.jpg就会在该bucket下创建一个abc的文件夹,而在文件夹下即会有一个1.jpg的文件。
对象存储(OSS)中的文件夹其实是一个大小为0KB的空文件。因此,用户创建一个key值为1/的object就会定义文件夹1;并且如果用户创建文件abc/1.jpg,系统是不会创建abc/这个文件的,因此在删除abc/1.jpg后将不会再存在abc这个文件夹。
由于对象存储(OSS)采用的是分布式存储的方式,object并不是根据文件夹进行物理存储的。也就是说并不是一个文件夹下的所有的文件都会存储在一起的。在后端存储的过程中不同的文件夹的文件仅仅是key值的前缀不一样。因此这种架构下就会导致无法很方便的统计某个文件夹下的汇总信息,如文件夹大小、文件夹PV数等。而想要遍历某个文件夹下的所有的文件也需要首先通过ListObject接口获取文件夹下的所有文件的key值(这里需要通过prefix指定文件夹),然后再进行操作。
在逻辑上“中国.mp4”将存放到目录“videos”中
https://help.aliyun.com/knowledge_detail/39527.html
https://www.jianshu.com/p/4212d37c0e0f
㈥ 【ceph】对象存储 - bucket命名规范
用于存储 日志文件的 存储桶的名称必须符合非美国标准区域的命名要求。Amazon S3 将存储桶名称定义为符合以下规则的一个或多个标签(用句点分隔开):
警告
由于 S3 允许您的存储桶用作可公开访问的 URL,因此您选择的存储桶名称必须具有全局唯一性。如果其他一些账户已使用您选择的名称创建存储桶,则必须使用其他名称。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的存储桶局限和限制。
参考
https://docs.aws.amazon.com/zh_cn/awscloudtrail/latest/userguide/cloudtrail-s3-bucket-naming-requirements.html
㈦ Linux里面ceph是什么
Linux里面ceph
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
㈧ Ceph之对象存储
RGW 全称为Rados GateWay,是Ceph 对象存储网关,用于向客户端应用程序提供存储界面,提供RestFul API 接口
Ceph对象网关是一个构建在librados之上的对象存储接口,它为应用程序访问Ceph 存储提供了一个RESTFul 风格的网关。Ceph 对象存储支持两种接口:
1.用户: 对象存储应用的使用者,一个用户拥有一个或者多个存储桶。RGW 向您提供的用户账号宝琨了AK(AccessKeyID)和SK(SecretAccessKeyID)。通过使用AK和SK 对称加密的方法来验证某个请求的发送至身份。
参考blog: https://blog.z0ukun.com/?p=2765
㈨ 如何集成Ceph对象存储
Glance集成Glance是OpenStack中的映像服务。默认情况下,映像存储在本地控制器,然后在被请求时复制到计算主机。计算主机缓存镜像,但每次更新镜像时,都需要再次复制。Ceph为Glance提供了后端,允许镜像存储在Ceph中,而不是本地存储在控制器和计算节点上。这大大减少了抓取镜像的网络流量,提高了性能,因为Ceph可以克隆镜像而不是复制镜像。此外,它使得在OpenStack部署或诸如多站点OpenStack之类的概念的迁移变得更简单。安装Glance使用的Ceph客户端。创建Ceph用户并将主目录设置为/etc/ceph。将Ceph用户添加到sudoers。在Ceph管理节点。为Glance镜像创建CephRBD池。创建将允许Glance访问池的密钥环。将密钥环复制到OpenStack控制器上的/etc/ceph。设置权限,让Glance可以访问Ceph密钥环。将密钥环文件添加到Ceph配置。创建原始Glance配置的备份。更新Glance配置。重新启动Glance。下载Cirros镜像并将其添加到Glance。将QCOW2转换为RAW。建议Ceph始终使用RAW格式。将镜像添加到Glance。检查Ceph中是否存在Glance图像。Cinder集成Cinder是OpenStack中的块存储服务。Cinder提供了关于块存储的抽象,并允许供应商通过提供驱动程序进行集成。在Ceph中,每个存储池可以映射到不同的Cinder后端。这允许创建诸如金、银或铜的存储服务。你可以决定例如金应该是复制三次的快速SSD磁盘,银应该是复制两次,铜应该是使用较慢的擦除编码的磁盘。为Cinder卷创建一个Ceph池。创建一个密钥环以授予Cinder访问权限。将密钥环复制到OpenStack控制器。创建一个只包含OpenStack控制器上的身份验证密钥的文件。设置密钥环文件的权限,以便Cinder可以访问。将密钥环添加到OpenStack控制器上的Ceph配置文件中。使KVMHypervisor访问Ceph。在virsh中创建一个密钥,因此KVM可以访问Ceph池的Cinder卷。为Cinder添加一个Ceph后端。在所有控制器上重新启动Cinder服务。创建Cinder卷。在Ceph中列出Cinder卷。将Ceph与Nova计算集成Nova是OpenStack中的计算服务。Nova存储与默认的运行虚拟机相关联的虚拟磁盘镜像,在/var/lib/nova/instances下的Hypervisor上。在虚拟磁盘映像的计算节点上使用本地存储有一些缺点:·镜像存储在根文件系统下。大镜像可能导致文件系统被填满,从而导致计算节点崩溃。·计算节点上的磁盘崩溃可能导致虚拟磁盘丢失,因此无法进行虚拟机恢复。Ceph是可以直接与Nova集成的存储后端之一。在本节中,我们将看到如何配置。为Nova创建验证密钥环。将密钥环复制到OpenStack控制器。在OpenStack控制器上创建密钥文件。设置密钥环文件的权限,以便Nova服务可以访问。确保安装所需的rpm软件包。更新Ceph配置。让KVM可以访问Ceph。在virsh中创建一个密钥,这样KVM可以访问Cinder卷的Ceph池。备份Nova配置。更新Nova配置以使用Ceph后端。重新启动Nova服务。列表Neutron网络。启动使用在Glance步骤中添加的Cirros镜像的临时VM实例。等待直到VM处于活动状态。在Ceph虚拟机池中列出镜像。我们现在应该看到镜像存储在Ceph中。