1. Overview
Linux systems consist of various components and devices that work together to provide efficient functionality. One such device is the dm-0 device, which is part of the device mapper in the Linux kernel.
In this tutorial, we’ll explore what the dm-0 device is, its purpose, and how it’s related to LVM (Logical Volume Manager).
2. Device Mapper and LVM
The device mapper is a kernel-level framework in Linux that allows for the creation of virtual block devices by mapping physical or logical block devices.
The dm-0 device is one of the virtual block devices created and managed by the device mapper. It’s specifically associated with LVM and represents a logical volume within an LVM volume group.
LVM allows users to manage disk space in a more flexible manner. In addition, these device mappers are typically named “dm-X,” where X is a number assigned to the device.
2.1. dmsetup
dmsetup allows us to manage devices associated with the device mapper framework. We can view, configure, and obtain information about the mappings between logical and physical block devices.
We can view the devices associated with the device mapper with dmsetup:
$ sudo dmsetup ls
VG00-LV02 (253, 2)
VG00-LV01 (253, 1)
VG00-LV00 (253, 0)
The ls subcommand would display a list of devices along with their respective mappings. Moreover, we can get detailed information about the dm-0 device as well:
$ sudo dmsetup info /dev/dm-0
Name: dm-0
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 0
Notably, the dm-0 device here is mapped to a device with major and minor numbers 253, 0.
2.2. lvdisplay
lvdisplay retrieves essential information about the logical volumes configured in the system.
We can use lvdisplay to determine the mappings between logical volumes and the dm-X device:
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/vol_grp/lvol0
LV Name lvol0
VG Name vol_grp
LV UUID NmNUn0-QKnq-SUnf-5kKl-sm3l-Cq0L-k9QR0d
LV Write Access read/write
LV Creation host, time ubuntu-PC, 2022-02-18 21:43:27 +0545
LV snapshot status source of
snap [active]
LV Status available
# open 0
LV Size 40.00 MiB
Current LE 10
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
...
However, the output only subtly reveals the device mapping between a logical volume and a dm device. Therefore, we can use awk to print a proper mapping:
$ sudo lvdisplay | awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
dm-0 /dev/vol_grp/lvol0
...
Here, we grabbed the LV Name field and put the name of the logical volume in the n variable. Then, we extracted the major and minor numbers of the device and put them in the variable d. Then, we prepend “*dm-*” to the minor number of the device.
Finally, we print both variables, which shows us the mapping of dm-0 to its respective logical volume.
3. Conclusion
In this article, we explored the device mapper framework and its role in creating virtual block devices. We used tools like dmsetup and lvdisplay to view information about device mappings.