Ceph篇之利用shell脚本实现批量创建bucket桶

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

注意事项:

这里需要注意两个变量:

  1. 修改S3CMD_CONFIG为自己的路径地址
  2. 修改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

输出结果如下:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
使用 `cephfs.MountInfo` 也可以实现上面的问题。下面是使用 `cephfs.MountInfo` 的代码: ```go package main import ( "fmt" "io/ioutil" "github.com/ceph/go-ceph/cephfs" ) func main() { // 获取一个 Ceph 连接 mountInfo, err := cephfs.NewMountInfo("", "", "/etc/ceph/ceph.conf") if err != nil { panic(err) } defer mountInfo.Destroy() // 挂载 Ceph 文件系统 err = mountInfo.Mount() if err != nil { panic(err) } defer mountInfo.Unmount() // 创建一个文件并写入数据 fs, err := cephfs.New(mountInfo.Context()) if err != nil { panic(err) } defer fs.Shutdown() file, err := fs.OpenFile("/test.txt", cephfs.O_CREATE|cephfs.O_WRONLY, 0644) if err != nil { panic(err) } defer file.Close() _, err = file.Write([]byte("Hello world!")) if err != nil { panic(err) } // 读取文件内容 data, err := ioutil.ReadFile("/mnt/myceph/test.txt") if err != nil { panic(err) } fmt.Println(string(data)) } ``` 在代码中,我们使用 `cephfs.NewMountInfo()` 方法获取一个 `cephfs.MountInfo` 对象,并使用 `/etc/ceph/ceph.conf` 配置文件来连接 Ceph 集群。然后,我们使用 `mountInfo.Mount()` 方法挂载 Ceph 文件系统,使用 `cephfs.New()` 方法创建一个 `Ceph` 对象,通过 `fs.OpenFile()` 方法创建 `/test.txt` 文件并向文件中写入数据。 需要注意的是,使用 `cephfs.MountInfo` 挂载文件系统时,需要手动调用 `mountInfo.Unmount()` 方法来卸载文件系统,而不是使用 `Ceph` 对象的 `fs.Shutdown()` 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听说唐僧不吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值