如何识别Linux服务器是否启用RAID并查看原始硬盘总容量?
老哥,你这个情况太常见了——df -h显示的是挂载的文件系统容量,而RAID是把多块物理盘整合成了逻辑卷,所以肯定看不到单盘的原始总容量。下面给你一步步讲怎么排查RAID,以及算出真实的原始总容量:
一、先确认服务器是否启用了RAID
RAID分软件RAID和硬件RAID两种,排查方法不一样:
- 软件RAID(基于mdadm):
直接用这两个命令快速验证:cat /proc/mdstat:这个系统文件会列出所有软件RAID设备(比如md0),同时显示RAID级别(raid0/raid1/raid5等)、组成RAID的物理盘(比如sda1、sdb1)。如果输出里没有md开头的设备,基本可以确定没开软件RAID。mdadm --detail --scan:这个命令会输出更详细的RAID配置,包括成员盘、总容量、运行状态等。
- 硬件RAID(基于RAID控制器卡):
硬件RAID由服务器自带的RAID卡管理,不同厂商有专用工具:- 戴尔服务器:用
perccli或omreport,比如perccli /c0 show all可以查看控制器0下的所有物理盘和逻辑盘。 - 惠普服务器:用
hpssacli,比如hpssacli ctrl all show config detail能输出完整的RAID配置。 - 通用排查方法:
dmidecode -t storage:查看系统存储设备信息,里面如果有RAID控制器的条目,说明存在硬件RAID。lsscsi:列出所有SCSI设备,硬件RAID下会区分出逻辑盘(比如[0:0:0:0] disk DELL PERC H730P Mini ...)和物理盘(通常是编号靠后的条目)。
- 戴尔服务器:用
二、查看硬盘的原始总容量
要算出原始总容量,核心是找到所有物理盘,再把它们的容量累加:
- 最直观的命令:
lsblk
执行lsblk后,输出里TYPE="disk"的就是物理盘(比如sda、sdb、sdc),而TYPE="raid"或TYPE="lvm"的是RAID逻辑卷/LVM卷,不用算这些。把所有disk类型的SIZE值加起来就是原始总容量。
举个例子:
这里原始总容量是2.7T×3=8.1T,而NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 2.7T 0 disk sdb 8:16 0 2.7T 0 disk sdc 8:32 0 2.7T 0 disk md0 9:0 0 5.4T 0 raid5 /datadf -h显示的/data是5.4T(RAID5会损失一块盘的容量做校验,这就是你觉得容量不对的原因)。 - 其他辅助命令:
fdisk -l:列出所有磁盘的分区和容量,重点看Disk /dev/sda: 2.7 TiB这类行,累加这些数值即可。smartctl -i /dev/sda:查看单盘的精确硬件信息,包括准确的容量,适合需要精准数值的场景。
内容的提问来源于stack exchange,提问作者it dev




