我需要列出系统中安装的所有块设备。有一个名为lsblk
显示所有块设备的命令。
[kni@hist ttyid:0 pią kwi 13 17:56:26 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 13,5G 0 part
├─fedora_211829-root 253:0 0 10G 0 lvm /
├─fedora_211829-swap 253:1 0 1,5G 0 lvm [SWAP]
└─fedora_211829-home 253:2 0 2G 0 lvm /home
sr0 11:0 1 55,3M 0 rom /run/media/kni/VBox_GAs_5.2
[knis@hist ttyid:0 pią kwi 13 17:56:31 ~]$
lsblk
这是在我的系统中执行命令的结果。磁盘是 sda
我的系统中唯一的一个物理设备吗?分区和lvm是磁盘的逻辑部分。我对吗?
还有其他方法可以打印物理块设备吗?
答案1
假设你真的想看身体的设备,而不仅仅是所有块设备:
我的建议是:
lsblk -a -d -e 230
为什么?
让我们从手册页回顾一下这些命令行选项的作用:
-a, --all
Also list empty devices. (By default they are skipped.)
奇怪的是,lsblk
即使我的笔记本电脑的 DVD 刻录机是空的,也显示它没有-a
.但保留它似乎并没有什么坏处。
-d, --nodeps
Do not print holder devices or slaves. For example, lsblk
--nodeps /dev/sda prints information about the sda device only.
这意味着我们看不到设备上的分区,只能看到设备本身。
-e, --exclude list
Exclude the devices specified by the comma-separated list of
major device numbers. Note that RAM disks (major=1) are
excluded by default. The filter is applied to the top-level
devices only.
最后,我用来-e 230
排除 ZFS zvols,它使用这个主编号。它们完全是逻辑块设备,但 ZFS 驱动程序使它们看起来lsblk
与物理磁盘设备相同。如果您使用 ZFS,则可以使用 来从显示中排除 zvol -e 230
。
[root@dalaran ~]# lsblk -a -d -e 230
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 894.3G 0 disk
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 477G 0 disk
我愿意不是建议使用-S
选项,因为这会导致 NVMe 设备不显示。
如果您想编写 shell 脚本,手册页中还有其他几个选项lsblk
可以使输出更具机器可读性。例如-n
和-o
或-P
。
答案2
获取信息(无分区):
$ lsblk -a -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sdb 8:16 0 40G 0 disk
sr0 11:0 1 55.3M 0 rom
-a print even empty devices (if disk is not loaded in CD/DVD device)
-d discard print slaves
答案3
ls -l /sys/block/ | awk '$11 != "" && $11 !~ "^../devices/virtual" { print $9; }