共計 2744 個字符,預計需要花費 7 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 ceph 中 librados 接口怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
rados_getxattr 獲取對象屬性
rados_getxattrs 獲取對象屬性列表
rados_getxattrs_next 從獲取的對象屬性列表中讀取值
rados_getxattrs_end 釋放 rados_getxattrs 獲取的指針
rados_setxattr 設置對象的自定義屬性
rados_rmxattr 刪除對象的自定義屬性
rados_stat 返回對象的時間、大小
rados_tmap_update
rados_tmap_put
rados_tmap_get
rados_tmap_to_omap
使用示例
#include rados/librados.hpp
#include string
#include list
int main(int argc, const char **argv)
{
int ret = 0 ;
/*
* Errors are not checked to avoid pollution.
* After each Ceph operation:
* if (ret 0) error_condition
* else success
*/
// Get cluster handle and connect to cluster
std::string cluster_name(ceph
std::string user_name(client.admin
librados::Rados cluster ;
cluster.init2(user_name.c_str(), cluster_name.c_str(), 0);
cluster.conf_read_file(/etc/ceph/ceph.conf
cluster.connect();
// IO context
librados::IoCtx io_ctx ;
std::string pool_name(data
cluster.ioctx_create(pool_name.c_str(), io_ctx);
// Write an object synchronously
librados::bufferlist bl;
std::string objectId(hw
std::string objectContent(Hello World!
bl.append(objectContent);
io_ctx.write(objectId, bl, objectContent.size(), 0);
// Add an xattr to the object.
librados::bufferlist lang_bl;
lang_bl.append(en_US
io_ctx.setxattr(objectId, lang , lang_bl);
// Read the object back asynchronously
librados::bufferlist read_buf;
int read_len = 4194304;
//Create I/O Completion.
librados::AioCompletion *read_completion = librados::Rados::aio_create_completion();
//Send read request.
io_ctx.aio_read(objectId, read_completion, read_buf, read_len, 0);
// Wait for the request to complete, and print content
read_completion- wait_for_complete();
read_completion- get_return_value();
std::cout Object name: objectId \n
Content: read_buf.c_str() std::endl ;
// Read the xattr.
librados::bufferlist lang_res;
io_ctx.getxattr(objectId, lang , lang_res);
std::cout Object xattr: lang_res.c_str() std::endl ;
// Print the list of pools
std::list std::string pools ;
cluster.pool_list(pools);
std::cout List of pools from this cluster handle std::endl ;
for (std::list std::string ::iterator i = pools.begin(); i != pools.end(); ++i)
std::cout *i std::endl;
// Print the list of objects
librados::ObjectIterator oit=io_ctx.objects_begin();
librados::ObjectIterator oet=io_ctx.objects_end();
std::cout List of objects from this pool std::endl ;
for(; oit!= oet; oit++) {
std::cout \t oit- first std::endl ;
}
// Remove the xattr
io_ctx.rmxattr(objectId, lang
// Remove the object.
io_ctx.remove(objectId);
// Cleanup
io_ctx.close();
cluster.shutdown();
return 0 ;
}
保存為 cephrados.cpp,編譯命令行如下
g++ cephrados.cpp -lrados -o cephrados
rados getxattr rbd.py lang -p data 顯示 data 池中對象 rbd.py 的擴展屬性 lang 的值
rados listxattr -p data rbd.py 顯示 data 池中對象 rbd.py 的擴展屬性, 如果沒有設置顯示為空
rados stat rbd.py -p data 顯示 data 池中對象 rbd.py 的大小、時間
以上是“ceph 中 librados 接口怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!