Skip to content

Zff logical file layout

ph0llux edited this page Feb 15, 2024 · 3 revisions

Files under Zff are categorized into 5 different types:

  • Files
  • directories
  • Symbolic links
  • Hard links
  • special files (unix special files)

Under Zff, all extracted metadata for the individual files is stored in the file header.

The metadata regarding the dump (process) of the respective file is stored in the file footer.

The actual file data is then located in chunks. How the user data is stored, can be taken from the Data section. The chunked data in the data section can also be encrypted, compressed, etc.

Data section

File type: Directory

Name Type Length in bytes description
Chunk header Chunk header object Variable The chunk header for this symlink.
filenumbers Array/Vector of uint64 Variable An array which contains the appropriate filenumbers of all children of this directory.

More than one chunk header <-> filenumber array combination may occur if there is a very large number of files in the directory, or a very small chunk size is chosen. After all, the data is simply chunked.

File type: File

Name Type Length in bytes description
Chunk header Chunk header object Variable The chunk header for this symlink.
data Bytes Variable The chunked data itself.

This file contains only the data of this file. The data are chunked.

File type: Symlink

Name Type Length in bytes description
Chunk header Chunk header object Variable The chunk header for this symlink.
Path to linked file String Variable The path to the file where this symlink links to.

More than one chunk header <-> "Path to linked file" array combination may occur if there is a very large number of files in the directory, or a very small chunk size is chosen. After all, the data is simply chunked.

File type: hardlink

Name Type Length in bytes description
Chunk header Chunk header object Variable The chunk header for this hardlink.
file number uint64 8 contains the file number to the file of the twin object

File type: special files

Name Type Length in bytes description
Chunk header Chunk header object Variable The chunk header for this special file.
rdev-id uint64 8 The device ID of the originally (special) file.
special filetype flag uint8 1 0 if fifo-, 1 if char-, 2 if it's a block-device and 3 if it is a socket.
Clone this wiki locally