XFSInfo - command /usr/sbin/xfs_info {mount}
The XFSInfo
parser reads the output of the xfs_info
command and turns
it into a dictionary of keys and values in several sections, as given in the
output of the command:
meta-data=/dev/sda isize=256 agcount=32, agsize=16777184 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=536869888, imaxpct=5
= sunit=32 swidth=128 blks
naming =version 2 bsize=4096
log =internal bsize=4096 blocks=32768, version=2
= sectsz=512 sunit=32 blks, lazy-count=1
realtime =none extsz=524288 blocks=0, rtextents=0
The main sections are meta-data
, data
, naming
, log
and
realtime
, stored under those keys in the object’s xfs_info
property.
Each section can optionally have a ‘specifier’, which is the first thing
after the section name (e.g. version
or /dev/sda
). If no specifier
is found on the line, none is recorded for the section. The specifier can
also have a value (e.g. 2
for the version), which is recorded in the
specifier_value
key in the section.
Each ‘key=value’ pair until the next given section start (or end of file), is recorded as an entry in the section dictionary, with all values that are numeric being converted to integers (i.e. usually anything without a ‘blks’ suffix).
Because the spec for this parser can collect multiple files, the shared parser information contains a list of XFSInfo objects, one per file system.
In addition, the data_size
and log_size
values are calculated as
properties from the block size and blocks in the data and log, respectively.
- insights.parsers.xfs_info.xfs_info
A dictionary of dictionaries containing the data from the report, keyed on the five section names in the output: ‘
meta-data
’, ‘data
’, ‘naming
’, ‘log
’, and ‘realtime
’. ‘meta-data
’, ‘data
’ and ‘log
’ are always present. Within each dictionary a special key ‘specifier
’ stores any data immediately after the section name - e.g. ‘/dev/sda’ or ‘version’ in the case of the output below. Any data immediately following that is stored in thespecifier_value
key. Otherwise, data is read in key=value pairs - e.g. from the output below, theisize
key will have the value32
(an integer). Data values given in blocks are left as is, so the value of theagsize
key is ‘16777184 blks’ as a string.- Type:
dict
- insights.parsers.xfs_info.mount
If the mount point can be derived from the file name of the original output, then this attribute contains the reconstructed mount point name.
- Type:
str
- insights.parsers.xfs_info.device
The device name immediately after the ‘
meta-data
’ section heading.- Type:
str
- insights.parsers.xfs_info.data_size
The size of the data segment in bytes, from multiplying the
blocks
andbsize
values of thedata
section together.- Type:
int
- insights.parsers.xfs_info.log_size
The size of the log segment in bytes, from multiplying the
blocks
andbsize
values of thelog
section together.- Type:
int
Sample output (from file ‘sos_commands/xfs/xfs_info_.data
’):
meta-data=/dev/sda isize=256 agcount=32, agsize=16777184 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=536869888, imaxpct=5
= sunit=32 swidth=128 blks
naming =version 2 bsize=4096
log =internal bsize=4096 blocks=32768, version=2
= sectsz=512 sunit=32 blks, lazy-count=1
realtime =none extsz=524288 blocks=0, rtextents=0
Examples
>>> xfs = shared[XFSInfo][0] # first XFS filesystem as an example
>>> xfs.xfs_info['meta-data']['specifier']
'/dev/sda'
>>> 'specifier_value' in xfs.xfs_info['meta-data']
False
>>> xfs.xfs_info['meta-data']['agcount']
32
>>> xfs.xfs_info['meta-data']['agsize']
'16777184 blks'
>>> xfs.data_size
2199019061248
>>> 'crc' in xfs.xfs_info['data']
False
- class insights.parsers.xfs_info.XFSInfo(context)[source]
Bases:
CommandParser
This mapper reads the output of the
xfs_info
command.As this spec can collect more than one file, the mapper will return a list of XFSInfo objects, which need to be iterated through to find the information on the mount point or device you need.
- parse_content(content)[source]
In general the pattern is:
section =sectionkey key1=value1 key2=value2, key3=value3 = key4=value4 nextsec =sectionkey sectionvalue key=value otherkey=othervalue
Sections are continued over lines as per RFC822. The first equals sign is column-aligned, and the first key=value is too, but the rest seems to be comma separated. Specifiers come after the first equals sign, and sometimes have a value property, but sometimes not.