Ceph创建bucket桶
在 Ceph 中创建桶(bucket)需要使用 Ceph 对象网关(RGW)。
注:如果查看shell批量创建脚本请直接参见目录3
1. 利用radosgw-admin工具创建桶
确保 Ceph 集群和对象网关已正确配置
确保你的 Ceph 集群已安装并配置了 RADOS 网关(RGW)。
对象网关是 Ceph的对象存储接口,可以通过 S3 或 Swift API 访问。
创建一个用户(如果还没有用户的话)
如果你还没有创建用户,可以使用 radosgw-admin 工具创建一个用户。用户通常用于管理桶。
radosgw-admin user create --uid=<username> --display-name="User Display Name"
例如:
radosgw-admin user create --uid=johndoe --display-name="John Doe"
使用 radosgw-admin 工具创建桶:
使用 radosgw-admin 工具创建桶。以下命令可以帮助你创建一个新的桶:
radosgw-admin bucket create --bucket=<bucket-name> --user=<username>
例如:
radosgw-admin bucket create --bucket=mybucket --user=johndoe
验证桶的创建:
你可以使用 radosgw-admin bucket stats 命令来检查桶的状态和信息。
radosgw-admin bucket stats --bucket=<bucket-name>
例如:
radosgw-admin bucket stats --bucket=mybucket
2. 利用s3cmd创建ceph的bucket桶
通过 S3 或 Swift API 访问桶:
你也可以通过 S3 或 Swift API 来管理桶和对象,这需要你配置好相应的访问权限和认证信息。
前提条件: 需要利用s3cmd服务关联存储服务,
详情可参考这篇文章:https://blog.csdn.net/xu710263124/article/details/141229039?spm=1001.2014.3001.5501
// 创建桶:
s3cmd mb s3://my-bucket-name
3. 利用shell脚本直接批量创建bucket桶并开放公共读取权限
前提条件: 需要利用s3cmd服务关联存储服务,
详情可参考这篇文章:https://blog.csdn.net/xu710263124/article/details/141229039?spm=1001.2014.3001.5501
实现方式如下:
1、编译需要创建的桶名称
vim buckets.txt
例如:
bucket1
bucket2
2、脚本内容
vim create_buckets.sh
注意事项:
这里需要注意两个变量:
- 修改S3CMD_CONFIG为自己的路径地址
- 修改BUCKETS_FILE为自己的路径地址
#!/bin/bash
# 配置 s3cmd 的配置文件路径
S3CMD_CONFIG="/path/to/.s3cfg"
# 桶名称文件路径
BUCKETS_FILE="buckets.txt"
# 检查桶名称文件是否存在
if [ ! -f "$BUCKETS_FILE" ]; then
echo "桶名称文件 $BUCKETS_FILE 不存在。"
exit 1
fi
# 读取每一行,并创建桶
while IFS= read -r bucket_name; do
if [ -z "$bucket_name" ]; then
continue # 跳过空行
fi
# 创建桶
echo "创建桶: $bucket_name"
s3cmd mb "s3://$bucket_name" --config="$S3CMD_CONFIG"
if [ $? -ne 0 ]; then
echo "创建桶 $bucket_name 失败。"
continue
fi
# 设置公共读取权限
echo "设置公共读取权限: $bucket_name"
s3cmd setacl "s3://$bucket_name" --acl-public --config="$S3CMD_CONFIG"
if [ $? -ne 0 ]; then
echo "设置桶 $bucket_name 公共读取权限失败。"
else
echo "桶 $bucket_name 创建成功,并设置为公共读取。"
fi
done < "$BUCKETS_FILE"
赋权
chmod +x create_buckets.sh
执行
sh create_buckets.sh
输出结果如下: