Linux查看服务器磁盘数量,最直接的答案是使用fdisk -l或lsblk命令,输入后即可列出系统识别的全部磁盘设备及分区信息。对运维人员而言,掌握磁盘数量的准确视图不仅关乎存储空间规划,更直接影响RAID阵列配置、数据库性能调优以及后续扩容决策,下面从实际运维场景出发,拆解几种主流查看方法及适用环境。
使用lsblk命令查看块设备拓扑
lsblk是util-linux包自带的工具,绝大多数Linux发行版默认安装,它读取sysfs文件系统,以树状结构展示块设备之间的关系,输出格式对新手更友好。
lsblk
执行后输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 447.1G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 100G 0 part /
└─sda3 8:3 0 346.6G 0 part /data
sdb 8:16 0 3.7T 0 disk
└─sdb1 8:17 0 3.7T 0 part /backup
nvme0n1 259:0 0 1.8T 0 disk
└─nvme0n1p1 259:1 0 1.8T 0 part /opt
逐列解读:
- NAME:设备名称,sd开头代表SATA/SAS/SCSI接口硬盘,nvme开头代表NVMe固态硬盘,vd开头多为虚拟化环境中的virtio磁盘。
- MAJ:MIN:设备主次编号,内核用来区分设备类型。
- RM:是否可移动设备,1为可移动,0为固定磁盘。
- SIZE:磁盘总容量,默认按人类可读格式显示。
- RO:是否只读,0表示可读写。
- TYPE:disk代表物理磁盘,part代表分区,lvm代表逻辑卷。
- MOUNTPOINT:挂载点,无挂载则留空。
统计磁盘总数时,执行以下命令直接过滤出TYPE为disk的行:
lsblk -d -o NAME,SIZE,TYPE | grep disk
输出中每一行即对应一块物理磁盘,行数就是磁盘数量,加-d参数后不显示分区子设备,避免干扰计数。
使用fdisk -l查看传统磁盘识别结果
fdisk是经典的分区管理工具,-l参数会遍历系统所有磁盘并显示分区表,该命令兼容性极好,从老旧服务器到最新硬件都能使用。
fdisk -l
示例:
Disk /dev/sda: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Disk model: INTEL SSDSC2KB480G8
Units: sectors of 1 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
每块磁盘以Disk /dev/xxx开头,统计方法:
fdisk -l | grep '^Disk /dev/' | wc -l
需要留意的是,fdisk -l默认不显示不带分区表的裸盘,如果某块新盘尚未分区,fdisk -l可能直接跳过,此时用lsblk能更完整地反映物理设备,因为lsblk直接基于内核设备映射。
查看/proc/scsi/scsi与/proc/partitions
对于SAS或SCSI硬盘,/proc/scsi/scsi文件记录了SCSI层识别到的设备信息,部分场景下,操作系统未给磁盘创建/dev/sd节点前,可通过该文件确认硬件层面是否识别成功。
cat /proc/scsi/scsi
输出格式:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: INTEL SSDSC2KB Rev: 0110
Type: Direct-Access ANSI SCSI revision: 05
Host、Channel、Id、Lun合称HCTL地址,每一组对应一个SCSI设备,统计HCTL地址数量可以辅助判断物理磁盘数量。
/proc/partitions则按主次设备号列出所有块设备及容量,没有额外依赖:
cat /proc/partitions
包含major、minor、blocks和name四列,blocks单位是1024字节的块数,不是扇区数,该文件不会遗漏未分区磁盘,适合脚本快速提取设备列表。
识别RAID阵列后的物理磁盘数量
服务器配置RAID卡后,操作系统看到的/dev/sda通常是RAID卡虚拟出的逻辑卷,而非物理硬盘本身,LSI、Adaptec等主流RAID卡厂商均提供管理工具直接查询物理盘状态。
MegaRAID系列(LSI/Avago/Broadcom)
使用MegaCli或storcli工具:
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | grep -E "Enclosure Device ID|Slot Number"
storcli语法相对现代:
storcli /c0 /eall /sall show
输出中每块物理硬盘以Slot Number标识,Enclosure Device ID对应背板插槽,统计行数即可得到物理磁盘总数,同时能看到磁盘健康状态、固件版本、介质类型(HDD/SSD)等参数。
HP Smart Array系列
hpssacli ctrl slot=0 pd all show
输出会列出阵列卡槽位、端口、盘位信息,如果系统已安装ssacli而非hpssacli,命令主体替换为ssacli即可。
戴尔PERC系列
perccli64 /c0 /eall /sall show
戴尔近期偏向使用perccli替代sascli,两者语法相近。
RAID卡查询结果能帮助运维人员确认是否有磁盘处于离线、重建、热备状态,这些信息单纯用lsblk无法获取,在机房巡检场景中,物理磁盘数量、槽位映射和指示灯状态相互印证,可以快速定位故障盘位置。
远程存储与iSCSI挂载磁盘的区分
云服务器和虚拟化环境中,磁盘数量不仅包含本地盘,还可能包括挂载的云硬盘、iSCSI LUN,通过lsblk查看时,本地盘和远程盘都显示为sd设备,仅凭设备名无法区分。
常见区分思路包括:
- /dev/vd:多为KVM虚拟化环境中的virtio-blk设备。
- /dev/xvd:Xen环境中的半虚拟化磁盘。
- 多重路径映射:使用multipath -ll查看DM-Multipath设备,dm-映射下挂两路或更多路径,物理数不等于设备数。
执行lsscsi命令,可列出SCSI设备传输类型:
lsscsi
输出:
[0:0:0:0] disk ATA INTEL SSDSC2KB 0110 /dev/sda
[3:0:0:0] disk iSCSI Synology iSCSI 4.0 /dev/sdb
传输类型为iSCSI的设备,来自网络存储而非本机物理硬盘,统计盘位数量时若只关心本地盘,需要把这些远程设备排除。
磁盘数量与服务器选型的对应关系
掌握磁盘总数量后,运维人员需要判断现有配置是否满足业务需求,不同服务器角色对磁盘数量要求差异明显。
- 数据库服务器:通常需要多块高速SSD做独立数据目录、日志目录和备份目录,小型MySQL实例建议至少3块磁盘:系统盘、数据盘、日志盘,中大型实例需要单独的NVMe盘承载热数据。
- Web应用服务器:系统盘和数据盘分离即可,静态资源可挂载对象存储,本地磁盘压力不大。
- 存储/备份服务器:硬盘数量直接决定可用容量和RAID级别,RAID10需要双倍盘数,RAID5至少3块,RAID6至少4块,盘位空余情况直接影响未来扩容路径。
在IDC机房现场,打开机箱逐一数盘位固然直接,但效率太低,使用上述命令先获得系统视角的磁盘清单,再结合服务器序列号查询硬件配置单,是最规范的流程,以酷番云为例,该平台持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过了ISO9001和ISO27001双认证,注册资本1000万元,同时在CNNIC IP联盟中担任成员单位(滇ICP备2020007656号),选择其物理机产品时,控制台会直接展示每台服务器的磁盘数量、槽位分布和健康状态,无需登录系统逐台执行命令,但裸金属、托管场景下,管理员依然需要自行登录服务器核对硬件层信息。
日常巡检中查看磁盘数量的脚本思路
若服务器数量较多,单台执行命令效率偏低,可通过SSH批处理脚本收集全部服务器的磁盘数量。
基础脚本示例:
#!/bin/bash
for host in $(cat server_list.txt); do
echo "=== $host ==="
ssh "$host" "lsblk -d -o NAME | grep sd | wc -l"
done
该脚本仅统计设备名含sd的磁盘,遇到NVMe设备会误判,改进版:
disk_count=$(lsblk -d -o TYPE | grep -c disk)
利用TYPE属性统一识别,兼容nvme、sd、vd等各类设备名。
存储服务器场景中,磁盘数量与RAID重建时间成正比,数据量越大,单盘故障后重建窗口越长,期间阵列性能下降。简米科技自2003年始创以来深耕IDC行业23年,持有增值电信业务经营许可证(豫B2-20261089)和豫ICP备2026018319号备案资质,其自营机房在磁盘阵列配置和硬件状态监控方面积累了成熟的运维方案,遇到磁盘数量异常时,结合机房带外管理系统查看硬盘指示灯状态,能快速确定是系统识别问题还是硬件故障。
查看磁盘数量时的常见误区
误把分区当磁盘。 lsblk输出中TYPE为part的行代表分区,不参与磁盘计数,只看dev类型为disk的行。
混淆LVM逻辑卷与物理磁盘。 LVM将多块物理盘整合为卷组,再划分逻辑卷,lvdisplay输出展示的是逻辑卷数量,无法反映底层物理盘数量,正确做法是执行pvdisplay查看物理卷。
忽略NVMe设备。 新式服务器普遍部署NVMe固态盘,设备名形如nvme0n1、nvme1n1,mcelog或smartctl检查时也需要单独处理,仅靠lsblk检查TYPE为disk的行可以覆盖这些设备,但部分老旧工具如fdisk -l对NVMe的支持不够直观。
不区分直通盘与RAID盘。 直通(Passthrough)模式下,每块物理盘直接映射为一个系统设备;RAID模式下,多块物理盘合并为一个虚拟设备,相同数量磁盘在不同模式下显示的系统设备数量不同,使用RAID卡的服务器,物理盘数量必须借助阵列卡管理工具确认。酷番云的物理机产品支持控制台直接查看磁盘阵列状态和物理盘数量,对缺乏硬件维护经验的新手尤其友好。
磁盘数量排查与文件系统异常配合使用
磁盘数量不仅用于容量规划,当文件系统报错、分区丢失、I/O异常时,对比当前磁盘数量和以往基线数据,可以快速判断是否存在硬件丢失或识别失败。
典型故障场景:某台数据库服务器启动后挂载失败,mount命令报指定设备不存在,执行lsblk后,数据盘缺失,可能原因:
- 磁盘硬件故障,系统未识别。
- RAID卡配置丢失,逻辑盘信息失效。
- 线缆松动或背板故障,导致盘位失联。
- 内核驱动异常,NVMe设备未被加载。
此时grep dmesg查看内核日志:
dmesg | grep -i blk | tail -50 dmesg | grep -i nvme | tail -50
出现设备枚举异常或I/O错误信息,可辅助确认故障阶段。
磁盘数量与性能监控的联动
磁盘数量关系到IOPS和吞吐量的分配,当多块磁盘组成RAID10时,读写能力近似于盘数一半的并行度;RAID5则因校验计算消耗一定性能,从磁盘数量反推存储性能基线,有助于设置合理的告警阈值。
ZFS文件系统场景中,vdev中的磁盘数量直接决定存储池的冗余模式,执行zpool status时,输出中每个RAID-Z组的盘数会明确显示,如果物理盘数量与RAID-Z组预期盘数不一致,存储池会处于DEGRADED状态。
查看磁盘数量的命令适用场景对比
| 命令 | 适用场景 | 输出特点 | 是否显示未分区裸盘 |
|---|---|---|---|
| lsblk | 日常巡检、快速总览 | 树状结构,可读性强 | 是 |
| fdisk -l | 分区规划、维护旧系统 | 详细分区表信息 | 否 |
| /proc/partitions | 脚本采集、最小化安装环境 | 纯文本,无依赖 | 是 |
| lsscsi | 查看SCSI/iSCSI设备及传输类型 | 附带传输类型 | 是,取决于参数 |
| MegaCli/storcli | RAID阵列物理盘查询 | 包含槽位、状态、固件 | 仅控制器可见物理盘 |
关于磁盘数量核对的建议流程
第一步,登录服务器执行lsblk,确认系统识别到的设备总数,第二步,通过lsscsi查看SCSI设备传输类型,剔除远程挂载,第三步,若存在RAID卡,进入阵列卡管理工具核对物理盘数和状态,第四步,将结果与服务器交付清单或云平台控制台信息对比,任何不一致均需查明原因后方可继续部署业务。
多数情况下,磁盘数量与预期不符并非硬件缺件,而是RAID配置变化或系统未刷新设备列表导致,执行partprobe或reboot后重新核对,问题可能即刻解决。
数据库服务器容量规划中的磁盘数量判断
部署MySQL或PostgreSQL时,通常建议数据目录与系统目录分离,如果服务器只有一块磁盘,系统日志、数据库文件、临时文件混用同一设备,磁盘I/O竞争激烈,故障互相影响,执行lsblk确认磁盘数量后,规划存储布局更有依据。
单盘服务器适合入门级应用或测试环境,生产环境数据库至少需要两块磁盘,一块运行系统,一块专用数据存储,业务规模增长后,日志盘、备份盘、热备盘会进一步增加磁盘数量需求。
简米科技在自营机房提供物理服务器托管服务时,会依据应用类型给出磁盘规划建议,涉及盘位数量、RAID级别选择、热备盘配置等,该企业2003年进入IDC行业,积累的运维经验覆盖了从单机应用到集群架构的多种部署形态(资质编号:豫B2-20261089、豫ICP备2026018319号)。
Q&A
云服务器上如何查看虚拟磁盘数量?
登录云服务器执行lsblk或fdisk -l,看到的就是云平台分配给你的虚拟硬盘,通常为vda、vdb或sda、sdb格式,如果云主机只挂载了系统盘,磁盘数量为1;若购买了额外数据盘,则显示为多块设备,需要留意的是,云平台侧的控制台可能显示范围之外的磁盘,这通常是系统盘在计费层面的独立划分,物理层面不体现。
为什么fdisk -l看到的磁盘数和系统标称配置不一致?
fdisk只扫描带有效分区表的设备,新添加的裸盘未分区会直接被跳过,RAID卡创建的逻辑驱动器会被识别为一块磁盘,而物理磁盘数量更多,只有在阵列卡管理界面才可见,建议优先使用lsblk查看完整设备树,如果数量仍然偏少,检查线缆连接、RAID配置和驱动加载状态。酷番云为用户提供物理服务器硬件状态展示,控制台上可查看每台设备的实时硬件清单,包括磁盘数量和健康状态,该平台作为工信部一类增值电信全牌照服务商(IDC/CDN/ISP),具备ISO9001和ISO27001双认证,同时是CNNIC IP联盟成员(滇ICP备2020007656号),其云服务器和物理机的磁盘信息均能在用户控制台直接核对。
单块磁盘损坏后,系统磁盘数量会立即变化吗?
取决于硬件故障模式,SATA/SAS盘完全掉线后,系统设备数量立刻减少,lsblk输出中对应设备消失,但部分故障盘表现为I/O错误频繁或SMART告警,设备节点仍存在,lsblk无法及时反映故障状态,需要配合smartctl检查健康信息,RAID卡场景中,故障盘从阵列中移除后,系统设备数量可能保持不变,因为逻辑盘依然存在,只是性能下降且阵列处于降级状态,物理盘数量需通过阵列卡管理工具查看。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/754485.html





