Project

General

Profile

Feature #20936

Multisite: compressed data sync

Added by Enming Zhang over 6 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

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
   }
  },
  ...
}

Also available in: Atom PDF