Files
rustfs/TODO.md
T
2025-03-11 16:12:34 +08:00

4.3 KiB
Raw Blame History

TODO LIST

基础存储

  • EC可用读写数量判断 Read/WriteQuorum
  • 优化后台并发执行,可中断, 传引用?
  • 小文件存储到metafile, inlinedata
  • 完善bucketmeta
  • 对象锁
  • 边读写边hash,实现reader嵌套
  • 远程rpc
  • 错误类型判断,程序中判断错误类型,如何统一错误
  • 优化xlmeta, 自定义msg数据结构
  • 优化io.reader 参考 GetObjectNInfo 方便io copy 如果 异步写,再平衡
  • 代码优化 使用范型?
  • 抽象出metafile存储

基础功能

  • 桶操作
    • 创建 CreateBucket
    • 列表 ListBuckets
      • 桶下面的文件列表 ListObjects
        • 简单实现功能
        • 优化并发读取
    • 删除
    • 详情 HeadBucket
  • 文件操作
    • 上传 PutObject
    • 大文件上传
      • 创建分片上传 CreateMultipartUpload
      • 上传分片 PubObjectPart
      • 提交完成 CompleteMultipartUpload
      • 取消上传 AbortMultipartUpload
    • 下载 GetObject
    • 删除 DeleteObjects
    • 版本控制
    • 对象锁
    • 复制 CopyObject
    • 详情 HeadObject
    • 对象预先签名(get、put、head、post

扩展功能

  • 用户管理
  • Policy管理
  • AK/SK分配管理
  • data scanner统计和对象修复
  • 桶配额
  • 桶只读
  • 桶复制
  • 桶事件通知
  • 桶公开、桶私有
  • 对象生命周期管理
  • prometheus对接
  • 日志收集和日志外发
  • 对象压缩
  • STS
  • 分层(阿里云、腾讯云、S3远程对接)

scp ./target/ubuntu22.04/release/rustfs.zip root@8.130.183.154:/ scp ./target/ubuntu22.04/release/rustfs.zip root@8.130.177.182:/ scp ./target/ubuntu22.04/release/rustfs.zip root@8.130.91.189:/ scp ./target/ubuntu22.04/release/rustfs.zip root@8.130.182.114:/

scp ./target/x86_64-unknown-linux-musl/release/rustfs root@8.130.183.154:/ scp ./target/x86_64-unknown-linux-musl/release/rustfs root@8.130.177.182:/ scp ./target/x86_64-unknown-linux-musl/release/rustfs root@8.130.91.189:/ scp ./target/x86_64-unknown-linux-musl/release/rustfs root@8.130.182.114:/

2025-03-11T06:18:50.011565Z DEBUG s3s::service: req: Request { method: PUT, uri: /rustfs/rpc/put_file_stream?disk=http://node2:9000/data/rustfs2&volume=.rustfs.sys/tmp&path=a45ade1a-e09b-4eb4-bac1-8b5f55f7d438/235da61f-a705-4f9a-aa21-7801d2eaf61d/part.1&append=false, version: HTTP/1.1, headers: {"accept": "/", "host": "node2:9000", "transfer-encoding": "chunked"}, body: Body { hyper: Body(Streaming) } } at /Users/weisd/.cargo/git/checkouts/s3s-58426f2d17c34859/ab139f7/crates/s3s/src/service.rs:81 in s3s::service::call with start_time: 2025-03-11 6:18:50.011550933 +00:00:00

2025-03-11T06:18:50.011603Z DEBUG s3s::ops: parsing path-style request, decoded_uri_path: "/rustfs/rpc/put_file_stream" at /Users/weisd/.cargo/git/checkouts/s3s-58426f2d17c34859/ab139f7/crates/s3s/src/ops/mod.rs:266 in s3s::service::call with start_time: 2025-03-11 6:18:50.011550933 +00:00:00

2025-03-11T06:18:50.011651Z DEBUG s3s::ops: body_changed: false, decoded_content_length: None, has_multipart: false at /Users/weisd/.cargo/git/checkouts/s3s-58426f2d17c34859/ab139f7/crates/s3s/src/ops/mod.rs:342 in s3s::service::call with start_time: 2025-03-11 6:18:50.011550933 +00:00:00

2025-03-11T06:18:50.011687Z WARN rustfs::admin::rpc: handle PutFile at rustfs/src/admin/rpc.rs:120 in s3s::service::call with start_time: 2025-03-11 6:18:50.011550933 +00:00:00

2025-03-11T06:18:50.011716Z DEBUG s3s::ops: custom route returns error, err: S3Error(Inner { code: InvalidArgument, message: Some("get query failed1 Error("missing field size")"), request_id: None, status_code: None, source: None, headers: None }) at /Users/weisd/.cargo/git/checkouts/s3s-58426f2d17c34859/ab139f7/crates/s3s/src/ops/mod.rs:227 in s3s::service::call with start_time: 2025-03-11 6:18:50.011550933 +00:00:00

2025-03-11T06:18:50.011751Z DEBUG s3s::service: res: Response { status: 400, version: HTTP/1.1, headers: {"content-type": "application/xml"}, body: Body { once: b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>InvalidArgumentget query failed1 Error("missing field size")" } }