Feature #20936
Multisite: compressed data sync
0%
Description
Currently, during multisite data sync, the objects are transferred in original size, even if the compressed objects in master zone, they are decompressed before being transferred to slave zone.
In this PR, I implement the function of transferring compressed object during multisite data sync, which will reduce the consumption of network bandwidth and lower the data sync cost.
The compressed transmission can be enabled by the configuration item "rgw_enable_compressed_transmission" in ceph/src/common/options.cc, which is set to false by default.
If the "rgw_enable_compressed_transmission" is set to true in slave zone, the objects, which are compressed stored in master zone, will skip the decompression process and transfer to slave zone in compressed state.
In slave zone, the objects will be stored in the same state with the master zone, it is to say, if the objects are compressed stored in master zone, they will also be stored in compressed state in slave zone; if the objects are un-compressed stored in master zone, they will also be stored in original size in slave zone.
The result of bucket stats is:
#small object#
master zone:
{
"bucket": "1111",
"zonegroup": "4f520309-b853-4542-9d96-81e8b73114bf",
...
"id": "f9385fb3-dfdf-4dbf-9425-592799e8eed0.4447.1",
"marker": "f9385fb3-dfdf-4dbf-9425-592799e8eed0.4447.1",
...
"usage": {
"rgw.main": {
"size": 1882,
"size_actual": 4096,
"size_utilized": 857,
"size_kb": 2,
"size_kb_actual": 4,
"size_kb_utilized": 1,
"num_objects": 1
}
},
...
}
slave zone:
{
"bucket": "1111",
"zonegroup": "4f520309-b853-4542-9d96-81e8b73114bf",
...
"id": "f9385fb3-dfdf-4dbf-9425-592799e8eed0.4447.1",
"marker": "f9385fb3-dfdf-4dbf-9425-592799e8eed0.4447.1",
...
"usage": {
"rgw.main": {
"size": 1882,
"size_actual": 4096,
"size_utilized": 857,
"size_kb": 2,
"size_kb_actual": 4,
"size_kb_utilized": 1,
"num_objects": 1
}
},
...
}
#object compressed in multi-chunks#
master zone:
{
"bucket": "888",
"zonegroup": "3fce63a6-8a07-4aef-bd45-f87b1d9d2eed",
...
"id": "b01e3924-13b6-407e-99a7-f748191779ff.4345.1",
"marker": "b01e3924-13b6-407e-99a7-f748191779ff.4345.1",
...
"usage": {
"rgw.main": {
"size": 15562977,
"size_actual": 15564800,
"size_utilized": 15464597,
"size_kb": 15199,
"size_kb_actual": 15200,
"size_kb_utilized": 15103,
"num_objects": 1
}
},
...
}
slave zone:
{
"bucket": "888",
"zonegroup": "3fce63a6-8a07-4aef-bd45-f87b1d9d2eed",
...
"id": "b01e3924-13b6-407e-99a7-f748191779ff.4345.1",
"marker": "b01e3924-13b6-407e-99a7-f748191779ff.4345.1",
...
"usage": {
"rgw.main": {
"size": 15562977,
"size_actual": 15564800,
"size_utilized": 15464597,
"size_kb": 15199,
"size_kb_actual": 15200,
"size_kb_utilized": 15103,
"num_objects": 1
}
},
...
}
#multipart uploaded object#
master zone:
{
"bucket": "999",
"zonegroup": "3fce63a6-8a07-4aef-bd45-f87b1d9d2eed",
...
"id": "b01e3924-13b6-407e-99a7-f748191779ff.4345.2",
"marker": "b01e3924-13b6-407e-99a7-f748191779ff.4345.2",
...
"usage": {
"rgw.main": {
"size": 60904375,
"size_actual": 60907520,
"size_utilized": 60875815,
"size_kb": 59477,
"size_kb_actual": 59480,
"size_kb_utilized": 59450,
"num_objects": 1
},
...
},
...
}
non-master zone:
{
"bucket": "999",
"zonegroup": "3fce63a6-8a07-4aef-bd45-f87b1d9d2eed",
...
"id": "b01e3924-13b6-407e-99a7-f748191779ff.4345.2",
"marker": "b01e3924-13b6-407e-99a7-f748191779ff.4345.2",
...
"usage": {
"rgw.main": {
"size": 60904375,
"size_actual": 60907520,
"size_utilized": 60875815,
"size_kb": 59477,
"size_kb_actual": 59480,
"size_kb_utilized": 59450,
"num_objects": 1
}
},
...
}