The lsblk command is part of the util-linux package. lsblk lists information about all available or the specified block devices. The lsblk command reads the sysfs filesystem
and udev db
to gather information. If the udev db is not available or lsblk is compiled without udev support than it tries to read LABELs, UUIDs and filesystem types from the block device. In this case root permissions are necessary.
lsblk [options] [device...]
The lsblk command needs to be able to look up each block device by major:minor numbers, which is done by using /sys/dev/block
. This sysfs block directory appeared in kernel 2.6.27 (October 2008). In case of problems with a new enough kernel, check that CONFIG_SYSFS was enabled at the time of the kernel build.
For partitions, some information (e.g. queue attributes) is inherited from the parent device.
The command prints all block devices (except RAM disks, by default) in a tree-like format by default.
Use lsblk --help
to get a list of all available columns.
The default output, as well as the default output from options like --fs and --topology, is subject to change. So whenever possible, you should avoid using default outputs in your scripts. Always explicitly define expected columns by using --output columns-list
in environments where a stable output is required.
脚本里面用到 lsblk 需要使用 --output columns-list 显示指定输出列
Note that lsblk might be executed in time when udev does not have all information about recently added or modified devices yet. In this case it is recommended to use udevadm settle before lsblk to synchronize with udev.
设备变动后需要先用 udevadm 同步一下 udev db,之后再使用 lsblk 命令
Available output columns
NAME device name
MAJ:MIN major:minor device number
KNAME internal kernel device name
PKNAME internal parent kernel device name
FSTYPE filesystem type
MOUNTPOINT where the device is mounted
LABEL filesystem LABEL
UUID filesystem UUID
PARTTYPE partition type UUID
PARTLABEL partition LABEL
PARTUUID partition UUID
PARTFLAGS partition flags
TYPE device type
MODEL device identifier
SERIAL disk serial number
REV device revision
VENDOR device vendor
SCHED I/O scheduler name
RQ-SIZE request queue size
SIZE size of the device
ALIGNMENT alignment offset
MIN-IO minimum I/O size
OPT-IO optimal I/O size
PHY-SEC physical sector size
LOG-SEC logical sector size
WWN unique storage identifier
HCTL Host:Channel:Target:Lun for SCSI
TRAN device transport type
SUBSYSTEMS de-duplicated chain of subsystems
RM removable device
HOTPLUG removable or hotplug device (usb, pcmcia, ...)
STATE state of the device
OWNER user name
GROUP group name
MODE device node permissions
ROTA rotational device
RA read-ahead of the device
RO read-only device
DISC-ALN discard alignment offset
DISC-GRAN discard granularity
DISC-MAX discard max bytes
DISC-ZERO discard zeroes data
WSAME write same max bytes
RAND adds randomness
ZONED zone model
OPTIONS
-a, --all
Also list empty devices and RAM disk devices.
-n, --noheadings
Do not print a header line.
-p, --paths
Print full device paths.
-S, --scsi
Output info about SCSI devices only.
All partitions, slaves and holder devices are ignored.
-t, --topology
Output info about block-device topology. This option is
equivalent to
-o NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC, \
LOG-SEC,ROTA,SCHED,RQ-SIZE,RA,WSAME
-o, --output list
Specify which output columns to print.
Use --help to get a list of all supported columns.
The default list of columns may be extended if list is
specified in the format
+list (e.g. lsblk -o +UUID)
-O, --output-all
Output all available columns.
-i, --ascii
Use ASCII characters for tree formatting.
-J, --json
Use JSON output format.
-l, --list
Produce output in the form of a list.
-b, --bytes
Print the SIZE column in bytes rather than in a
human-readable format.
-D, --discard
Print information about the discarding capabilities
(TRIM, UNMAP) for each device.
-d, --nodeps
Do not print holder devices or slaves.
For example,
lsblk --nodeps /dev/sda
prints information about the sda device only.
-f, --fs
Output info about filesystems. This option is equivalent to
-o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT
The authoritative information about filesystems and raids
is provided by the blkid(8) command.
-e, --exclude list
Exclude the devices specified by the comma-separated
list of major device numbers.
The filter is applied to the top-level devices only. This
maybe be confusing for --list output format where
hierarchy of the devices is not obvious.
Note that RAM disks (major=1) are excluded by default if
--all is no specified.
-I, --include list
Include devices specified by the comma-separated list of
major device numbers.
The filter is applied to the top-level devices only. This
maybe be confusing for --list output format where
hierarchy of the devices is not obvious.
-m, --perms
Output info about device owner, group and mode.
This option is equivalent to
-o NAME,SIZE,OWNER,GROUP,MODE.
-P, --pairs
Produce output in the form of key="value" pairs.
All potentially unsafe characters are hex-escaped (\x<code>).
-r, --raw
Produce output in raw format. All potentially unsafe
characters are hex-escaped (\x<code>) in the
NAME, KNAME, LABEL, PARTLABEL,MOUNTPOINT
columns.
-s, --inverse
Print dependencies in inverse order. If the --list output
is requested then the lines are still ordered by dependencies.
-x, --sort column
Sort output lines by column. This option enables --list
output format by default. It is possible to use the option
--tree to force tree-like output and than the tree branches
are sorted by the column.
-z, --zoned
Print the zone model for each device.
--sysroot directory
Gather data for a Linux instance other than the instance
from which the lsblk command is issued. The specified
directory is the system root of the Linux instance to be
inspected.
This option is designed for the testing purpose.
-h, --help
Display help text and exit.
-V, --version
Display version information and exit.
RETURN CODES
0 success
1 failure
32 none of specified devices found
64 some specified devices found, some not found
ENVIRONMENT
LSBLK_DEBUG=all enables lsblk debug output.
LIBBLKID_DEBUG=all enables libblkid debug output.
LIBMOUNT_DEBUG=all enables libmount debug output.
LIBSMARTCOLS_DEBUG=all
enables libsmartcols debug output.
LIBSMARTCOLS_DEBUG_PADDING=on
use visible padding characters.
Requires enabled LIBSMARTCOLS_DEBUG.