You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ceph S3/Swift创建Bucket时遇416错误的解决方法咨询

解决Ceph Luminous中创建S3/Swift Bucket时出现的416 InvalidRange错误

我帮你分析下这个在Ceph Luminous 12.2.2版本里创建Bucket时遇到的416 InvalidRange错误,结合你的集群状态、日志和操作命令,给你几个针对性的解决方案:

1. 调整RGW的严格Range请求检查配置

在Ceph Luminous版本中,rgw_req_strict_range参数默认是开启的(true),这会让RGW严格校验客户端发送的Range请求头。而旧版的S3/Swift客户端(比如你用的boto 2.38.0)在创建Bucket时,可能会发送不符合规范的Range头,触发这个416错误。

解决步骤:

  • 编辑你的ceph.conf配置文件,在所有RGW客户端的配置段(比如[client.rgw.ceph-2]、[client.rgw.ceph-4],或者直接用[client.rgw.*]统一定义)添加:
    rgw_req_strict_range = false
    
  • 重启所有RGW服务(根据你的系统服务命名调整命令):
    sudo systemctl restart ceph-radosgw@rgw.*
    

2. 升级S3客户端(boto)版本

你当前使用的boto 2.38.0版本比较老旧,和Ceph Luminous的S3兼容性存在一些问题。建议升级到较新的版本,或者切换到更推荐的boto3:

升级boto2

pip install --upgrade boto

切换到boto3(推荐)

如果换成boto3,创建Bucket的示例代码可以改成这样:

import boto3

# 初始化S3客户端
s3 = boto3.client(
    's3',
    endpoint_url='http://ceph-4:7480',
    aws_access_key_id='你的测试用户Access Key',
    aws_secret_access_key='你的测试用户Secret Key'
)

# 创建Bucket
s3.create_bucket(Bucket='mybucket')

3. 修正Swift客户端的操作流程

你的Swift命令尝试在创建容器的同时上传对象,但容器创建失败后导致对象上传报404。建议先单独创建容器,再上传对象:

第一步:创建容器

swift -A http://ceph-4:7480/auth/1.0 -U testuser:swift -K 'BKtVrq1...' post testas

第二步:上传对象

swift -A http://ceph-4:7480/auth/1.0 -U testuser:swift -K 'BKtVrq1...' upload testas testas

4. 验证RGW前端配置

检查ceph.conf中的rgw_frontends配置,确保RGW监听的端口和你使用的端点一致:

rgw_frontends = civetweb port=7480

如果配置有问题,修改后同样需要重启RGW服务。

后续验证

完成上述调整后,重新测试创建Bucket的操作。如果仍然遇到错误,建议查看RGW的日志文件(比如/var/log/ceph/ceph-radosgw@rgw.ceph-4.log),里面会包含更详细的请求处理细节,能帮你进一步定位问题。

内容的提问来源于stack exchange,提问作者Dikobraz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:18:31