FTI File Format¶
FTI-FF Structure¶
The file format basic structure, consists of a meta block and a data block:
+--------------+ +------------------------+
| | | |
| FB | | VB |
| | | |
+--------------+ +------------------------+
The
FB
(file block) holds meta data related to the file whereas theVB
(variable block) holds meta and actual data of the variables protected by FTI.
The
FB
has the following structure:
FB {
checksum // Hash of the VDB block in hex representation (33 bytes)
hash // Hash of FB without 'hash' in unsigned char (16 bytes)
ckptSize // Size of actual data stored in file
fs // Size of FB + VB
maxFs // Maximum size of FB + VB in group
ptFs // Size of FB + VB of partner process
timestamp // Time in ns of FB block creation
}
The
VB
block possesses the following sub structure:
|<-------------------------------------------------- VB -------------------------------------------------->|
# #
|<------------- VCB_1 --------------------------->| |<------------- VCB_1 --------------------------->|
# # # #
+-------------------------------------------------+ +-------------------------------------------------+
| +--------++-------------+ +--------------+ | | +--------++-------------+ +--------------+ |
| | || | | | | | | || | | | |
| | VMB_1 || VC_11 | ---- | VC_1k | | ---- | | VMB_n || VC_n1 | ---- | VC_nl | |
| | || | | | | | | || | | | |
| +--------++-------------+ +--------------+ | | +--------++-------------+ +--------------+ |
+-------------------------------------------------+ +-------------------------------------------------+
Where the
VMB_i
(variable meta data block) hold meta data related to the data chunk stored inVDB_ij
(variable chunk). The number of data chunks (e.g.k
andl
in the scetch), generally may differ. We refer to the setVMB_i
,VC_i1
, …,VC_ik
asVCB_i
(variable chunk block).The
VMB_i
have the following sub structure:
|<-------------- VMB_i ------------->|
# #
+-------++---------+ +----------+
| || | | |
| BMD_i || VMD_i1 | ---- | VMD_ij |
| || | | |
+-------++---------+ +----------+
Where the
BMD_i
(block meta data) have the following structure:
BMD_i {
numvars // Number of variable chunks in data block
dbsize // Size of entire block VCB_i (meta + actual data)
}
The
VMD_ij
have the following structure:
VMD_ij {
id // Id of protected variable the data chunk belongs to
idx // Index of element in FTI_Data corresponding to protected variable with id='id'
containerid // Id of container variable chunk is stored in
hascontent // Boolean value indicating if container holds data or not
dptr // Position of chunk in runtime-data (FTI_Data[idx].ptr + dptr)
fptr // Position of chunk in file
chunksize // Size of chunk stored in container
containersize // Total space in container
hash // Hash of 'VC_ij'
}