我需要知道哪些硬盘可用,包括未安装且可能未格式化的硬盘。我无法在dmesg
或中找到它们/var/log/messages
(太多而无法滚动)。我希望有一种方法可以使用/dev
或/proc
找出这些信息,但我不知道如何做。我正在使用Linux。
答案1
这是高度依赖于平台的。此外,不同的方法可能会以不同的方式处理边缘情况(各种“假”磁盘、RAID 卷……)。
在现代 udev 安装中, 的子目录中有指向存储介质的符号链接,可让您通过序列号 ( )、UUID ( )、文件系统标签 ( ) 或硬件连接 ( )/dev/disk
查找磁盘或分区。/dev/disk/by-id/
/dev/disk/by-uuid
/dev/disk/by-label/
/dev/disk/by-path/
在 Linux 2.6 下,每个磁盘和类似磁盘的设备在/sys/block
.在 Linux 下,自诞生以来,磁盘和分区都列在/proc/partitions
.或者,您可以使用长沙: lshw -class disk
。
Linux 还提供了lsblk
实用程序,它显示存储卷的漂亮树视图(自 util-linux 2.19 起,在带有 BusyBox 的嵌入式设备上不存在)。
如果您有fdisk
或disklabel
实用程序,它可能会告诉您它可以在哪些设备上运行。
您可以在以下位置找到许多 UNIX 变体的实用程序名称Unix 版罗塞塔石碑,特别是“列出硬件配置”和“读取磁盘标签”行。
答案2
lsblk
将列出所有块设备。它非常适合编写脚本:
$ lsblk -io KNAME,TYPE,SIZE,MODEL
KNAME TYPE SIZE MODEL
sda disk 149.1G TOSHIBA MK1637GS
sda1 part 23.3G
sda2 part 28G
sda3 part 93.6G
sda4 part 4.3G
sr0 rom 1024M CD/DVDW TS-L632M
lsblk
存在于 util-linux 包中,因此比建议的替代方案更通用。
答案3
怎么样
lshw -class disk
答案4
@Giles 说这高度依赖于平台。这是一个这样的例子。
我正在运行 CentOS 5.5 系统。该系统有 4 个磁盘和一个 3ware RAID 控制器。
在我的例子中,lshw -class disk
、cat /proc/scsi/scsi
和parted --list
显示了 RAID 控制器 (3ware 9650SE-4LP)。这不显示实际的磁盘:
仅显示提供 /dev/sda 卷的 3ware RAID 控制器:
# lshw -class disk
*-disk
description: SCSI Disk
product: 9650SE-4LP DISK
vendor: AMCC
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: AMCC Model: 9650SE-4LP DISK Rev: 4.06
Type: Direct-Access ANSI SCSI revision: 05
# parted --list
Model: AMCC 9650SE-4LP DISK (scsi)
Disk /dev/sda: 2000GB
为了查看位于下面的磁盘,我必须安装 3ware 的 tw_cli 实用程序,并询问控制器本身。
# tw_cli info c0
...
VPort Status Unit Size Type Phy Encl-Slot Model
------------------------------------------------------------------------------
p0 OK u0 931.51 GB SATA 0 - WDC WD1002FBYS-02A6
p1 OK u0 931.51 GB SATA 1 - WDC WD1002FBYS-02A6