【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】 OBServer 4.2.5.7、OCP: 4.4.1
【问题描述】发起备份报错设置备份路径失败,错误信息:(conn=3221967979) no I/O operation permission at the backup destination
测试存储地址可以测试成功
发起备份报错 设置备份路径失败,错误信息:(conn=3221967979) no I/O operation permission at the backup destination
使用s3cmd可以正常PUT、GET
使用./ob_admin test_io_device 报错
ERROR INFO: The path is inaccessible, please check the path and the storage info parameter
ERROR CODE: -4002 OB_INVALID_ARGUMENT
ob_admin.log (177.5 KB)
ob_admin_rs.log (7.3 KB)
3 个赞
咖啡哥
2026 年4 月 3 日 17:05
#3
sys租户执行:
ALTER SYSTEM SET ob_storage_s3_url_encode_type='compliantRfc3986Encoding';
你用的哪里的s3?
3 个赞
公司内部的服务,兼容S3协议
执行没修复 ALTER SYSTEM SET ob_storage_s3_url_encode_type=‘compliantRfc3986Encoding’;
用ob_admin 命令也指定了,验证没成功
1 个赞
咖啡哥
2026 年4 月 3 日 17:32
#5
ob_admin测试的时候桶名后面加/
去掉这个:&addressing_model=path_style
1 个赞
可以OCP上执行后备份触发报错后,登录到任意OBServer服务器上看下最新的observer.log日志和rootService日志,会记录生成的s3命令,可能生成的s3协议部分命令不支持,可以从日志找到命令后在命令行用ALTER SYSTEM SET DATA_BACKUP_DEST=手工指定看会不会报错。
1 个赞
这些知识点在OBCPv4的官方文档好像没见过,S3是啥呀
1 个赞
辞霜
2026 年4 月 7 日 14:56
#11
日志显示backup_path被拼成s3://ob-cn-backup2026-04-03-16:40:18
命令行实际为s3://ob-cn-backup
1 个赞
辞霜
2026 年4 月 7 日 15:12
#12
show parameters like ‘%ob_storage_s3_url_encode_type%’;
查询下ob_storage_s3_url_encode_type参数值是否修改正常
1 个赞
旭辉
2026 年4 月 7 日 15:19
#14
[2026-04-03 16:40:50.075080] INFO get_file_length (ob_storage.cpp:631) [2366387][][T500][Y0-0000000000000000-0-0] [lt=7] this file is empty(ret=0, uri=s3://ob-cn-backup/2026-04-03-16:40:49/check_file/appendable_check_file.obbak, file_length=0)
[2026-04-03 16:40:50.075097] EDIAG [STORAGE] test_appendable_check_file_ (ob_admin_test_io_device_executor.cpp:285) [2366387][][T500][Y0-0000000000000000-0-0] [lt=14][errcode=-4016] get appendable check file length does not match real length(ret=-4016, appendable_check_file_path="s3://ob-cn-backup/2026-04-03-16:40:49/check_file/appendable_check_file.obbak", real_len=42, check_file_len=0) BACKTRACE:0x61732b3 0x612cc85 0x637275f 0x6372224 0x637217c 0x6372112 0x96e33cc 0x96db931 0x96d752c 0x96d6e7c 0x953d0d7 0x7f5721f6ead0 0x7f5721f6eb89 0x66d4bea
[2026-04-03 16:40:50.075179] EDIAG [STORAGE] test_backup_dest_connectivity_ (ob_admin_test_io_device_executor.cpp:177) [2366387][][T500][Y0-0000000000000000-0-0] [lt=68][errcode=-4016] test appendable check file failed(ret=-4016) BACKTRACE:0x61732b3 0x612cc85 0x62856f4 0x62851a4 0x6285102 0x6284f2f 0x96e1580 0x96dc589 0x96d752c 0x96d6e7c 0x953d0d7 0x7f5721f6ead0 0x7f5721f6eb89 0x66d4bea
[2026-04-03 16:40:50.075208] EDIAG [STORAGE] run_all_tests_ (ob_admin_test_io_device_executor.cpp:133) [2366387][][T500][Y0-0000000000000000-0-0] [lt=20][errcode=-4016] test backup dest connectivity failed(ret=-4016, backup_path="s3://ob-cn-backup/2026-04-03-16:40:49") BACKTRACE:0x61732b3 0x612cc85 0x612a2e8 0x5f8bba6 0x5f763b4 0x5f93e76 0x96de40e 0x96d8ac8 0x96d6e7c 0x953d0d7 0x7f5721f6ead0 0x7f5721f6eb89 0x66d4bea
[2026-04-03 16:40:50.075228] EDIAG [STORAGE] execute (ob_admin_test_io_device_executor.cpp:64) [2366387][][T500][Y0-0000000000000000-0-0] [lt=20][errcode=-4016] failed to pass all tests(ret=-4016, backup_path="s3://ob-cn-backup/2026-04-03-16:40:49") BACKTRACE:0x61732b3 0x612cc85 0x612a2e8 0x5f8bba6 0x5f763b4 0x5f93e76 0x96da65e 0x96d6f7e 0x953d0d7 0x7f5721f6ead0 0x7f5721f6eb89 0x66d4bea
将 2026-04-03-16:40:49 冒号 改成 “-” ,例如 s3://ob-cn-backup/2026-04-03-16-40-49
或者s3://ob-cn-backup/2026-04-03_16_40_49
再试下呢
辞霜
2026 年4 月 7 日 15:56
#16
ob的详细版本号提供一下,
select BUILD_VERSION from dba_ob_servers;
辞霜
2026 年4 月 7 日 16:46
#18
需要确认下你们公司的对象存储实现,是不是用空文件表示了目录?
旭辉
2026 年4 月 8 日 11:09
#20
根因:S3 兼容存储的最终一致性问题
日志显示 file_length=0 且 ret=0,说明函数成功执行但未找到数据。结合 adaptively_is_exist 成功(找到了 @FORMAT_META)但长度为 0 的现象,根因是:
S3 兼容存储的 LIST 操作存在最终一致性(eventual consistency)问题。
解决方向
确认 S3 兼容存储是否支持强一致性,并在存储配置中启用