mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 10:51:54 -04:00
1907 lines
48 KiB
Groff
1907 lines
48 KiB
Groff
.TH "SnapRAID Log Format" 1
|
|
.SH NAME
|
|
snapraid_log \- SnapRAID Log Format
|
|
.SH DESCRIPTION
|
|
This document describes the structured log tags output by SnapRAID,
|
|
which are designed to be used by tools monitoring the SnapRAID
|
|
processing state. The tags provide information in an easy\-to\-parse
|
|
format, ideal for automation and integration.
|
|
.PP
|
|
To capture these structured log tags, you must use the \`\-\-log\` option
|
|
with SnapRAID.
|
|
.PP
|
|
You can direct the output to a specific file, or force the output to
|
|
the standard output or standard error using the special arguments
|
|
\`>&1\` or \`>&2\`. Note that these arguments often need to be quoted on
|
|
the command line to prevent the shell from interpreting them.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.RS 4
|
|
snapraid status \-\-log \[dq]>&2\[dq]
|
|
.PD 0
|
|
.PD
|
|
.RE
|
|
.PP
|
|
The output tags strictly adhere to the following format:
|
|
.PP
|
|
NAME:VALUE:VALUE:VALUE...<EOL>
|
|
.PD 0
|
|
.PD
|
|
.TP
|
|
.B NAME
|
|
This is the primary tag identifier, always a lowercase string
|
|
without spaces (e.g., \`summary\`, \`block\`, \`info_time\`).
|
|
.TP
|
|
.B VALUE
|
|
Following the \`NAME\`, these can be additional sub\-identifiers,
|
|
descriptive names (like a disk name), or numeric/string data
|
|
values. They are separated by a colon \`:\`.
|
|
.TP
|
|
.B <EOL>
|
|
Each tag is terminated by an end\-of\-line character.
|
|
.PP
|
|
This document provides a summary of the tags generated by SnapRAID.
|
|
For the most detailed and up\-to\-date information regarding the meaning
|
|
and context of the values, it is recommended to check the source
|
|
code\'s \`log_tag()\` statements.
|
|
.PP
|
|
When a path is output, it is always escaped using a backslash (\\) as
|
|
the escape character.
|
|
.PP
|
|
The following characters are escaped into sequences:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I The colon
|
|
is escaped to \\d.
|
|
.HP 4
|
|
.I The newline
|
|
is escaped to \\n.
|
|
.HP 4
|
|
.I The carriage return
|
|
is escaped to \\r.
|
|
.HP 4
|
|
.I The backslash
|
|
is escaped to \\\\.
|
|
.PD
|
|
.RE
|
|
.PP
|
|
Some tags are output only when the \`\-\-gui\` or \`\-\-gui\-verbose\` option
|
|
is used. They provide extra verbose state and runtime progress only
|
|
useful for a GUI interface.
|
|
.PP
|
|
Integer values are marked as \`uint\` when they are unsigned and as \`int\`
|
|
when they are signed. However, for practical purposes you can treat
|
|
all of them as signed integers.
|
|
All integer values should be assumed to be 64 bits wide, regardless
|
|
of the signed/unsigned marker.
|
|
Floating point values are marked as \`float\`.
|
|
.SH CONFIGURATION TAGS
|
|
These tags report the memory usage and global configuration.
|
|
.TP
|
|
.B conf:file:<path>
|
|
Configuration file loaded (escaped).
|
|
.TP
|
|
.B conf:missing:
|
|
Operating without a configuration file.
|
|
.TP
|
|
.B blocksize:<bytes>
|
|
The configured block size in bytes (uint).
|
|
.TP
|
|
.B data:<disk_name>:<dir>:<uuid>
|
|
The data disks as defined in the configuration file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The assigned name of the disk.
|
|
.HP 4
|
|
.I <dir>
|
|
The directory entry point of the disk.
|
|
.HP 4
|
|
.I <uuid>
|
|
The UUID of the filesystem containing the dir.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B mode:<raidname>
|
|
The RAID mode used. One of \`par1\`, \`par2\`, \`par3\`, \`par4\`,
|
|
\`par5\`, \`par6\` or \`parz\`. The number indicates the maximum
|
|
number of simultaneous disk failures the array can withstand.
|
|
.TP
|
|
.B <parity_level>[/<split_index>]:<path>:<uuid>
|
|
The parity files as defined in the configuration file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <parity_level>[/<split_index>]
|
|
One of \`parity\`, \`2\-parity\`,
|
|
..., \`6\-parity\`. This corresponds to the level of redundancy.
|
|
In case of split parity, the parity name is followed
|
|
by \`/N\` to indicate the split index, where N starts
|
|
from 0. The \`/0\` is always omitted.
|
|
.HP 4
|
|
.I <path>
|
|
The path (escaped).
|
|
.HP 4
|
|
.I <uuid>
|
|
The UUID of the filesystem containing the path.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B pool:<dir>
|
|
The configured dir to the pool mount point (escaped).
|
|
This is the optional mount point for the \'pool\' feature.
|
|
.TP
|
|
.B share:<dir>
|
|
The configured dir to the pool mount point (escaped).
|
|
This is the optional mount point for the \'share\' feature.
|
|
.TP
|
|
.B autosave:<bytes>
|
|
If the autosave feature is enabled, and after how many bytes
|
|
(uint). This specifies the interval for content file saving.
|
|
.TP
|
|
.B filter:<pattern>
|
|
All the active filters with their patterns. These patterns
|
|
exclude specific files or directories from the SnapRAID array.
|
|
.TP
|
|
.B filter:nohidden:
|
|
If the no\-hidden filter is enabled, meaning hidden files/directories
|
|
(starting with \'.\') are excluded from the array.
|
|
.SH CONTENT TAGS
|
|
These tags report the information stored in the content file.
|
|
.TP
|
|
.B content:<path>
|
|
The absolute path to a content file being used (escaped).
|
|
Content files store the metadata (like file hashes and timestamps)
|
|
for the array.
|
|
.TP
|
|
.B content_write:<path>
|
|
The absolute path to a content file being written (escaped).
|
|
You will see multiple writes as the content file is saved in
|
|
multiple copies.
|
|
.TP
|
|
.B content_parity:<parity_level>[/<split_index>]:<uuid>:<path>:<size>
|
|
The parity files as stored in the content file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <parity_level>[/<split_index>]
|
|
One of \`parity\`, \`2\-parity\`,
|
|
..., \`6\-parity\`. This corresponds to the level of redundancy.
|
|
In case of split parity, the parity name is followed
|
|
by \`/N\` to indicate the split index, where N starts
|
|
from 0. The \`/0\` is always omitted.
|
|
.HP 4
|
|
.I <uuid>
|
|
The UUID of the disk containing the path as stored
|
|
in the content file.
|
|
.HP 4
|
|
.I <path>
|
|
The path (escaped).
|
|
.HP 4
|
|
.I <size>
|
|
The size of the parity file (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B content_data:<disk_name>:<uuid>
|
|
The data disk as stored in the content file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
Name of the data disk.
|
|
.HP 4
|
|
.I <uuid>
|
|
The UUID of the disk filesystem as stored in the
|
|
content file.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B content_allocation:<disk_name>:<size>:<free_size>
|
|
The size of disk and parity as stored in the content file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
Name of the data or parity disk.
|
|
.HP 4
|
|
.I <size>
|
|
The size of the data in the disk or parity (uint).
|
|
.HP 4
|
|
.I <free_size>
|
|
The free size in the disk or parity (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B content_info:<kind>:<counter>
|
|
The counters in the content file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <kind>
|
|
One of file, hardlink, symlink, dir_empty,
|
|
block_bad, block_rehash, block.
|
|
.HP 4
|
|
.I <counter>
|
|
The number of elements (uint)
|
|
.PD
|
|
.RE
|
|
.SH DIAGNOSTICS TAGS
|
|
.TP
|
|
.B version:<version>
|
|
The version of SnapRAID run.
|
|
.TP
|
|
.B unixtime:<time>
|
|
The current time in the unix format (uint), representing
|
|
seconds since the epoch.
|
|
.TP
|
|
.B time:<YYYY\-MM\-DD HH:MM:SS>
|
|
The current time in human format.
|
|
.TP
|
|
.B command:<command>
|
|
The command run. One of \`sync\`, \`scrub\`, \`check\`, \`fix\`, \`status\`, ...
|
|
.TP
|
|
.B argv:<number>:<argument>
|
|
All the arguments of the executable command. The 0 one is the
|
|
executable run.
|
|
.TP
|
|
.B memory:used:<bytes>
|
|
The total memory currently used by the application in bytes (uint).
|
|
.TP
|
|
.B memory:block:<bytes>
|
|
Size of the internal \`snapraid_block\` structure in bytes (uint).
|
|
.TP
|
|
.B memory:extent:<bytes>
|
|
Size of the internal \`snapraid_extent\` structure in bytes (uint).
|
|
.TP
|
|
.B memory:file:<bytes>
|
|
Size of the internal \`snapraid_file\` structure in bytes (uint).
|
|
.TP
|
|
.B memory:link:<bytes>
|
|
Size of the internal \`snapraid_link\` structure in bytes (uint).
|
|
.TP
|
|
.B memory:dir:<bytes>
|
|
Size of the internal \`snapraid_dir\` structure in bytes (uint).
|
|
.SH SCAN TAGS
|
|
These tags report detected differences between the filesystem and the
|
|
content file. They are output for every discovered change.
|
|
.TP
|
|
.B scan:equal:<disk_name>:<path>
|
|
A file, link, or directory is equal (unchanged).
|
|
No action is required for this item.
|
|
Only produced when \`\-\-gui\-verbose\` option is used.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
Name of the data disk.
|
|
.HP 4
|
|
.I <path>
|
|
Path to the file/link relative to the disk mount
|
|
(escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B scan:add:<disk_name>:<path>
|
|
A new file or link was found that is not in the content file.
|
|
This item will be added to the array in a \`sync\`.
|
|
.TP
|
|
.B scan:remove:<disk_name>:<path>
|
|
A file or link has been removed from the filesystem
|
|
since the last sync.
|
|
.TP
|
|
.B scan:update:<disk_name>:<path>
|
|
A file or link has been updated (size, timestamp, or link target changed).
|
|
This item will have its content data blocks re\-hashed in a \`sync\`.
|
|
.TP
|
|
.B scan:move:<disk_name>:<old_path>:<new_path>
|
|
A file was moved on the same disk. This is an efficient operation
|
|
that only updates the path metadata without re\-hashing blocks.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <old_path>
|
|
The old path to the file (escaped).
|
|
.HP 4
|
|
.I <new_path>
|
|
The new path to the file (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B scan:copy:<disk_name>:<path>:<source_disk>:<source_path>
|
|
A new file was found to be a copy of a file from another disk.
|
|
This is detected by matching file size and timestamp, and is an
|
|
efficient operation that avoids re\-hashing all blocks.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <source_disk>
|
|
The original file\'s disk.
|
|
.HP 4
|
|
.I <source_path>
|
|
The original file\'s location (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B scan:restore:<disk_name>:<path>
|
|
A file\'s inode has changed but not its date\-time and size,
|
|
which suggests the file may be restored from backup.
|
|
The file won\'t be re\-hashed in \`sync\` as its precomputed hash
|
|
is assumed to be correct.
|
|
.PP
|
|
These tags provide a final count of all detected changes.
|
|
.TP
|
|
.B summary:equal:<count>
|
|
Total number of files and links whose metadata and data match
|
|
the current parity (uint).
|
|
.TP
|
|
.B summary:added:<count>
|
|
Total number of brand new files and links not present in the
|
|
last sync (uint).
|
|
.TP
|
|
.B summary:removed:<count>
|
|
Total number of files and links that existed in the last sync
|
|
but are now missing (uint).
|
|
.TP
|
|
.B summary:updated:<count>
|
|
Total number of existing files where the timestamp or size has
|
|
changed (uint).
|
|
.TP
|
|
.B summary:moved:<count>
|
|
Total number of files relocated to a new path or renamed but
|
|
retaining the same inode (uint).
|
|
.TP
|
|
.B summary:copied:<count>
|
|
Total number of new files created by copying an existing
|
|
protected file to a new path (uint).
|
|
.TP
|
|
.B summary:restored:<count>
|
|
Total number of new files matching a parity entry by
|
|
name/time/size but with a new inode (uint).
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is
|
|
one of the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I equal
|
|
Indicates that no differences were found.
|
|
The array is already synchronized.
|
|
.HP 4
|
|
.I diff
|
|
Indicates that differences were found.
|
|
The array needs a \`sync\` operation.
|
|
.PD
|
|
.RE
|
|
.SH GENERAL PROGRESS AND EXECUTION TAGS
|
|
These tags are used to report the runtime processing of the commands
|
|
\`sync\`, \`scrub\`, \`check\` and \`fix\`.
|
|
Only produced when \`\-\-gui\` option is used.
|
|
.TP
|
|
.B run:begin:<blockbegin>:<blockend>:<count>
|
|
A tag indicating the start of the command execution.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <blockbegin>
|
|
Starting block index (uint).
|
|
.HP 4
|
|
.I <blockend>
|
|
Ending block index + 1 (uint).
|
|
.HP 4
|
|
.I <count>
|
|
Number of blocks to process. It may be less
|
|
than <blockend> \- <blockbegin> + 1 if some blocks
|
|
are going to be skipped (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B run:end
|
|
A zero\-argument tag indicating the end of the command execution.
|
|
.TP
|
|
.B run:pos:<blockidx>:<blockdone>:<sizedone>:<perc>:<eta>:<speed_mbs>:<cpu>:<elapsed>
|
|
Detailed progress information during command execution.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <blockidx>
|
|
Current block index position processed (uint).
|
|
.HP 4
|
|
.I <blockdone>
|
|
Number of blocks processed (uint).
|
|
.HP 4
|
|
.I <sizedone>
|
|
Current size processed (uint).
|
|
.HP 4
|
|
.I <perc>
|
|
Completion percentage (uint).
|
|
.HP 4
|
|
.I <eta>
|
|
Estimated time to completion in seconds (uint).
|
|
.HP 4
|
|
.I <speed_mbs>
|
|
Data processing speed in MB/s (uint).
|
|
.HP 4
|
|
.I <cpu>
|
|
CPU usage percentage (uint).
|
|
.HP 4
|
|
.I <elapsed>
|
|
Elapsed time in seconds (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B sigint:<blockidx>:<msg>
|
|
A user interruption (e.g., Ctrl+C) was signaled. The process
|
|
is gracefully aborting.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <blockidx>
|
|
Current block index position (uint).
|
|
.HP 4
|
|
.I <msg>
|
|
Text message exactly as it\'s printed on screen.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B msg:<level>:<msg>
|
|
Messages printed to the screen.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <level>
|
|
One of \`fatal\`, \`error\`, \`expected\`, \`status\`,
|
|
\`progress\` or \`verbose\`.
|
|
.HP 4
|
|
.I fatal
|
|
A fatal error occurred. Program will abort after this
|
|
message.
|
|
.HP 4
|
|
.I error
|
|
A generic error condition that doesn\'t prevent the
|
|
program to continue.
|
|
.HP 4
|
|
.I expected
|
|
An expected error condition. At present it
|
|
happens only when using the \`\-m\` option with files
|
|
expected missing.
|
|
.HP 4
|
|
.I status
|
|
A status message, usually providing context or a summary.
|
|
.HP 4
|
|
.I progress
|
|
A progress message, often part of an ongoing operation.
|
|
.HP 4
|
|
.I verbose
|
|
A verbose informative message, only shown in verbose mode.
|
|
.HP 4
|
|
.I <msg>
|
|
Text message exactly as it\'s printed on screen.
|
|
.PD
|
|
.RE
|
|
.SH THERMAL TAGS
|
|
The following tags are produced by the thermal monitoring functions
|
|
when SnapRAID is processing, typically during operations that involve
|
|
disk access.
|
|
.TP
|
|
.B thermal:ambient:device:<hwmon_dir>:<name>:<temp_file>:<label>:<temp>
|
|
Logs a temperature reading found in the system using the Linux
|
|
/sys/class/hwmon interface. Only present in Linux.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <hwmon_dir>
|
|
The hwmon directory name (e.g., hwmon0).
|
|
.HP 4
|
|
.I <name>
|
|
The name of the hwmon device (e.g., k10temp).
|
|
.HP 4
|
|
.I <temp_file>
|
|
The temperature file name (e.g., temp1_input).
|
|
.HP 4
|
|
.I <label>
|
|
The label associated with the temperature sensor (e.g., Tdie).
|
|
.HP 4
|
|
.I <temp>
|
|
The temperature reading in degrees Celsius.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:ambient:candidate:<temp>
|
|
Reports a temperature reading that is a candidate for the
|
|
ambient temperature, used in the heating model calculation.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <temp>
|
|
The candidate temperature in degrees Celsius.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:system:candidate:<temp>
|
|
Logs a temperature reading from a connected disk that is being
|
|
considered as a candidate for determining the ambient system
|
|
temperature.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <temp>
|
|
The current temperature read from the disk
|
|
(uint, degrees Celsius).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:system:final:<temp>
|
|
Logs the final ambient system temperature calculated. This
|
|
value is the lowest valid temperature observed among all
|
|
candidates, representing the room temperature.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <temp>
|
|
The calculated ambient temperature in degrees Celsius.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:current:<disk_name>[/<split_index>]:<device>:<temp>
|
|
Logs the most recent temperature reading for a specific disk
|
|
device.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>[/<split_index>]
|
|
The configured name of the disk.
|
|
In case of split parity, the parity name is followed
|
|
by \`/N\` to indicate the split index, where N starts
|
|
from 0. The \`/0\` is always omitted.
|
|
.HP 4
|
|
.I <device>
|
|
The unique device ID (uint).
|
|
.HP 4
|
|
.I <temp>
|
|
The current temperature read from the disk in degrees
|
|
Celsius.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:highest:<temp>
|
|
Logs the highest temperature observed among all monitored disks
|
|
in the current measurement cycle. This is used for thermal
|
|
throttling.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <temp>
|
|
The highest temperature observed in degrees Celsius.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:heat:<disk_name>[/<split_index>]:<device>:<count>:<data_points>
|
|
Logs the entire history of temperature data points collected
|
|
so far for a specific disk, used for fitting the heating model.
|
|
Only monotone increasing temperatures are included in the history.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <device>
|
|
The unique device ID (uint).
|
|
.HP 4
|
|
.I <count>
|
|
The total number of collected data points (uint).
|
|
.HP 4
|
|
.I <data_points>
|
|
A comma\-separated list of temperature/time pairs.
|
|
Each pair is formatted as <temp>/<time_offset>.
|
|
.HP 4
|
|
.I <temp>
|
|
Temperature reading in degrees Celsius.
|
|
.HP 4
|
|
.I <time_offset>
|
|
Time offset from the start of the thermal
|
|
monitoring (uint, seconds).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:params:<disk_name>[/<split_index>]:<device>:<k_heat>:<t_ambient>:<t_steady>:<rmse>:<r_squared>:<max_error>
|
|
Logs the estimated parameters for the exponential heating model
|
|
(fit using least squares) and associated quality metrics for a
|
|
specific disk.
|
|
The model is: T(t) = T_steady \- (T_steady \- T_0) e^(\-kt),
|
|
where T_0 is the initial temperature.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <device>
|
|
The unique device ID (uint).
|
|
.HP 4
|
|
.I <k_heat>
|
|
The heating rate constant, k (float).
|
|
.HP 4
|
|
.I <t_ambient>
|
|
The ambient temperature, T_ambient (float).
|
|
.HP 4
|
|
.I <t_steady>
|
|
The estimated steady\-state temperature, T_steady (float),
|
|
which is the maximum expected temperature of the disk.
|
|
.HP 4
|
|
.I <rmse>
|
|
Root Mean Square Error of the fit (float).
|
|
.HP 4
|
|
.I <r_squared>
|
|
Coefficient of determination (R^2) of the fit (float).
|
|
.HP 4
|
|
.I <max_error>
|
|
Maximum absolute error of the fit (float).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:spindown
|
|
Indicates that the thermal alarm limit has been reached, and
|
|
the process is initiating a disk spindown to begin the
|
|
cooldown procedure, preventing overheating.
|
|
.TP
|
|
.B thermal:cooldown:<sleep_time>
|
|
Indicates the duration of the cooldown waiting period after
|
|
spindown.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <sleep_time>
|
|
The total time the system will wait for
|
|
cooldown (uint, seconds).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B thermal:spinup
|
|
Indicates that the cooldown period is complete, and the disks
|
|
are being spun back up to resume the operation.
|
|
.SH COMMAND STATUS TAGS
|
|
This section describes the tags output with the \`status\` command.
|
|
.SS Summary Tags
|
|
These tags provide general information about the array configuration
|
|
and overall state.
|
|
.TP
|
|
.B summary:block_size:<uint>
|
|
The size of a block in bytes. This is the unit of parity
|
|
protection.
|
|
.TP
|
|
.B summary:parity_block_count:<uint>
|
|
The total number of blocks allocated for all parity levels
|
|
combined.
|
|
.TP
|
|
.B summary:parity_block_total:<name>:<uint>
|
|
Total blocks available for a specific parity level (e.g.,
|
|
\`parity\`, \`2\-parity\`).
|
|
.TP
|
|
.B summary:parity_block_free:<name>:<uint>
|
|
Free blocks available for a specific parity level.
|
|
.TP
|
|
.B summary:parity_block_free_min:<uint>
|
|
The minimum number of free blocks across all parity levels.
|
|
This determines the maximum size of data that can be added.
|
|
.TP
|
|
.B summary:file_count:<uint>
|
|
Total number of files in the array.
|
|
.TP
|
|
.B summary:file_block_count:<uint>
|
|
Total number of data blocks used by files.
|
|
.TP
|
|
.B summary:fragmented_file_count:<uint>
|
|
Total number of fragmented files, meaning files whose blocks
|
|
are not contiguous.
|
|
.TP
|
|
.B summary:excess_fragment_count:<uint>
|
|
Total number of excess fragments (one less than the total fragments).
|
|
This is a measure of data fragmentation overhead.
|
|
.TP
|
|
.B summary:zerosubsecond_file_count:<uint>
|
|
Total number of files with a zero sub\-second timestamp. This
|
|
can occur on certain filesystems and may affect change detection.
|
|
.TP
|
|
.B summary:file_size:<uint>
|
|
Total size of all files in bytes.
|
|
.TP
|
|
.B summary:parity_size:<uint>
|
|
Total size of allocated parity blocks in bytes.
|
|
.TP
|
|
.B summary:parity_size_max:<uint>
|
|
Maximum possible parity size (allocated + min free) in bytes.
|
|
This is the effective maximum protection size.
|
|
.TP
|
|
.B summary:hash:<name>
|
|
The current hash algorithm in use (e.g., \`sha256\`).
|
|
.TP
|
|
.B summary:prev_hash:<name>
|
|
The previous hash algorithm used, if a rehash is in progress.
|
|
.TP
|
|
.B summary:best_hash:<name>
|
|
The best hash algorithm for optimal performance based on
|
|
system capabilities.
|
|
.TP
|
|
.B summary:total_wasted:<uint>
|
|
Total wasted space (space on data disks exceeding parity
|
|
capacity) in bytes.
|
|
.TP
|
|
.B summary:total_used:<uint>
|
|
Total used space by data files in bytes.
|
|
.TP
|
|
.B summary:total_free:<uint>
|
|
Total free space (usable by data) in bytes, limited by parity
|
|
capacity.
|
|
.TP
|
|
.B summary:total_use_percent:<uint>
|
|
Overall array use percentage.
|
|
.TP
|
|
.B summary:has_unsynced:<uint>
|
|
Count of blocks that are unsynced (need a sync), meaning their
|
|
parity data is out of date.
|
|
.TP
|
|
.B summary:has_unscrubbed:<uint>
|
|
Count of blocks that are unscrubbed (just synced), meaning they
|
|
have never been verified since the last sync.
|
|
.TP
|
|
.B summary:has_rehash:<uint>
|
|
Count of blocks needing a rehash, usually due to a content file
|
|
update or hash algorithm change.
|
|
.TP
|
|
.B summary:has_bad:<count>:<first>:<last>
|
|
Count of bad blocks, along with the first and last bad block index.
|
|
Bad blocks indicate data or parity corruption.
|
|
.TP
|
|
.B summary:scrub_oldest_days:<uint>
|
|
Days ago the oldest block was last scrubbed.
|
|
.TP
|
|
.B summary:scrub_median_days:<uint>
|
|
Days ago the median block was last scrubbed.
|
|
.TP
|
|
.B summary:scrub_newest_days:<uint>
|
|
Days ago the newest block was last scrubbed.
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is
|
|
one of the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I ok
|
|
No issues. The array is fully synchronized and healthy.
|
|
.HP 4
|
|
.I bad
|
|
The array has some blocks marked as bad.
|
|
The array needs a \`\-e fix\` and and a \`\-p bad scrub\`
|
|
operation.
|
|
.HP 4
|
|
.I unsynced
|
|
The array has an interrupted sync.
|
|
The array needs another \`sync\` operation.
|
|
.PD
|
|
.RE
|
|
.SS Per\-Disk Tags
|
|
These tags provide statistics for individual data disks. <name>
|
|
is the disk name.
|
|
.TP
|
|
.B summary:disk_file_count:<name>:<uint>
|
|
Number of files on the disk.
|
|
.TP
|
|
.B summary:disk_block_count:<name>:<uint>
|
|
Number of blocks used by files on the disk.
|
|
.TP
|
|
.B summary:disk_fragmented_file_count:<name>:<uint>
|
|
Number of fragmented files on the disk.
|
|
.TP
|
|
.B summary:disk_excess_fragment_count:<name>:<uint>
|
|
Number of excess fragments on the disk.
|
|
.TP
|
|
.B summary:disk_zerosubsecond_file_count:<name>:<uint>
|
|
Number of files with zero sub\-second timestamp on the disk.
|
|
.TP
|
|
.B summary:disk_file_size:<name>:<uint>
|
|
Total size of files on the disk in bytes.
|
|
.TP
|
|
.B summary:disk_block_allocated:<name>:<uint>
|
|
Highest block index used on the disk + 1.
|
|
.TP
|
|
.B summary:disk_block_total:<name>:<uint>
|
|
Total blocks on the disk (physical size).
|
|
.TP
|
|
.B summary:disk_block_free:<name>:<uint>
|
|
Free blocks on the disk.
|
|
.TP
|
|
.B summary:disk_block_max_by_space:<name>:<uint>
|
|
Total blocks by disk space (used + free blocks), representing
|
|
the physical limit of the disk.
|
|
.TP
|
|
.B summary:disk_block_max_by_parity:<name>:<uint>
|
|
Total blocks limited by parity space (parity size + min parity
|
|
free blocks).
|
|
This is the logical limit imposed by the parity files.
|
|
.TP
|
|
.B summary:disk_block_max:<name>:<uint>
|
|
Maximum usable blocks (minimum of \`..._by_space\` and \`..._by_parity\`).
|
|
.TP
|
|
.B summary:disk_space_wasted:<name>:<int>
|
|
Wasted space on the disk in bytes (positive if disk is larger
|
|
than usable parity space).
|
|
.TP
|
|
.B summary:disk_used:<name>:<uint>
|
|
Used space on the disk in bytes.
|
|
.TP
|
|
.B summary:disk_free:<name>:<uint>
|
|
Free usable space on the disk in bytes, limited by \`disk_block_max\`.
|
|
.TP
|
|
.B summary:disk_use_percent:<name>:<uint>
|
|
Disk use percentage relative to \`disk_block_max\`.
|
|
.SS File Timestamp Tags
|
|
These tags list files with zero sub\-second timestamps.
|
|
.TP
|
|
.B zerosubsecond:<disk_name>:<file_path>
|
|
Lists files that have a zero sub\-second timestamp.
|
|
Up to 50 are logged per disk.
|
|
.SS Block Information Tags
|
|
Status of all the blocks of the array.
|
|
.TP
|
|
.B block_count:<uint>
|
|
The total number of blocks in the array.
|
|
.TP
|
|
.B block:<index>:<time>:<used>:<unsynced>:<bad>:<rehash>
|
|
Status of a specific block.
|
|
Only produced when \`\-\-gui\-verbose\` option is used.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <index>
|
|
Block index.
|
|
.HP 4
|
|
.I <time>
|
|
Last scrub time (Unix timestamp). A value of 0 means
|
|
the block has never been scrubbed.
|
|
.HP 4
|
|
.I <used>
|
|
\`used\` if the block contains data, otherwise empty.
|
|
.HP 4
|
|
.I <unsynced>
|
|
\`unsynced\` if the block needs a sync, otherwise empty.
|
|
.HP 4
|
|
.I <bad>
|
|
\`bad\` if the block has errors, otherwise empty.
|
|
.HP 4
|
|
.I <rehash>
|
|
\`rehash\` if the block needs a rehash, otherwise empty.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B block_noinfo:<index>:<used>:<unsynced>
|
|
Status of an unused block (no info recorded) in the content file.
|
|
Only produced when \`\-\-gui\-verbose\` option is used.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <index>
|
|
Block index.
|
|
.HP 4
|
|
.I <used>
|
|
\`used\` if the block contains data, otherwise empty.
|
|
.HP 4
|
|
.I <unsynced>
|
|
\`unsynced\` if the block needs a sync, otherwise empty.
|
|
.PD
|
|
.RE
|
|
.SS Scrub History Tags
|
|
These tags provide details on the scrub/sync time distribution.
|
|
.TP
|
|
.B info_count:<uint>
|
|
Total number of info records about past scrub and sync
|
|
operations stored in the content file.
|
|
.TP
|
|
.B info_time:<time>:<count>:<status>
|
|
All the info records.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <time>
|
|
Unix timestamp of the scrub/sync.
|
|
.HP 4
|
|
.I <count>
|
|
Number of blocks processed at this timestamp.
|
|
.HP 4
|
|
.I <status>
|
|
\`scrubbed\` (for blocks verified to be correct) or
|
|
\`new\` (for synced blocks that haven\'t been scrubbed yet).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B scrub_graph_range:<max_columns>:<max_height>
|
|
Dimensions of the scrub history graph obtained from the
|
|
\`info_time\` records. This provides the boundary for the
|
|
precomputed graph data available in the \`scrub_graph_bar\` tags.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <max_columns>
|
|
The number of columns in the graph (constant
|
|
GRAPH_COLUMN).
|
|
.HP 4
|
|
.I <max_height>
|
|
The maximum height (peak count) of blocks found
|
|
in any column (the highest sum of scrubbed and new blocks).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B scrub_graph_bar:<index>:<days_ago>:<scrubbed>:<new>
|
|
Data for a column of the scrub history graph. Each column
|
|
represents a time period.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <index>
|
|
Column index. From 0 to max_columns \- 1.
|
|
.HP 4
|
|
.I <days_ago>
|
|
Days ago for this column\'s time range.
|
|
.HP 4
|
|
.I <scrubbed>
|
|
Count of scrubbed blocks in that day range.
|
|
.HP 4
|
|
.I <new>
|
|
Count of newly synced (unscrubbed) blocks in that day range.
|
|
.PD
|
|
.RE
|
|
.SH COMMAND SYNC/SCRUB TAGS
|
|
Tags specific for the \`sync\` and \`scrub\` commands.
|
|
Also the error tags are possible.
|
|
.SS Summary Tags
|
|
These tags provide summary statistics at the end of the command.
|
|
.TP
|
|
.B hash_summary:error_file:<count>
|
|
Logs the total count of file\-related errors that caused a
|
|
block to be skipped during the hashing phase. These are often
|
|
due to file changes (missing, size/time change) during the
|
|
sync operation. This happens only in \`sync\`.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
Total number of file errors (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:error_file:<count>
|
|
Logs the total count of file\-related errors encountered during
|
|
the process (e.g., missing files, file attribute changes).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of file errors encountered (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:error_io:<count>
|
|
Logs the total count of input/output errors encountered on
|
|
data or parity disks.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of I/O errors encountered (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:error_data:<count>
|
|
Logs the total count of \`silent data errors\` (data blocks
|
|
not matching their expected hash) encountered during the sync
|
|
process.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of silent data errors encountered (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is
|
|
one of the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I ok
|
|
No issues. The array is fully synchronized and healthy.
|
|
.HP 4
|
|
.I alert
|
|
Incomplete. Some files were skipped due to modifications
|
|
during execution or permission issues. No hardware risk.
|
|
.HP 4
|
|
.I error
|
|
Critical failure. Indicates serious issues like I/O failures
|
|
or silent data corruption. Requires immediate hardware
|
|
or filesystem inspection.
|
|
.PD
|
|
.RE
|
|
.SH COMMAND CHECK/FIX TAGS
|
|
Tags specific for the \`check\` and \`fix\` commands.
|
|
Also the error tags are possible.
|
|
.SS Fixed/Recovered Tags
|
|
These tags log successful repairs during fix operations.
|
|
.TP
|
|
.B fixed:<block_pos>:<disk_name>:<file_path>:<msg>
|
|
Indicates that a file was successfully fixed using parity data.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <block_pos>
|
|
The block position being processed (uint).
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed size\`, \`Fixed data error at position...\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B parity_fixed:<block_pos>:<parity>:<msg>
|
|
Indicates that corrupted parity data was successfully
|
|
recomputed and written.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <block_pos>
|
|
The block position being processed (uint).
|
|
.HP 4
|
|
.I <parity>
|
|
The name of the parity level (e.g., \`parity\`, \`2\-parity\`).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed data error\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B empty_fixed:<disk_name>:<file_path>:<msg>
|
|
Logs successful recreation of a missing or corrupted empty file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed empty file\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B hardlink_fixed:<disk_name>:<link_path>:<msg>
|
|
Logs successful recreation of a hard link during fix operation.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <link_path>
|
|
The hard link path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed hardlink error\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B symlink_fixed:<disk_name>:<link_path>:<msg>
|
|
Logs successful recreation of a symbolic link during fix operation.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <link_path>
|
|
The symlink path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed symlink error\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B dir_fixed:<disk_name>:<dir_path>:<msg>
|
|
Logs successful recreation of a missing directory during fix
|
|
operation.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <dir_path>
|
|
The directory path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the fix
|
|
(e.g., \`Fixed dir error\`).
|
|
.PD
|
|
.RE
|
|
.SS Unrecoverable Error Tags
|
|
These tags log errors that could not be recovered.
|
|
.TP
|
|
.B unrecoverable:<block_pos>:<disk_name>:<file_path>:<msg>
|
|
Indicates that a block error could not be fixed due to
|
|
insufficient parity or other recovery limitations.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <block_pos>
|
|
The block position being processed (uint).
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the problem
|
|
(e.g., \`Unrecoverable error at position <file_pos>\`,
|
|
\`Unrecoverable unsynced error at position <file_pos>\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B collision:<disk_name>:<file_path>:<collision_path>:<msg>
|
|
Logs that the modification time was not set on a recovered file to
|
|
avoid inode collision with another file.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <collision_path>
|
|
The path of the colliding file (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the problem
|
|
(e.g., \`Not setting modification time to avoid inode collision\`).
|
|
.PD
|
|
.RE
|
|
.SS File Status Tags
|
|
These tags log the final status of files after processing.
|
|
.TP
|
|
.B status:unrecoverable:<disk_name>:<file_path>
|
|
Indicates that a file has unrecoverable errors and was renamed to
|
|
\`.unrecoverable\` (in fix mode) or cannot be recovered (in check mode).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B status:recovered:<disk_name>:<file_path>
|
|
Logs that a file was successfully recovered during fix operation.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B status:damaged:<disk_name>:<file_path>
|
|
Indicates that a file is damaged (in audit\-only mode, e.g., using \`check\`).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B status:recoverable:<disk_name>:<file_path>
|
|
Logs that a file has errors but could be recovered in fix mode.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B status:correct:<disk_name>:<file_path>
|
|
Indicates that a file passed all checks successfully (verbose mode only).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to disk root (escaped).
|
|
.PD
|
|
.RE
|
|
.SS Summary Tags
|
|
These tags provide summary statistics at the end of the command.
|
|
.TP
|
|
.B summary:error:<error_count>
|
|
Logs the total number of errors encountered.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <error_count>
|
|
Total number of errors (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:error_recovered:<recovered_count>
|
|
Logs the total number of errors successfully recovered (fix mode only).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <recovered_count>
|
|
Number of recovered errors (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:error_unrecoverable:<unrecoverable_count>
|
|
Logs the total number of unrecoverable errors (not in audit\-only mode).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <unrecoverable_count>
|
|
Number of unrecoverable errors (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is one of
|
|
the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I ok
|
|
Indicates that the operation completed with no errors.
|
|
.HP 4
|
|
.I recovered
|
|
Indicates that the operation completed with all
|
|
errors successfully recovered (fix mode only).
|
|
.HP 4
|
|
.I recoverable
|
|
Indicates that errors were found but are all
|
|
recoverable (check mode only).
|
|
.HP 4
|
|
.I unrecoverable
|
|
Indicates that unrecoverable errors were
|
|
found.
|
|
.HP 4
|
|
.I error
|
|
Indicates that errors were found (audit\-only mode).
|
|
.PD
|
|
.RE
|
|
.SH COMMAND LIST TAGS
|
|
This section describes the tags output with the \`list\` command.
|
|
.SS List Tags
|
|
These tags log details about individual files and links processed during
|
|
the listing operation.
|
|
.TP
|
|
.B file:<disk_name>:<subpath>:<size>:<mtime_sec>:<mtime_nsec>:<inode>
|
|
Logs details for a regular file found on a disk.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The configured name of the disk.
|
|
.HP 4
|
|
.I <subpath>
|
|
The path of the file relative to the disk\'s root
|
|
(escaped).
|
|
.HP 4
|
|
.I <size>
|
|
The size of the file in bytes (uint).
|
|
.HP 4
|
|
.I <mtime_sec>
|
|
The file\'s modification time in seconds since the
|
|
Epoch (int).
|
|
.HP 4
|
|
.I <mtime_nsec>
|
|
The file\'s modification time nanosecond component
|
|
(uint).
|
|
.HP 4
|
|
.I <inode>
|
|
The file\'s inode number (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B link_<type>:<disk_name>:<subpath>:<linkto>
|
|
Logs details for a link found on a disk. The \`<type>\` component
|
|
varies based on the kind of link.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <type>
|
|
The type of link, one of: \`hardlink\`, \`symlink\`,
|
|
\`symdir\` (symlink to a directory), \`junction\`
|
|
(Windows\-specific reparse point).
|
|
.HP 4
|
|
.I <disk_name>
|
|
The configured name of the disk (string).
|
|
.HP 4
|
|
.I <subpath>
|
|
The path of the link relative to the disk\'s root
|
|
(escaped).
|
|
.HP 4
|
|
.I <linkto>
|
|
The target path of the link (escaped).
|
|
.PD
|
|
.RE
|
|
.SS Summary Tags
|
|
These tags log final statistics about the entire listing operation.
|
|
.TP
|
|
.B summary:file_count:<count>
|
|
Logs the total number of regular files processed.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of files (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:file_size:<size>
|
|
Logs the total size of all regular files processed.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <size>
|
|
The cumulative size of all files (uint, bytes).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:link_count:<count>
|
|
Logs the total number of links processed (hardlinks, symlinks,
|
|
symdirs, junctions).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of links (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:exit:ok
|
|
Indicates a successful completion of the listing operation.
|
|
Note that if a fatal error happens, the program will abort,
|
|
and you won\'t get this tag.
|
|
.SH COMMAND DUP TAGS
|
|
This section describes the tags output with the \`dup\` command.
|
|
.SS Duplicate Tags
|
|
These tags log information about detected duplicate files and provide
|
|
a summary of the duplicate finding process. The content hash of the
|
|
whole file is used to determine duplicates.
|
|
.TP
|
|
.B dup:<diskname1>:<file_path1>:<diskname2>:<file_path2>:<size>: dup
|
|
Logs the information about a pair of duplicate files found.
|
|
The first file listed is the one just processed, and the second
|
|
file is the previously processed file that has the same content hash.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <diskname1>
|
|
The configured name of the disk containing the
|
|
newly processed duplicate file.
|
|
.HP 4
|
|
.I <file_path1>
|
|
The path of the newly processed duplicate file
|
|
relative to its disk\'s mount point (escaped).
|
|
.HP 4
|
|
.I <diskname2>
|
|
The configured name of the disk containing the
|
|
previously processed file that is the duplicate
|
|
of \`<file_path1>\`.
|
|
.HP 4
|
|
.I <file_path2>
|
|
The path of the previously processed duplicate file
|
|
relative to its disk\'s mount point (escaped).
|
|
.HP 4
|
|
.I <size>
|
|
The size of the duplicate file in bytes (uint). This
|
|
size corresponds to the file \`<file_path2>\`.
|
|
.PD
|
|
.RE
|
|
.SS Summary Tags
|
|
These tags provide a final summary of the duplicate finding process.
|
|
.TP
|
|
.B summary:dup_count:<count>
|
|
Logs the total number of duplicate files found. A file is counted
|
|
as a duplicate if its hash matches a hash already seen.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total count of duplicate files (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:dup_size:<size>
|
|
Logs the total size of all duplicate files found. This size is
|
|
the sum of the sizes of all files considered duplicates.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <size>
|
|
The total size of duplicate files in gigabytes (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is one of
|
|
the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I unique
|
|
Indicates that no duplicate files were found.
|
|
.HP 4
|
|
.I dup
|
|
Indicates that at least one duplicate file was found.
|
|
.PD
|
|
.RE
|
|
.SH COMMAND POOL TAGS
|
|
This section describes the tags output with the \`pool\` command.
|
|
.TP
|
|
.B summary:link_count:<count>
|
|
Logs the total number of links created (symlinks, junctions).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <count>
|
|
The total number of links (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B summary:exit:ok
|
|
Indicates a successful completion of the pool operation.
|
|
Note that if a fatal error happens, the program will abort,
|
|
and you won\'t get this tag.
|
|
.SH COMMAND REHASH TAGS
|
|
This section describes the tags output with the \`rehash\` command.
|
|
.SS Summary Tags
|
|
These tags provide a final summary of the rehash scheduling process.
|
|
.TP
|
|
.B summary:exit:<status>
|
|
Logs the overall exit status of the command. The \`status\` is one of
|
|
the following:
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I scheduled
|
|
Indicates that a rehash operation has
|
|
been successfully scheduled. The rehash will be performed
|
|
incrementally in future \`sync\` or \`scrub\` commands.
|
|
.HP 4
|
|
.I already_in_progress
|
|
Indicates that that a rehash is already
|
|
in progress and cannot be scheduled again. This causes the
|
|
program to exit with a fatal error.
|
|
.HP 4
|
|
.I not_required
|
|
Indicates that the current hash algorithm is
|
|
already the \`best hash\` for the platform, and thus
|
|
a rehash is not required. This causes the program to
|
|
exit with a fatal error.
|
|
.PD
|
|
.RE
|
|
.SH COMMAND SMART AND PROBE TAGS
|
|
This section describes the tags output by the \`smart\` and \`probe\`
|
|
commands. The main difference between the two is that \`probe\` doesn\'t
|
|
spin up the disk, so it won\'t be able to get all attributes if the
|
|
disk is spun down. The \`smart\` command, instead, will always get all
|
|
attributes, but with the risk of spinning up all disks.
|
|
.PP
|
|
Note that a \`<disk_name>\` may be associated with more \`<device_file>\`,
|
|
in case the logical disk uses more physical disks. In such a case,
|
|
you\'ll see multiple \`<attr>\` and \`<smart>\` tags for the same
|
|
\`<disk_name>\` but with different \`<device_file>\`. The exception is the
|
|
\`stat\` attrbute that is cumulative for all the devices part of the
|
|
disk.
|
|
.PP
|
|
In case of split parity, the parity name is followed by \`/N\` to indicate
|
|
the split index, where N starts from 0. The \`/0\` is always omitted.
|
|
.SS Attributes
|
|
Tags logging specific disk identification and attribute values.
|
|
.TP
|
|
.B smart:<device_file>:<disk_name>[/<split_index>]
|
|
Logs the start of the SMART report for a device.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <device_file>
|
|
The file path of the device (e.g., /dev/sdb).
|
|
.HP 4
|
|
.I <disk_name>[/<split_index>]
|
|
The configured name of the disk.
|
|
In case of split parity, the parity name is followed
|
|
by \`/N\` to indicate the split index, where N starts
|
|
from 0. The \`/0\` is always omitted.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:serial:<serial_number>
|
|
Logs the disk\'s serial number.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <serial_number>
|
|
The disk\'s serial number (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:family:<family>
|
|
Logs the disk\'s model family string.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <family>
|
|
The disk\'s model family identifier (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:model:<model>
|
|
Logs the disk\'s model string.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <model>
|
|
The disk\'s model identifier (escaped).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:afr:<afr>:<prob>
|
|
Logs the estimated Annual Failure Rate (AFR) and the
|
|
probability of at least one failure in the next year based on
|
|
SMART attributes. The AFR is calculated using the SMART
|
|
attributes (5, 187, 188, 197, 198).
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <afr>
|
|
The computed Annual Failure Rate (the average number
|
|
of failures you expect in a year) (float).
|
|
.HP 4
|
|
.I <prob>
|
|
The probability of at least one failure in the
|
|
next year (float).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:size:<size_bytes>
|
|
Logs the size of the disk.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <size_bytes>
|
|
The disk size in bytes (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:error:<error_count>
|
|
Logs the total error count.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <error_count>
|
|
The total error count (uint).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:rotationrate:<rate>
|
|
Logs the disk\'s rotation rate.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <rate>
|
|
The rotation rate. A value of 0 indicates a
|
|
solid\-state drive (SSD) or other non\-rotating medium.
|
|
A value of 1 indicates a rotational disk of unknown
|
|
precise speed. Values greater than 1 indicate the
|
|
rotational speed in RPM.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:flags:<flags_decimal>:<flags_hex>
|
|
Logs the SMART status flags from the \`smartctl\` utility.
|
|
Per the smartctl manpage, these flags are bit\-mapped
|
|
to indicate specific issues like \`Command line did not parse\`,
|
|
\`Device could not be opened\`, or \`SMART status check
|
|
returned \'DISK FAILING\'\`.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <flags_decimal>
|
|
The raw flags value (uint, decimal).
|
|
.HP 4
|
|
.I <flags_hex>
|
|
The raw flags value (uint, hexadecimal).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:<id>:<value_decimal>:<value_hex>
|
|
Logs the raw value of any assigned SMART attribute.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <id>
|
|
The SMART attribute ID (uint).
|
|
.HP 4
|
|
.I <value_decimal>
|
|
The raw attribute value (uint, decimal).
|
|
.HP 4
|
|
.I <value_hex>
|
|
The raw attribute value (uint, hexadecimal).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:power:active
|
|
Logs that the device was confirmed to be in an active power
|
|
state after a status probe.
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:power:standby
|
|
Logs that the device was confirmed to be in a standby/spun\-down
|
|
state.
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:power:up
|
|
Logs a successful spin\-up operation via direct O_DIRECT
|
|
read.
|
|
.TP
|
|
.B attr:<device_file>:<disk_name>[/<split_index>]:power:down
|
|
Logs a successful spin\-down operation initiated via the
|
|
smartctl command.
|
|
.TP
|
|
.B stat:<disk_name>:<access_number>
|
|
Logs the total number of read and write accesses done on the
|
|
disk. This is a cumulative value that include all the devices
|
|
and split of the disk.
|
|
Comparing this number at different times, you can detect if the
|
|
disk was used during that time.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <access_number>
|
|
Total number of accesses (uint).
|
|
.PD
|
|
.RE
|
|
.SS Summary
|
|
Tags logging the overall failure probabilities for the array.
|
|
.TP
|
|
.B summary:array_failure:<array_afr>:<array_prob>
|
|
Logs the total estimated failure rate for the entire array
|
|
(sum of individual disk AFRs) and the probability of at least
|
|
one failure in the next year.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <array_afr>
|
|
The sum of AFRs of all disks in the array (the
|
|
average number of failures you expect in a year) (float).
|
|
.HP 4
|
|
.I <array_prob>
|
|
The probability of at least one failure in
|
|
the next year (float).
|
|
.PD
|
|
.RE
|
|
.SH DEVICE STATUS TAGS
|
|
These tags log the lifecycle of hardware interactions and external
|
|
command execution with the \`smartctl\` command.
|
|
.TP
|
|
.B device:<device_file>:<disk_name>[/<split_index>]:shell
|
|
Logs a failure in the command shell execution environment.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <device_file>
|
|
The system path to the device node.
|
|
.HP 4
|
|
.I <disk_name>[/<split_index>]
|
|
The configured name of the disk.
|
|
In case of split parity, the parity name is followed
|
|
by \`/N\` to indicate the split index, where N starts
|
|
from 0. The \`/0\` is always omitted.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B device:<device_file>:<disk_name>[/<split_index>]:error:<errno>
|
|
Logs a low\-level system error during direct file operations.
|
|
This is triggered when open(), read(), or close()
|
|
calls fail during a spin\-up attempt.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <errno>
|
|
The standard integer error number provided by
|
|
the OS.
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B device:<device_file>:<disk_name>[/<split_index>]:error:abort
|
|
Logs that an external process (smartctl) failed to complete
|
|
normally, such as being terminated by a signal rather than
|
|
exiting.
|
|
.TP
|
|
.B device:<device_file>:<disk_name>[/<split_index>]:exit:<exit_code>
|
|
Logs that the external command (smartctl) returned a non\-zero
|
|
exit code that was not explicitly recognized as a valid state.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <exit_code>
|
|
The integer exit status returned by the
|
|
process (int).
|
|
.PD
|
|
.RE
|
|
.SH ERROR TAGS
|
|
These tags report specific errors that occur on data disks during the
|
|
commands that access files and parities.
|
|
.TP
|
|
.B error[_io|_data]:<block>:<disk_name>:<file>:<msg>
|
|
Logs file access errors (open, read, file changed) during the
|
|
data disk read operation for parity calculation or verification.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I _io
|
|
Indicates a physical Input/Output error.
|
|
The disk was unable to read or write a specific block,
|
|
typically signaling a failing sector or cable issue.
|
|
.HP 4
|
|
.I _data
|
|
Indicates the data was read successfully but failed
|
|
the checksum/hash verification. This signals \`silent\`
|
|
corruption or an unsuccessful parity match.
|
|
.HP 4
|
|
.I <block>
|
|
The zero\-based index of the block where the error occurred (uint).
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the data disk.
|
|
.HP 4
|
|
.I <file>
|
|
The path (relative to the disk mount point) of the
|
|
file containing the block (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the
|
|
error (e.g., \`Open/Read/Write EIO error\`, \`Open/Read/Write error\`,
|
|
\`Data error at position <pos>, diff bits <diff>/<bits>\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B parity_error[_io|_data]:<block>:<level>:<msg>
|
|
Logs errors during parity disk read or write operations.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I _io
|
|
Indicates a physical Input/Output error.
|
|
The disk was unable to read or write a specific block,
|
|
typically signaling a failing sector or cable issue.
|
|
.HP 4
|
|
.I _data
|
|
Indicates the data was read successfully but failed
|
|
the checksum/hash verification. This signals \`silent\`
|
|
corruption or an unsuccessful parity match.
|
|
.HP 4
|
|
.I <block>
|
|
The zero\-based index of the block where the error occurred (uint).
|
|
.HP 4
|
|
.I <level>
|
|
The configuration name of the parity level (e.g.,
|
|
\`parity\`, \`2\-parity\`).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the
|
|
error (e.g., \`Read/Write EIO error\`, \`Read/Write error\`,
|
|
\`Data error, diff bits <diff>/<bits>\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B hardlink_error:<disk_name>:<link_path>:<target_path>:<msg>
|
|
Indicates an error when attempting to access a hard link.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <link_path>
|
|
The hard link path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <target_path>
|
|
The target path of the hard link (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the
|
|
error (e.g., \`Hardlink stat error\`,
|
|
\`Hardlink error for not regular file\`, \`Hardlink to stat error\`,
|
|
\`Hardlink\-to error for not regular file\`,
|
|
\`Hardlink mismatch for different inode\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B symlink_error:<disk_name>:<link_path>:<msg>
|
|
Indicates an error when attempting to access a symbolic link.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <link_path>
|
|
The symlink path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the
|
|
error (e.g., \`Symlink read error\`,
|
|
\`Symlink data error \'<actual>\' instead of \'<expected>\'\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B dir_error:<disk_name>:<dir_path>:<msg>
|
|
Indicates an error when attempting to access a directory.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk.
|
|
.HP 4
|
|
.I <dir_path>
|
|
The directory path relative to disk root (escaped).
|
|
.HP 4
|
|
.I <msg>
|
|
A descriptive message indicating the nature of the
|
|
error (e.g., \`Dir stat error\`, \`Dir error for not directory\`).
|
|
.PD
|
|
.RE
|
|
.TP
|
|
.B outofparity:<disk_name>:<file_path>
|
|
Logs that a file\'s blocks extend beyond the available parity
|
|
space, indicating that the parity files are too small to
|
|
protect all data. This occurs when data requires more parity
|
|
than is available on the parity disk(s) and is a critical
|
|
warning.
|
|
.RS 4
|
|
.PD 0
|
|
.HP 4
|
|
.I <disk_name>
|
|
The name of the disk containing the file.
|
|
.HP 4
|
|
.I <file_path>
|
|
The file path relative to the disk root (escaped).
|
|
.PD
|
|
.RE
|