介绍
在这个实验中,我们将探索 Linux 的 lsblk 命令,该命令显示关于你系统上所有可用块设备的信息。块设备包括硬盘驱动器、固态硬盘(SSD)、USB 驱动器和其他存储介质。lsblk 命令以清晰的树状格式呈现这些信息,这使得理解不同存储设备及其分区之间的关系变得容易。
理解存储设备对于任何使用 Linux 系统的人来说都至关重要。无论你需要识别可用存储、检查分区大小,还是验证挂载点,lsblk 命令都提供了一种快速有效的方式来收集这些信息。
通过完成这个实验,你将能够使用带有各种选项的 lsblk 命令,以获取关于你 Linux 系统上存储设备的详细信息。
lsblk 命令的基本用法
lsblk 命令代表 "list block devices"(列出块设备),用于显示关于你 Linux 系统上所有可用块设备的信息。块设备是存储设备,例如硬盘驱动器、固态硬盘(SSD)和 USB 驱动器。
让我们从在终端中运行基本的 lsblk 命令开始:
如果你的终端尚未打开,请打开它。
键入以下命令并按 Enter 键:
lsblk
你应该看到类似于这样的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 55.5M 1 loop /snap/core18/2128
loop1 7:1 0 55.4M 1 loop /snap/core18/2284
loop2 7:2 0 43.6M 1 loop /snap/snapd/15534
loop3 7:3 0 61.9M 1 loop /snap/gtk-common-themes/1535
loop4 7:4 0 31.1M 1 loop /snap/snapd/16292
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 49G 0 part /
└─sda2 8:2 0 976M 0 part [SWAP]
此输出显示了你系统上的所有块设备,包含以下列:
NAME:设备名称MAJ:MIN:主设备号和次设备号RM:可移动标志(1 表示可移动,0 表示不可移动)SIZE:设备的大小RO:只读标志(1 表示只读,0 表示读写)TYPE:设备类型(disk,partition,loop 等)MOUNTPOINT:设备挂载的位置(如果适用)
在上面的示例中,你可以看到:
- 几个由 snap 包使用的
loop设备 - 一个主存储设备
sda(这是一个 50GB 的磁盘) sda上的两个分区:sda1(挂载在根目录/)和sda2(用作交换空间)
输出中的树状结构使你可以轻松地可视化哪些分区属于哪个磁盘。例如,你可以看到 sda1 和 sda2 都是 sda 磁盘的分区。
现在你了解了 lsblk 命令的基本输出,让我们在接下来的步骤中探索一些有用的选项。
使用 lsblk 显示附加信息
在这一步中,我们将学习如何使用带有不同选项的 lsblk 命令,以显示关于块设备的更详细信息。
使用 -f 选项显示文件系统信息
-f 选项显示文件系统信息,包括文件系统类型、标签、UUID 和挂载点。当你需要通过 UUID 识别设备或检查正在使用的文件系统类型时,这特别有用。
在你的终端中运行以下命令:
lsblk -f
你应该看到类似于这样的输出:
NAME FSTYPE LABEL UUID MOUNTPOINT
loop0 squashfs /snap/core18/2128
loop1 squashfs /snap/core18/2284
loop2 squashfs /snap/snapd/15534
loop3 squashfs /snap/gtk-common-themes/1535
loop4 squashfs /snap/snapd/16292
sda
├─sda1 ext4 5fbb8eed-12a3-4b5c-9d67-9594ff4e2d1c /
└─sda2 swap b409ae25-7589-44eb-a909-b56f1d42c5ab [SWAP]
输出现在包括附加列:
FSTYPE:文件系统类型(ext4,swap,squashfs 等)LABEL:已分配的任何文件系统标签UUID:文件系统的通用唯一标识符(UUID)
使用 -m 选项显示设备所有者和模式信息
-m 选项显示块设备的权限和所有者信息。这在排除与权限相关的问题时很有用。
运行以下命令:
lsblk -m
你应该看到类似这样的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT OWNER GROUP MODE
loop0 7:0 0 55.5M 1 loop /snap/core18/2128 root disk brw-rw----
loop1 7:1 0 55.4M 1 loop /snap/core18/2284 root disk brw-rw----
loop2 7:2 0 43.6M 1 loop /snap/snapd/15534 root disk brw-rw----
loop3 7:3 0 61.9M 1 loop /snap/gtk-common-themes/1535 root disk brw-rw----
loop4 7:4 0 31.1M 1 loop /snap/snapd/16292 root disk brw-rw----
sda 8:0 0 50G 0 disk root disk brw-rw----
├─sda1 8:1 0 49G 0 part / root disk brw-rw----
└─sda2 8:2 0 976M 0 part [SWAP] root disk brw-rw----
新列显示:
OWNER:拥有该设备的用户(通常是 root)GROUP:设备的所有者组(通常是 disk)MODE:设备的权限模式
使用 -o 选项选择特定的输出列
-o 选项允许你指定要显示的列。当你只需要某些信息并希望获得更清晰、更集中的输出时,这很有用。
让我们仅显示名称、大小和挂载点列:
lsblk -o NAME,SIZE,MOUNTPOINT
输出将更简单:
NAME SIZE MOUNTPOINT
loop0 55.5M /snap/core18/2128
loop1 55.4M /snap/core18/2284
loop2 43.6M /snap/snapd/15534
loop3 61.9M /snap/gtk-common-themes/1535
loop4 31.1M /snap/snapd/16292
sda 50G
├─sda1 49G /
└─sda2 976M [SWAP]
这种自定义输出使你可以更轻松地专注于你所需的信息。你可以组合多个选项,以获得你想要的格式,并完全满足你的需求。
使用 lsblk 过滤块设备
在这一步中,我们将学习如何过滤 lsblk 命令的输出,以专注于特定类型的块设备或以不同的格式显示信息。
按设备类型过滤
lsblk 命令允许你使用 --type 或 -t 选项按设备类型过滤设备。常见的设备类型包括:
disk:物理磁盘part:分区loop:循环设备lvm:逻辑卷
要仅显示磁盘设备,请运行以下命令:
lsblk --type disk
输出将仅显示主磁盘,不包括它们的分区:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
类似地,要仅显示分区设备,请运行:
lsblk --type part
输出将仅显示分区:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda1 8:1 0 49G 0 part /
sda2 8:2 0 976M 0 part [SWAP]
显示设备路径
--paths 选项显示完整的设备路径,而不是仅显示设备名称。当你需要在脚本或命令中引用设备时,这很有用。
运行以下命令:
lsblk --paths
输出将包括完整的设备路径:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/loop0 7:0 0 55.5M 1 loop /snap/core18/2128
/dev/loop1 7:1 0 55.4M 1 loop /snap/core18/2284
/dev/loop2 7:2 0 43.6M 1 loop /snap/snapd/15534
/dev/loop3 7:3 0 61.9M 1 loop /snap/gtk-common-themes/1535
/dev/loop4 7:4 0 31.1M 1 loop /snap/snapd/16292
/dev/sda 8:0 0 50G 0 disk
├─/dev/sda1 8:1 0 49G 0 part /
└─/dev/sda2 8:2 0 976M 0 part [SWAP]
以 JSON 格式显示输出
--json 选项以 JSON 格式输出信息,这对于程序化处理或与其它工具集成很有用。
运行以下命令:
lsblk --json
输出将是 JSON 格式:
{
"blockdevices": [
{
"name": "loop0",
"maj:min": "7:0",
"rm": false,
"size": "55.5M",
"ro": true,
"type": "loop",
"mountpoint": "/snap/core18/2128"
},
{
"name": "loop1",
"maj:min": "7:1",
"rm": false,
"size": "55.4M",
"ro": true,
"type": "loop",
"mountpoint": "/snap/core18/2284"
},
{
"name": "loop2",
"maj:min": "7:2",
"rm": false,
"size": "43.6M",
"ro": true,
"type": "loop",
"mountpoint": "/snap/snapd/15534"
},
{
"name": "loop3",
"maj:min": "7:3",
"rm": false,
"size": "61.9M",
"ro": true,
"type": "loop",
"mountpoint": "/snap/gtk-common-themes/1535"
},
{
"name": "loop4",
"maj:min": "7:4",
"rm": false,
"size": "31.1M",
"ro": true,
"type": "loop",
"mountpoint": "/snap/snapd/16292"
},
{
"name": "sda",
"maj:min": "8:0",
"rm": false,
"size": "50G",
"ro": false,
"type": "disk",
"children": [
{
"name": "sda1",
"maj:min": "8:1",
"rm": false,
"size": "49G",
"ro": false,
"type": "part",
"mountpoint": "/"
},
{
"name": "sda2",
"maj:min": "8:2",
"rm": false,
"size": "976M",
"ro": false,
"type": "part",
"mountpoint": "[SWAP]"
}
]
}
]
}
组合选项以进行精确控制
你可以组合多个选项以获得你所需的确切信息。例如,要以 JSON 格式显示仅包含完整路径的磁盘设备:
lsblk --type disk --paths --json
输出将是仅包含磁盘设备及其完整路径的 JSON 表示:
{
"blockdevices": [
{
"name": "/dev/sda",
"maj:min": "8:0",
"rm": false,
"size": "50G",
"ro": false,
"type": "disk"
}
]
}
这些过滤选项使 lsblk 命令非常灵活,并允许你准确地获取关于你系统上块设备的信息。
lsblk 的高级用法,适用于实际场景
在这一步中,我们将探讨 lsblk 命令在系统管理和故障排除任务中的实用场景。
检查磁盘使用情况和可用空间
要检查磁盘使用情况和可用空间,你可以将 lsblk 与 -b 选项(以字节为单位显示大小)结合使用,并选择特定的列:
lsblk -b -o NAME,SIZE,FSAVAIL,FSUSE%,MOUNTPOINT
输出将显示磁盘使用情况信息:
NAME SIZE FSAVAIL FSUSE% MOUNTPOINT
loop0 58195968 0 - /snap/core18/2128
loop1 58130432 0 - /snap/core18/2284
loop2 45719552 0 - /snap/snapd/15534
loop3 64897024 0 - /snap/gtk-common-themes/1535
loop4 32604160 0 - /snap/snapd/16292
sda 53687091200 - -
├─sda1 52613349376 39128932352 26% /
└─sda2 1023410176 0 - [SWAP]
这些列显示:
SIZE:总大小(以字节为单位)FSAVAIL:文件系统上的可用空间FSUSE%:文件系统使用百分比MOUNTPOINT:设备挂载的位置
识别 USB 驱动器
当你插入 USB 驱动器时,你可以使用 lsblk 通过查找可移动设备来快速识别它:
lsblk -o NAME,SIZE,TYPE,RM,MOUNTPOINT
在输出中,查找 RM(可移动)值为 1 的设备:
NAME SIZE TYPE RM MOUNTPOINT
loop0 55.5M loop 0 /snap/core18/2128
loop1 55.4M loop 0 /snap/core18/2284
loop2 43.6M loop 0 /snap/snapd/15534
loop3 61.9M loop 0 /snap/gtk-common-themes/1535
loop4 31.1M loop 0 /snap/snapd/16292
sda 50G disk 0
├─sda1 49G part 0 /
└─sda2 976M part 0 [SWAP]
如果你连接了 USB 驱动器,它通常会显示为额外的磁盘(例如 sdb),其 RM 值为 1。
查找设备序列号
对于硬件清单或故障排除,你可能需要查找设备序列号。lsblk 命令可以显示此信息:
lsblk -o NAME,SIZE,TYPE,SERIAL
输出将包括提供此信息的设备的序列号:
NAME SIZE TYPE SERIAL
loop0 55.5M loop
loop1 55.4M loop
loop2 43.6M loop
loop3 61.9M loop
loop4 31.1M loop
sda 50G disk ABCD1234
├─sda1 49G part
└─sda2 976M part
请注意,并非所有设备都报告序列号,并且像循环设备这样的虚拟设备通常没有序列号。
分析磁盘性能属性
要查看磁盘性能属性,你可以使用 --topology 或 -t 选项:
lsblk --topology
输出包括拓扑信息,如对齐和最佳 I/O 大小:
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
loop0 0 512 0 512 512 1 mq-deadline 256 128 0B
loop1 0 512 0 512 512 1 mq-deadline 256 128 0B
loop2 0 512 0 512 512 1 mq-deadline 256 128 0B
loop3 0 512 0 512 512 1 mq-deadline 256 128 0B
loop4 0 512 0 512 512 1 mq-deadline 256 128 0B
sda 0 512 0 512 512 1 mq-deadline 256 128 0B
├─sda1 0 512 0 512 512 1 mq-deadline 256 128 0B
└─sda2 0 512 0 512 512 1 mq-deadline 256 128 0B
此信息对于性能调优和排除与 I/O 相关的问题很有用。
这些实际示例展示了 lsblk 命令在日常系统管理任务中的多功能性。通过掌握这些技术,你可以快速收集关于 Linux 系统上存储设备的重要信息。
总结
在这个实验中,我们探索了 Linux 的 lsblk 命令,这是一个用于列出和显示关于你系统上块设备信息的强大工具。我们涵盖了该命令的几个重要方面:
lsblk的基本用法,用于显示所有块设备的树状列表- 如何显示附加信息,包括文件系统详细信息、所有者/权限和自定义列选择
- 用于专注于特定设备类型或显示格式的过滤技术
- 用于系统管理任务的高级使用场景
lsblk 命令是 Linux 系统管理员和需要管理存储设备的用户的重要工具。其灵活的选项允许你快速获取关于你系统上磁盘、分区和其他块设备的所需确切信息。
通过掌握 lsblk 命令,你可以更有效地:
- 识别和管理存储设备
- 监控磁盘使用情况和可用空间
- 排除与存储相关的问题
- 记录你系统的存储配置
这些技能构成了与存储管理相关的更高级 Linux 系统管理任务的重要基础。



