ceph的數據存儲之路(9) -----object的attr和omap操做

這裏有一個ceph的原則,就是全部存儲的無論是塊設備、對象存儲、文件存儲最後都轉化成了底層的對象object,這個object包含3個元素dataxattromapdata是保存對象的數據,xattr是保存對象的擴展屬性,每一個對象文件均可以設置文件的屬性,這個屬性是一個key/value值對,可是受到文件系統的限制,key/value對的個數和每一個value的大小都進行了限制。若是要設置的對象的key/value不能存儲在文件的擴展屬性中,還存在另一種方式保存omapomap其實是保存到了key/vaule  值對的數據庫levelDB中,在這裏value的值限制要比xattr中好的多。算法

    一開始不太明白 key/value是作什麼的?在ceph中起到什麼做用? 這裏要說明的是這些key/value是保存對象的元數據相關信息,這些元數據相關信息是能夠單首創建和設置的,等於對象存儲的擴展,支持屬性的值對存儲。這個做用就是提供給ceph內部使用,暫時用處不大。數據庫

 

1、塊存儲設備元數據管理spa

對於塊存儲,在存儲的過程當中主要是塊的相關信息。塊的元數據信息管理,建立一個塊設備後會建立一個默認的rbd的元數據文件。對象

 

0001:這裏首先建立一個塊設備,該塊設備的大小爲100M擴展

0002:使用命令查詢這個rbd的詳細信息。object

0008:這裏會有一個叫作rbd1.rbd的對象,他不是用來存儲數據的,並且用來保存元數據信息。真實的元數據信息不會保存在這個文件中,而是保存在這個文件的xattr或者omap中。meta

0010:這裏有個叫作rbd_directory的對象,該對象中會保存全部建立的塊設備名字。map

 

2、對象存儲的元數據管理im

對象存儲存在數據

0001:列出當前pool中存儲的對象。在對象存儲中仍是封裝一層叫作bucket,由bucket隔離object對象。

0006:查看一個objectone對象的狀態信息,包含名字、建立時間、size

0008:本身建立一個objectone對象的屬性,該屬性keyownervaluexyj

0009:查詢一個objectone對象的全部屬性,發現這時只有剛剛建立的owner

0011:查詢objectone對象的owner屬性值,這裏能夠顯示出剛剛設置的xyj

 

3、文件系統cephfs

這裏cephfs就很少說了,由於目前廣大羣衆都說cephfs在生產環境中存在一些問題。cephfs 有一個叫作mds的節點,該節點負責管理namespace,可是數據塊的映射則交給了crush算法,cephfs的元數據一樣會以對象的方式存儲在rados中,有一個叫作meta的文件夾中。一樣這些頂層的對象,能夠經過key/value存儲來自文件系統設置的屬性集。

相關文章
相關標籤/搜索