ceph 版本:0.94
.7rbd命令操作的資源有volume(預設)、snap、lock三類資源
using rbd to create empty image
rbd create --size 1024000 test1
ceph/src/rbd.cc
>main(...)
[code section 定義一些後期使用到的例項及區域性變數]
[cs 提取傳入的引數]
>...) [全域性初始化工作]
[cs 解析輸入引數,並初始化部分區域性變數]
>...) [完成通用元件的初始化]
[cs 確定操作符,並初始化部分區域性變數]
[cs 檢查輸入引數是否合法]
>...) [初始化rados handler]
>12~25之間,即物件大小範圍4kb~32mb]
>do_create(...) [建立volume]
[location src/librbd/librbd.cc]
>rbd.create(...) or rbd.create3(...) [建立volume]
[location src/librbd/internal.cc]
>librbd::create(...) [為建立volume,設定feature]
>librbd::create(...) [建立volume]
>detect_format(...) [探測物件的格式(do not care)]
[location src/librados/librados.cc]
>io_ctx.stat(...) [檢查物件是否存在]
>stat(...)
...)
...)
rados rados(io_ctx)
>...)
>create_v1(...) [建立volume]
>...) [驗證pool]
>...) [新增image到directory中]
struct rbd_obj_header_ondisk header
>...) [初始化header]
>...) [寫入物件]
[注:image的header物件中儲存該物件的元資訊]
...)
...)
...)
...) or rbd.create(...)
...)
[location src/librados/librados.cc]
主要是例項化radosclient(dispatcher),相對於服務端的client。
rados.init_with_context(...)
>rados_create_with_context(...)
>...)
client->connect()
>...) [建立client端messenger層的例項]
>set_default_policy(...) [設定policy]
>...)
>init() [初始化效能計數器]
>add_dispatcher_tail(objecter)
>add_dispatcher_tail(this)
>start()
>...)
>start()
>connect()
獲取mon map
monclient.build_initial_monmap()
messenger->start()
docker 建立乙個簡單的image
1 mkdir hello world,建立乙個資料夾,cd hello world 進入資料夾,vim hello.c建立乙個c檔案 寫乙個簡單的方法,列印hello docker 2 編譯c檔案需要安裝gcc 使用 yum install gcc 和glibc static 使用 yum ins...
RBD 匯出乙個image
rbd 匯出乙個image。do export librbd image image,const char path image.stat info,sizeof info open path,o wronly o creat o excl,0644 new aioexportcontext thr...
建立乙個類
c 是一門物件導向的程式語言,而物件導向的基礎就是類 使用c 建立乙個student類 class student 學生類 輸出學生的資訊 void outputstudent void void student input char name,int age,int no void student...