中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ceph中librados接口怎么用

發布時間:2021-12-17 10:30:59 來源:億速云 閱讀:362 作者:小新 欄目:云計算

小編給大家分享一下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接口怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建宁县| 沾益县| 额尔古纳市| 尼勒克县| 内丘县| 青海省| 剑河县| 安徽省| 安达市| 大连市| 玛纳斯县| 瑞昌市| 平遥县| 宜昌市| 长治县| 桂阳县| 余庆县| 沿河| 锡林浩特市| 益阳市| 同德县| 察雅县| 镇雄县| 宽甸| 札达县| 宜川县| 五指山市| 库伦旗| 花莲县| 始兴县| 南汇区| 邯郸市| 陇西县| 泰和县| 静海县| 凤凰县| 东丽区| 高州市| 西宁市| 砀山县| 广水市|