在Linux系统中,查看硬盘信息是系统管理、故障排查和容量规划的基础操作,Linux提供了多种命令和工具,帮助用户从不同维度获取硬盘的详细信息,包括设备识别、分区结构、使用情况、健康状态等,本文将详细介绍常用命令的使用方法及输出解读,并通过表格对比不同工具的特点,最后附上常见问题解答。
基础信息查看:识别硬盘设备
lsblk
:列出块设备信息
lsblk
(list block devices)是Linux中最常用的块设备查看工具,以树状结构显示硬盘及其分区信息,无需root权限即可运行。
常用选项:
-l
:以列表形式输出(默认为树状)。-f
:显示文件系统信息(如UUID、挂载点)。-d
:只显示磁盘设备,不显示分区。-m
:显示设备所有者和权限信息。
示例输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 50G 0 part / └─sda2 8:2 0 50G 0 part /home sdb 8:16 1 1.8T 0 disk └─sdb1 8:17 1 1.8T 0 part /data sr0 11:0 1 1024M 0 rom
字段解读:
NAME
:设备名(sda
为第一块SATA硬盘,sdb
为第二块,sr0
为光驱)。MAJ:MIN
:主设备号和次设备号,用于内核识别设备。RM
:是否为可移动设备(1表示可移动,如U盘;0表示固定硬盘)。SIZE
:设备总容量。RO
:是否为只读设备(0表示可读写)。TYPE
:设备类型(disk
为磁盘,part
为分区,rom
为光驱)。MOUNTPOINT
:挂载点(未挂载时显示为空)。
lshw
:列出硬件详细信息
lshw
(list hardware)是一款功能强大的硬件信息查看工具,可显示硬盘的型号、序列号、接口类型(如SATA、NVMe)等详细信息,需root权限。
常用选项:
class disk
:仅显示磁盘类硬件信息。-short
:简化输出,仅显示关键信息。
示例输出:
*-disk:0 description: SCSI Disk product: Samsung SSD 870 EVO vendor: Samsung physical id: 0.0.0 bus info: scsi@0:0.0.0 logical name: /dev/sda version: 2B6Q serial: S3Z8NB0K123456 size: 931.51GiB (1TB) capacity: 931.51GiB (1TB) width: 64 bits clock: 300MHz capabilities: partitioned partitioned:dos configuration: ansiversion=5 signature=00000000 sectorsize=512
分区信息查看:分析分区结构
fdisk
:磁盘分区表工具
fdisk
是经典的分区管理工具,可查看磁盘的分区表类型(MBR/GPT)及分区详情,需root权限。
常用选项:
-l
:列出所有磁盘的分区信息。
示例输出:
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors Disk model: Samsung SSD 870 EVO Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 12345678-9012-3456-7890-ABCDEF123456 Device Start End Sectors Size Type /dev/sda1 2048 104857599 104855552 50G Linux filesystem /dev/sda2 104857600 1953523711 1848666112 871.5G Linux filesystem
关键信息:
Disklabel type
:分区表类型(gpt
为GUID分区表,支持2TB以上硬盘;dos
为MBR,最大支持2TB)。Device
:分区设备名(sda1
为第一个分区)。Sectors
/Size
:分区起始扇区、总扇区数及容量。
parted
:高级分区工具
parted
支持GPT/MBR分区表,可查看分区对齐、文件系统类型等高级信息,适合处理大容量磁盘。
常用选项:
-l
:列出所有磁盘分区信息。
示例输出:
Model: Samsung SSD 870 EVO (scsi) Disk /dev/sda: 1000GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 53.7GB 53.7GB ext4 boot, 2 53.7GB 1000GB 947GB ext4
使用情况统计:磁盘空间分析
df
:文件系统磁盘使用情况
df
(disk free)用于查看已挂载文件系统的空间使用率,支持按文件系统或inode统计。
常用选项:
-h
:以人类可读格式显示(如KB、MB、GB)。-T
:显示文件系统类型。-i
:显示inode使用情况(而非磁盘块)。
示例输出:
Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 50G 20G 28G 42% / /dev/sda2 ext4 871G 150G 676G 18% /home tmpfs tmpfs 16G 0 16G 0% /dev/shm
du
:目录/文件磁盘占用
du
(disk usage)用于统计指定目录或文件的磁盘占用空间,常配合sort
或find
使用。
常用选项:
-sh
:以人类可读格式显示总计(s
汇总,h
人性化)。--max-depth=N
:限制统计层级(如--max-depth=1
仅统计一级子目录)。
示例输出:
2G /home/user/documents 5.6G /home/user/videos 7.8G /home/user
硬盘健康与性能检测
smartctl
:S.M.A.R.T.信息监控
smartctl
(来自smartmontools
工具包)可读取硬盘的S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)数据,用于评估硬盘健康状态,需root权限。
常用选项:
-a
:显示所有S.M.A.R.T.信息。-H
:仅显示健康状态(如“PASSED”或“FAILED”)。
示例输出:
SMART overall-health self-assessment test result: PASSED Device Model: Samsung SSD 870 EVO Serial Number: S3Z8NB0K123456 Total NVM Blocks: 1562500000 ... Attribute Name ID Flag Value Worst Threshold Power_On_Hours 9 0x0032 1234 0 0 Media_Wearout_Indicator 177 0x0013 98 0 10
关键指标:
Power_On_Hours
:通电时间(小时),反映硬盘使用强度。Media_Wearout_Indicator
:介质磨损指标(0-100),越低表示寿命损耗越大。
hdparm
:硬盘性能与参数测试
hdparm
用于查看或修改硬盘参数,支持读取缓存大小、传输模式等,也可进行简单的速度测试。
常用选项:
-I
:显示硬盘识别信息(如ATA标准、支持的特性)。-tT
:进行缓存读取速度测试(-t
为缓冲区测试,-T
为缓存测试)。
示例输出:
/dev/sda: ATA device, with non-removable media Model Number: Samsung SSD 870 EVO Serial Number: S3Z8NB0K123456 Firmware Revision: 2B6Q ... Timing cached reads: 12345 MB/sec Timing buffered disk reads: 678 MB/sec
工具对比与适用场景
为方便快速选择工具,以下通过表格对比主要命令的特点:
命令/工具 | 主要用途 | 需要root | 输出重点 | 适用场景 |
---|---|---|---|---|
lsblk |
列出块设备及分区结构 | 否 | 设备名、大小、挂载点 | 快速查看设备基本信息 |
lshw |
硬件详细信息(型号、序列号) | 是 | 硬件厂商、接口类型、容量 | 硬件资产盘点、故障定位 |
fdisk |
分区表管理与分析 | 是 | 分区类型、起始/结束扇区 | MBR/GPT分区查看与修改 |
parted |
高级分区操作(支持GPT) | 是 | 分区对齐、文件系统类型 | 大容量磁盘、分区优化 |
df |
已挂载文件系统空间使用 | 否 | 使用率、剩余空间 | 实时监控磁盘空间 |
du |
目录/文件空间占用统计 | 否 | 目录层级、文件大小 | 定位大文件、清理冗余数据 |
smartctl |
S.M.A.R.T.健康状态监控 | 是 | 硬盘寿命、错误计数、通电时间 | 硬件故障预警、性能评估 |
hdparm |
硬盘参数与性能测试 | 是 | 缓存大小、传输模式、速度测试 | 性能测试、参数优化 |
相关问答FAQs
Q1: 如何查看硬盘的通电时间和读写次数?
A: 使用smartctl
命令结合grep
过滤关键字,
sudo smartctl -a /dev/sda | grep -E "Power_On_Hours|Total_LBAs_Written|Total_LBAs_Read"
输出示例:
Power_On_Hours: 1234 (hour) Total_LBAs_Written: 123456789 (sector) Total_LBAs_Read: 987654321 (sector)
Power_On_Hours
为通电时间,Total_LBAs_Written/Read
为累计写入/读取的扇区数(可通过扇区大小×扇区数
换算为容量)。
Q2: 为什么df
命令显示的已用空间与du
命令统计的不一致?
A: 主要原因有以下几点:
- 文件缓存:
df
统计的是磁盘块实际占用空间,而du
默认不统计已删除但仍在缓存中的文件(可通过du --exclude=lost+found
排除)。 - 保留空间:
df
包含文件系统为root用户保留的空间(默认5%),而du
统计的是用户实际使用的空间。 - 挂载点子目录:若目录被挂载到子目录(如
/home
挂载到/dev/sda2
),du /home
可能未统计子目录中的其他文件系统。 - inode占用:若文件数量过多导致inode耗尽,
df
可能显示空间未满,但du
无法统计新文件。
可通过df -i
查看inode使用情况,或使用df -B 1
和du -b -x --max-depth=1
(以字节为单位,排除其他文件系统)缩小差异。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37428.html