Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Today each VOS instance has single associated “data blob” to store the bulk values, to support metadata on SSD, two more blobs will be introduced, one is named “VOS “meta blob” for storing VOS index and small values, the other is named “WAL blob” for storing WAL. Depending on the configuration schemes, VOS meta blob and WAL blob could reside in same SSD or separate SSDs, they could also share same SSD with data blob as well.

...

Meta blob layout

VOS Meta blob starts with a “VOS “meta blob header”, the remaining area is “VOS data “metadata area” which is filled by VOS indexes, small values and allocator heap.

  • The durable format of VOS meta blob header is defined as following:

Code Block
languagec
struct vosmeta_blob_header {
  uint32_t  vbhmbh_magic;
  uint32_t  vbhmbh_version;
  uuid_t    vbhmbh_vosmeta_devid;    /* VOSMeta SSD device ID */
  uuid_t    vbhmbh_wal_devid;    /* WAL device ID */
  uuid_t    vbhmbh_data_devid;   /* Data device ID */
  uint64_t  vbhmbh_vosmeta_blobid;   /* VOSMeta SPDK blob ID */
  uint64_t  vbhmbh_wal_blobid;   /* WAL SPDK blob ID */
  uint64_t  vbhmbh_data_blobid;  /* Data SPDK blob ID */
  uint32_t  vbhmbh_blk_bytes;    /* Block size for VOSmeta blob, in bytes */
  uint32_t  vbhmbh_hdr_blks;     /* VOSMeta blob header size, in blocks */
  uint64_t  vbhmbh_tot_blks;     /* VOSMeta blob capacity, in blocks */
  uint32_t  vbhmbh_vos_id;       /* VOSMeta target ID, per engine ID */
  uint16_t  vbhmbh_csum_type;    /* Checksum type */
  uint16_t  vbhmbh_csum_len;     /* Checksum length in bytes */
  uint8_t   vbhmbh_csum[0];      /* Checksum of the header */
};
  • The layout of VOS data metadata area (TBD)

WAL blob layout

WAL blob starts with a “WAL blob header”, the remaining area is used as a circular log to store WAL transactions.

...