Skip to content

Commit

Permalink
s3
Browse files Browse the repository at this point in the history
  • Loading branch information
xb committed Oct 10, 2023
1 parent f342275 commit 2c1812e
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
35 changes: 35 additions & 0 deletions category/daos_s3_obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
src/include/daos_s3.h, ds3_obj_read

DAOS-12175 客户端:添加 libds3 库 (daos-stack#8889) 添加新的 libds3 库,在 libdfs 之上实现 S3 语义。 这实现了对 S3 存储桶(= 容器 = dfs 挂载)、对象(= DFS 文件)和 S3 用户元数据(用户 ID、名称、电子邮件、访问密钥和访问策略)的支持。 支持分段上传和版本控制。


当前的实现存在以下限制:
- DAOS 对象 API 不支持按顺序列出 dkey,因此它们将以随机顺序返回。 这在设计列表操作时是一个挑战,因为我们需要能够按顺序列出键。
- 多部分对象的当前设计将部分上传到元数据存储桶,然后将它们复制到对象。 这可能会导致整个多部分操作的性能下降。 一个对象可以有多个部分的结构是首选
- 当前的设计打开了许多对象句柄来访问 S3 对象。
前端集成到 DAOS 存储抽象层下的 Rados Gateway 中,请参阅 https://github.com/ceph/ceph/blob/main/src/rgw/rgw_sal_daos.cc

src/rgw/driver/daos/rgw_sal_daos.cc
int DaosObject::read
ds3_obj_read
int DaosObject::read(const DoutPrefixProvider* dpp, bufferlist& data,
uint64_t offset, uint64_t& size) {
ldpp_dout(dpp, 20) << "DEBUG: read" << dendl;
int ret = ds3_obj_read(data.append_hole(size).c_str(), offset, &size,
get_daos_bucket()->ds3b, ds3o, nullptr);
if (ret != 0) {
ldpp_dout(dpp, 0) << "ERROR: failed to read from daos object ("
<< get_bucket()->get_name() << ", " << get_key().get_oid()
<< "): ret=" << ret << dendl;
}
return ret;
}









16 changes: 16 additions & 0 deletions category/meta_on_ssd
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
https://docs.daos.io/v2.4/admin/md-on-ssd/

SSD 元数据第一阶段(技术预览)¶
DAOS 版本 2.4 包括SSD 元数据(第 1 阶段)代码路径的技术预览 ,以支持没有英特尔傲腾持久内存的 DAOS 服务器。

请参阅 DAOS Wiki 文章中关于 SSD 上的元数据设计 和 WAL 详细设计 的更多信息。

有关此新代码路径的演示,包括使用和不使用 PMem 的 DAOS 服务器的初始性能比较,可以在ISC 2023 IXPUG 研讨会 的 演示文稿DAOS Beyond PMem中找到 。


https://www.ixpug.org/events/isc23-ixpug-workshop

https://daosio.atlassian.net/wiki/spaces/DC/pages/11196923911/Metadata+on+SSDs

https://daosio.atlassian.net/wiki/spaces/DC/pages/11215339529/WAL+Detailed+Design

23 changes: 23 additions & 0 deletions readme
Original file line number Diff line number Diff line change
Expand Up @@ -2116,6 +2116,7 @@ crt_init_opt daos_crt_init_opt_get
dump_envariables 打印环境变量
start_rpcid 随机生成起始rpcid
d_tm_add_metric 添加指标等
crt_gdata.cg_credit_ep_ctx = credits -> #define CRT_DEFAULT_CREDITS_PER_EP_CTX (32)
prov_data_init 设置提供者属性,初始化上下文双向链表
D_INIT_LIST_HEAD cpg_crt_list 上下文列表
crt_hg_init 设置hg日志流, 可强制设置为debug
Expand Down Expand Up @@ -6188,3 +6189,25 @@ RF0 RF1 RF2

fuse
configure_fuse

回收: dmg pool create -z 10T test2 -P space_rb:5 -P reclaim:disabled


credits_available
cart限流机制, 发送个数-回复个数>32(默认), 则放入等待队列, 否则放入飞行队列直接发出去, 然后等待队列有插队机制, 比如心跳包, 可以直接插在前面, 有一个标记为控制
前一个请求发送完成后, 执行回调 ->crt_context_req_untrack -> 这个时候判断是否需要将等待队列中的请求移动到发送队列中



event:
static __thread bool ev_thpriv_is_init; 静态线程ev
daos_event_priv_get(daos_event_t **ev)
daos_event_init(&ev_thpriv, DAOS_HDL_INVAL, NULL) -> 初始化线程局部ev, 内部使用全局上下文和调度器
evx->evx_ctx = daos_eq_ctx;
evx->evx_sched = &daos_sched_g;
DAOS-51 客户端:为异步操作添加基本基础设施
- 将客户端 dtp 上下文移至事件队列,尽管每个人仍然有一个上下文
- 添加事件完成回调
- 修改dsm和dmg客户端RPC以支持同步和异步模式


0 comments on commit 2c1812e

Please sign in to comment.