1、元數據
元數據信息包括:用戶、桶和桶實例。其中:
用戶:主要指對象存儲的用戶信息。
Bucket:主要維護bucket名稱和bucket實例id的映射信息。
Bucket.instance:維護Bucket實例信息。
查看用戶的元數據,如下所示:
radosgw-管理元數據列表用戶:
radosgw-admin元數據獲取用戶:testid:
radosgw-管理元數據列表桶:
radosgw-管理元數據獲取存儲桶:第壹個:
radosgw-管理元數據列表bucket.instance:
radosgw-admin元數據獲取bucket . instance:first:{ bucket _ id }
2、桶指數
桶索引主要維護壹個桶中某個對象的索引信息。壹個bucket對應於壹個或多個radosobjects(在bucket shards下)。它維護壹個key-val的映射結構,映射存儲在object的omap(rocksdb)中。Key對應的rgw對象和Val是壹些關於rgw對象的元數據信息,在檢索存儲在bucket中的對象時需要用到。Omap還包含壹個頭,它存儲bucket帳戶信息,比如bucket中對象的數量、總大小等等。
3、數據
rgw對象的內容存儲在壹個或多個radosobjects中。Rados對象分為頭部和尾部。標頭最多可以容納512KB的數據。如果rgw對象的大小小於512KB,那麽只有頭。否則,剩余的數據將被條帶化,並根據集群radosobject的大小劃分為多個rados對象。
使用命名空間隔離池中的多個存儲空間:Pool: {zone}.rgw.meta:
對於池:{zone}.rgw.log還包含多個命名空間:
當在對象存儲中檢索壹個對象時,它將包含三個元素:user、bucket、object。用戶主要由RGW用來獲取認證ACL用戶id的;Bucket和obejct用於確定對象在池中的位置。
用戶
用戶數據存儲在{zone}.rgw.meta:users.uid中,如下所示:
包含兩部分:ups3:用戶自身信息;Ups3.buckets:用戶所屬的存儲桶。
Ups3:用戶基本信息,ACL/Bucekt額度/用戶額度等。對應於rgw_common.h中定義的結構RGWUserInfo
Ups3。buckets:bucket,用戶所屬的鍵值結構,存儲在omap結構中;對應的struct cls_user_bucket_entry在rgw_common.h中定義,數據操作如下:
通過{uid}找出用戶擁有哪些存儲桶。桶,這些桶有以下基本數據。
水桶
存儲桶信息存在於{zone}.rgw.meta:root中,如下所示:
第壹:記錄bucket和bucket_instance_id的對應關系,對應的數據結構:struct RGWBucketEntryPoint。
. bucket . meta . first:1 C60 b 268-0a5d-4718-ad02-E4 b5 BCE 824 BF . 44166.4:bucket實例;尋址方式:。對應的結構:struct RGWBucketInfo。
Bucket ACL和IAM策略存儲在Bucket實例對象的attr中。如下所示:
按如下方式獲取存儲桶ACL和IAM策略數據:
目標
桶索引:桶中包含的對象信息存儲在壹個或多個對象的omap中。這個omap是壹個鍵值結構,鍵是對象的名字,值對應struct rgw _ bucket _ dir _ entry:cls _ rgw _ types . h。
存儲桶索引對象:
如下所示:
在這個桶下,有壹個對象:ntp.conf:
檢索值:
Omap頭記錄了以下統計信息:
對象存儲對象的數據存儲在池中:{zone}。rgw.buckets.data .對象的組成和尋址可以分為以下兩類:
壹個RGW對象可以由壹個或多個radosobjects組成。第壹個對象是這個RGW的head對象,主要包含壹些元數據信息,比如manifest、ACLs、contenttype、etag、自定義元數據等。這些元數據存儲在這個head對象的xattr中。清單描述了這個rgw對象的分發。同時,這個head對象最多可以容納額外的4MB數據。如果RGW對象的大小小於4MB,那麽這個RGW對象不會被碎片化,只有這個頭對象。
按如下方式搜索:
目前bucket下有壹個ntp.conf,< 4MB .檢索其清單:
如上:
Max_head_size:表示頭部對象的最大尺寸;
Head_size:表示當前頭部對象的大小;
前綴:用於在rados中尋址分區對象。
RGW對象ACL:
上傳壹個大於4MB的RGW對象,檢索其清單信息:
清單信息:
根據清單檢索對象:
對於壹個大的RGW對象,它會被切割成幾個獨立的RGW Object並上傳,這就是所謂的multipart。多路徑的優點是斷點續傳。s3接口默認切割大小為15MB。
這裏上傳壹個60MB的對象。
分四部分上傳,查看rados對象:
包含三種對象,頭部,多部分和陰影。
多部分下的清單:
所有對象檢索都是基於上述清單信息來構建對象索引的:
在上面的信息中,這個RGW對象的大小是48128000字節,分為四段,三段15MB,最後壹段是920KB。同時,rados集群中存儲的每個段的條帶大小為4MB。因此,15MB段也分為四個radosobjects、壹個多部分頭和三個陰影段。壹個920KB的數據段只有壹個多部分報頭。
. rgw.root:
它包含區域、區域組和領域等信息。