Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new service: Add native ceph rados support #4035

Open
Tracked by #5
Xuanwo opened this issue Jan 20, 2024 · 21 comments
Open
Tracked by #5

new service: Add native ceph rados support #4035

Xuanwo opened this issue Jan 20, 2024 · 21 comments

Comments

@Xuanwo
Copy link
Member

Xuanwo commented Jan 20, 2024

Inspired by https://ceph.io/en/news/blog/2024/ceph-a-journey-to-1tibps/

It must be interesting for opendal to have native ceph rados support

@Xuanwo Xuanwo changed the title Ceph RADOS new service: Add native ceph rados support Jan 20, 2024
@Xuanwo
Copy link
Member Author

Xuanwo commented Jan 20, 2024

We have a Rust interface for Ceph at https://github.com/ceph/ceph-rust, but it's currently not well-maintained.

@Lancern
Copy link

Lancern commented Jan 23, 2024

Wanna give it a try. I don't know if anyone is working on this, but I have some progress in my own testing fork.

The ceph-rust crate is almost unusable for several reasons:

  • It is not actively maintained for several years;
  • Its Rust interface lacks several key features that are indeed required by OpenDAL:
    • Configurations cannot be set until you have connected to the remote cluster;
    • No asynchronous support.

However its raw C library bindgen seems usable. I have built a new binding for testing upon its raw bindgen.

@Xuanwo
Copy link
Member Author

Xuanwo commented Jan 23, 2024

Wow, that's perfect. Thanks for your work!

@pcmid
Copy link

pcmid commented Jul 19, 2024

I discovered this project and issue a few months ago, and very interested in it. Recently I wrote a wrapper librados library with asynchronization, which is still a very early version.

Later I will try to support native ceph rados based on this library.

@guojidan
Copy link

Maybe we don't need to maintain a library by ourselves. We just modify the official library by contributing to the official repository. 🤔

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 29, 2024

Maybe we don't need to maintain a library by ourselves. We just modify the official library by contributing to the official repository. 🤔

Hi, @guojidan, That would be perfect. Do you know anyone from the Ceph community interested in helping maintain or mentor this project?

@guojidan
Copy link

I am a contributor of Ceph and now I need to use the official library to write my own project, so maybe I will implement it. but I have been quite busy recently with moving to a new city. 😄

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 29, 2024

but I have been quite busy recently with moving to a new city. 😄

Congratulations! Wishing you happiness in your new city.

I am a contributor of Ceph and now I need to use the official library to write my own project, so maybe I will implement it.

Happy to know that. Could you find someone interested in maintaining ceph-rust? I believe both @Lancern and @pcmid are interested in joining the development.

Additionally, if ceph-rust lacks a maintainer, I am willing to help by removing contribution blocks and reviewing PRs.

@Lancern
Copy link

Lancern commented Jul 29, 2024

I'm definitely willing to help here :) Half a year ago I wrote some experimental implementation and I can share my code if anyone is interested (but it may be a bit out of date since I haven't updated it for half a year).

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 29, 2024

Hi @Lancern, I'm not familiar with the underlying details of Ceph. Could you tell me how complex it would be to develop pure native Rust bindings for the Ceph RADOS API (without the need for librados.so)?

@pcmid
Copy link

pcmid commented Jul 29, 2024

I am also very interested in developing librados implemented in pure rust. But maybe this is a long-term project.

@Lancern
Copy link

Lancern commented Jul 29, 2024

Could you tell me how complex it would be to develop pure native Rust bindings for the Ceph RADOS API (without the need for librados.so)?

@Xuanwo I'm not very familiar with the inner workings of librados but I believe it would require a lot of effort to have a pure Rust implementation. librados is a very fundamental library and some part of this library is implemented in the very core of ceph to deal with protocol details such as message exchanges, authentication, and encryption. I couldn't find a thorough document on the protocol itself besides the official one at https://docs.ceph.com/en/latest/dev/rados-client-protocol/, which is quite incomplete. We may need a guy who knows this better if we decide to implement librados in pure Rust.

@guojidan
Copy link

guojidan commented Jul 30, 2024

The official library has already implemented a main layer. We can develop based on the official library, but maybe the PR of the Ceph official library is merged very slowly because the Ceph team no longer maintained. so I think we should fork the official library for our own maintenance and development.

@guojidan
Copy link

guojidan commented Jul 30, 2024

maybe the official library mainly has four problems:

  1. no async supported.
  2. lack some new api.
  3. some Rust syntax is too old.
  4. the config file should remain the same as that of OpenDAL.

And maybe we do not need to care about the more detailed implementation of Librados. Ceph-rust is just a wrapper.

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 30, 2024

The official library has already implemented a main layer. We can develop based on the official library, but maybe the PR of the Ceph official library is merged very slowly because the Ceph team no longer maintained. so I think we should fork the official library for our own maintenance and development.

Absolutely agree. I'm currently considering establishing a communication channel with the Ceph team to help us directly maintain ceph-rust. Do you have any idea for helping this?

@guojidan
Copy link

Ah, ceph-rust is not maintained by the Ceph team. It seems like a personal project and the Ceph team just forked this project.

And I don't know who can maintain this project in the Ceph team.

@Xuanwo
Copy link
Member Author

Xuanwo commented Jul 30, 2024

Ah, ceph-rust is not maintained by the Ceph team. It seems like a personal project and the Ceph team just forked this project.

I believe a donation has been made. Someone developed ceph-rust and then donated it to Ceph. The ceph crate also links to ceph/ceph-rust.

@Xuanwo
Copy link
Member Author

Xuanwo commented Aug 19, 2024

I contacted the original author of ceph-rust. He mentioned that after the project was donated to the Ceph community, it lost all activity. He suggested that we should fork it instead.

@Lancern
Copy link

Lancern commented Sep 2, 2024

No means to push here but any progress on this?

@Xuanwo
Copy link
Member Author

Xuanwo commented Sep 2, 2024

No means to push here but any progress on this?

Let me try again. If this attempt fails, we'll start a new fork instead.

@Xuanwo
Copy link
Member Author

Xuanwo commented Sep 3, 2024

Hi, @Lancern @pcmid @guojidan, we did it! I now have write permission for ceph-rust and have established the #ceph-rust channel. We can continue our development upstream now!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants