ndctl (with examples)
- Linux
- November 5, 2023
1: Create an ‘fsdax’ mode namespace
ndctl create-namespace --mode=fsdax
Motivation: This command allows the creation of a new namespace with ‘fsdax’ mode. ‘fsdax’ mode allows applications direct access to persistent memory as a file system.
Explanation: This command creates a new namespace with the specified mode. The --mode=fsdax
argument sets the mode of the namespace to ‘fsdax’.
Example Output:
Created nmem0 namespace
2: Change the mode of a namespace to ‘raw’
ndctl create-namespace --reconfigure=namespaceX.Y --mode=raw
Motivation: This command allows changing the mode of an existing namespace to ‘raw’. ‘raw’ mode provides direct access to the underlying memory without any file system layer.
Explanation: This command changes the mode of an existing namespace to ‘raw’. The --reconfigure=namespaceX.Y
argument specifies the namespace to be reconfigured, and --mode=raw
sets the new mode.
Example Output:
Reconfigured namespaceX.Y with 'raw' mode
3: Check a sector mode namespace for consistency and repair if needed
ndctl check-namespace --repair namespaceX.Y
Motivation: This command helps ensure the consistency of a sector mode namespace and repairs any inconsistencies if found. Checking and repairing namespaces can prevent data corruption and ensure data integrity.
Explanation: This command checks the specified namespace for consistency. The --repair
argument indicates that any inconsistencies should be repaired.
Example Output:
Namespace namespaceX.Y is consistent and does not require repair
4: List all namespaces, regions, and buses (including disabled ones)
ndctl list --namespaces --regions --buses --idle
Motivation: This command provides a comprehensive overview of all namespaces, regions, and buses. It includes both enabled and disabled resources, allowing for a complete understanding of the available devices.
Explanation: This command lists all namespaces, regions, buses, and their respective state. The --namespaces
, --regions
, --buses
, and --idle
arguments are used to include all relevant information.
Example Output:
Namespaces:
Namespace: /dev/pmem0
[Other namespaces listed here]
Regions:
Region: region0
Device: /dev/nmem0
[Other regions listed here]
Buses:
Bus: ACPI.NFIT:0
[Other buses listed here]
5: List a specific namespace and include lots of additional information
ndctl list -vvv --namespace=namespaceX.Y
Motivation: This command provides detailed information about a specific namespace. It can be useful for troubleshooting or gathering extensive information about a particular resource.
Explanation: This command lists the specified namespace and includes verbose information. The -vvv
argument increases the level of verbosity, providing additional details.
Example Output:
Namespace: namespaceX.Y
mode: fsdax
size: 1.0 GB
alignment: 4.0 KB
sector_size: 512 Bytes
[Other attributes and details listed here]
6: Run a monitor to watch for SMART health events for NVDIMMs on the ‘ACPI.NFIT’ bus
ndctl monitor --bus=ACPI.NFIT
Motivation: This command enables monitoring for SMART health events on NVDIMMs connected to the ‘ACPI.NFIT’ bus. Monitoring helps detect potential issues and allows for proactive maintenance and troubleshooting.
Explanation: This command starts a monitor for SMART health events on the specified bus. The --bus=ACPI.NFIT
argument indicates the target bus for monitoring.
Example Output:
Monitoring SMART health events on bus ACPI.NFIT...
[SMART health events are displayed here in real-time]
7: Remove a namespace (when applicable) or reset it to an initial state
ndctl destroy-namespace --force namespaceX.Y
Motivation: This command allows removal or reset of a namespace. Removing a namespace frees up resources, while resetting it to an initial state can help resolve persistent issues.
Explanation: This command destroys the specified namespace. The --force
argument ensures that the operation is carried out even if the namespace is in use.
Example Output:
Namespace namespaceX.Y has been removed/reset successfully
Conclusion
The ndctl
command is a versatile utility for managing Non-Volatile DIMMs. It provides various functionalities, including creating and reconfiguring namespaces, checking and repairing namespace consistency, listing resources, monitoring health events, and removing/resetting namespaces. The examples provided demonstrate the different use cases of the ndctl
command and illustrate how it can be used to effectively manage Non-Volatile DIMMs.