Universal Linux Logical Disk \% Free Inodes Monitor
The percentage of free inodes on the logical disk (file system) is low. System performance may be adversely affected, and the ability to add files on the file system may be at risk until additional inodes are made available.
If the file system does not use inodes, the Percent Free Inodes value is returned as 100 percent. File system inode usage is calculated with current free and total values, which may not accurately represent true usage for file systems that dynamically allocate inodes, such as JFS.
The monitor threshold is analyzed against an average of values returned in polls to the agent, where the Number of Samples parameter controls the number of samples included in the calculation of the average.
Default Configuration
Parameter | Default Value |
Threshold | 5 |
Interval (seconds) | 300 |
Number of Samples | 1 |
Overrides can be used to change the parameter values defined above for all instances or for specific instances or groups.
An unhealthy state indicates that the percentage of free inodes is currently low. This is likely caused by an excessive number of files stored on the file system.
Inodes store metadata about files and directories. If all available inodes for a file system are allocated, new files and directories cannot be created, even if free space is available. To resolve a low percent of free inodes condition, inspect the file system and look for unused files and directories that can be deleted or moved to an alternate file system.
To view recent file system capacity history you can use the following view:
Disk Capacity
Target | Microsoft.Linux.Universal.LogicalDisk | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Linux.Universal.LogicalDisk.PercentFreeInodes.Monitor" Accessibility="Public" Enabled="true" Target="Universal!Microsoft.Linux.Universal.LogicalDisk" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Unix!Microsoft.Unix.WSMan.Performance.Filtered.Average.Threshold.MonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Linux.Universal.LogicalDisk.PercentFreeInodes.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Error"/>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<TargetSystem>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/NetworkName$</TargetSystem>
<Uri>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_FileSystemStatisticalInformation?__cimnamespace=root/scx</Uri>
<Filter/>
<SplitItems>true</SplitItems>
<Interval>300</Interval>
<ObjectName>Logical Disk</ObjectName>
<CounterName>% Free Inodes</CounterName>
<InstanceName>$Target/Property[Type="Unix!Microsoft.Unix.LogicalDevice"]/DeviceID$</InstanceName>
<InstanceProperty>/DataItem/WsManData/*[local-name(.)='SCX_FileSystemStatisticalInformation']/*[local-name(.)='Name']</InstanceProperty>
<Value>$Data/WsManData/*[local-name(.)='SCX_FileSystemStatisticalInformation']/*[local-name(.)='PercentFreeInodes']$</Value>
<Threshold>5</Threshold>
<NumSamples>1</NumSamples>
<PreMapperFilter>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">/DataItem/WsManData/*[local-name(.)='SCX_FileSystemStatisticalInformation']/*[local-name(.)='PercentUsedInodes']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[-]?([0-9]*\.[0-9]+|[0-9]+)$</Pattern>
</RegExExpression>
</PreMapperFilter>
</Configuration>
</UnitMonitor>