在Linux系统中,查看硬盘信息是系统管理、故障排查和性能优化的基础操作,Linux提供了多种命令和工具,从不同维度(如设备识别、分区结构、使用情况、健康状态等)展示硬盘信息,本文将详细介绍这些方法,并通过示例帮助读者理解输出结果的含义。
硬盘设备命名规则
在Linux中,硬盘设备文件通常位于/dev目录下,命名规则与硬盘接口类型相关:
- IDE硬盘:早期接口,设备名为
/dev/hd[a-z]
(如/dev/hda
)。 - SCSI/SATA/USB硬盘:当前主流接口,设备名为
/dev/sd[a-z]
(如/dev/sda
,a
表示第1块硬盘,b
为第2块,以此类推)。 - NVMe硬盘:高速固态硬盘接口,设备名为
/dev/nvme[0-9]n[1-9]
(如/dev/nvme0n1
,0
为控制器编号,1
为磁盘编号)。 - PCIe SSD:部分高性能SSD可能以
/dev/pciename
形式命名,但较少见。
了解命名规则后,可通过ls /dev | grep -E 'sd|nvme|hd'
查看系统中的所有硬盘设备。
查看硬盘基本信息与分区结构
lsblk
:列出块设备信息(推荐)
lsblk
(list block devices)是Linux中最常用的块设备查看工具,以树状结构展示设备及其分区信息,支持自定义输出列。
常用参数:
-f
:显示文件系统类型(FSTYPE)、挂载点(MOUNTPOINT)和UUID。-m
:显示设备权限、所有者、组信息。-t
:显示设备拓扑结构(如层级、是否为虚拟设备)。-o NAME,SIZE,FSTYPE,MOUNTPOINT,ROTA
:自定义输出列(如设备名、大小、文件系统、挂载点、是否为旋转介质,ROTA=1
表示机械硬盘,0
表示SSD)。
示例:
lsblk -f -o NAME,SIZE,FSTYPE,MOUNTPOINT,ROTA
输出解读(示例表格):
NAME | SIZE | FSTYPE | MOUNTPOINT | ROTA |
---|---|---|---|---|
sda | 8T | 1 | ||
├─sda1 | 512M | vfat | /boot/efi | 1 |
└─sda2 | 8T | ext4 | 1 | |
nvme0n1 | 512G | 0 | ||
└─nvme0n1p1 | 512G | xfs | /data | 0 |
从输出可直观看到:sda
是1.8TB机械硬盘(ROTA=1),分为两个分区;nvme0n1
是512GB SSD(ROTA=0),仅有一个分区挂载到/data
。
fdisk
:查看和管理分区表
fdisk
是经典的分区工具,适合查看MBR或GPT分区表的详细信息。
用法:
fdisk -l /dev/sda # 查看/dev/sda的分区表
输出解读:
Device
:分区设备名(如/dev/sda1
)。Boot
:是否为启动分区(标记为)。Start/End
:分区的起始和结束扇区。Sectors
:分区大小(扇区数)。Size
:分区大小(自动换算为KB/MB/GB)。Id
:分区类型(如83
为Linux原生分区,8e
为LVM分区,7
为NTFS分区)。
交互模式:直接运行fdisk /dev/sda
进入交互界面,输入p
打印分区表,q
退出,m
查看帮助。
parted
:高级分区工具(支持GPT/MBR)
parted
比fdisk
更强大,支持GPT分区表、大容量硬盘(超过2TB),且可调整分区大小。
用法:
parted -l # 列出所有设备的分区信息
输出解读:
Model
:硬盘型号(如Samsung SSD 870 EVO 500GB
)。Disk /dev/nvme0n1
:硬盘设备名及总大小。Partition Table
:分区表类型(如gpt
)。Number
:分区编号,Start/End
:分区起始和结束位置,Size
:分区大小,File system
:文件系统类型。
查看磁盘使用情况
df
:文件系统磁盘使用量
df
(disk free)用于查看已挂载文件系统的磁盘使用情况,默认单位为KB。
常用参数:
-h
:人类可读格式(如1K
、234M
、2G
)。-T
:显示文件系统类型(如ext4
、xfs
、vfat
)。-i
:显示inode使用情况(inode耗尽会导致无法创建文件)。
示例:
df -hT
输出解读(示例表格):
Filesystem | Type | Size | Used | Avail | Use% | Mounted on |
---|---|---|---|---|---|---|
/dev/sda2 | ext4 | 8T | 800G | 950G | 45% | |
/dev/nvme0n1p1 | xfs | 512G | 300G | 200G | 60% | /data |
tmpfs | tmpfs | 16G | 0 | 16G | 0% | /dev/shm |
重点关注Use%
(使用率)和Mounted on
(挂载点),避免磁盘空间不足导致系统故障。
du
:目录/文件磁盘占用
du
(disk usage)用于统计指定目录或文件的磁盘占用空间,适合定位大文件或目录。
常用参数:
-h
:人类可读格式。-s
:汇总指定目录的总大小(不显示子目录详情)。--max-depth=N
:限制递归深度(如--max-depth=1
仅统计一级子目录)。
示例:
du -sh /home/* | sort -hr # 按大小倒序查看用户目录占用
输出解读:
2G /home/user1
800M /home/user2
50M /home/user3
可快速定位占用空间大的用户或目录。
查看硬盘健康状态与物理信息
smartctl
:硬盘SMART信息(关键工具)
SMART(Self-Monitoring, Analysis and Reporting Technology)是硬盘的自我监控技术,smartctl
来自smartmontools
包,用于读取硬盘SMART信息,判断健康状态。
安装(Ubuntu/Debian):
sudo apt install smartmontools
常用参数:
-i
:显示设备信息(型号、序列号、固件版本)。-H
:显示硬盘健康状态(PASSED
正常,FAILED
异常)。-a
:显示所有SMART信息(包括属性、错误日志)。-x
:显示SMART详细信息(包括原始值和阈值)。
示例:
sudo smartctl -H /dev/sda sudo smartctl -a /dev/nvme0n1 | grep -E "Reallocated_Sector_Ct|Current_Pending_Sector"
输出解读:
SMART Health Status: PASSED
:硬盘健康状态正常。- 关键属性(机械硬盘):
Reallocated_Sector_Ct
(重分配扇区数):大于0表示扇区损坏,需关注。Current_Pending_Sector
(当前待重定向扇区数):大于0表示读取错误。Uncorrectable_Error_Cnt
(不可纠正错误计数):大于0表示数据丢失风险。
- SSD专属属性:
Wear_Leveling_Count
(磨损均衡计数):反映SSD写入寿命,数值越大越接近寿命极限。Available_Reservd_Space
(预留空间):剩余预留空间比例,低于10%需更换。
hdparm
:获取/设置硬盘参数
hdparm
用于查看硬盘的物理参数,如缓存大小、传输模式、是否支持TRIM(对SSD重要)。
示例:
hdparm -I /dev/sda | grep -E "cache|TRIM" # 查看缓存和TRIM支持
输出解读:
* Nominal Media Rotation Rate: 7200
:机械硬盘转速(7200RPM)。Device does not support TRIM
:不支持TRIM(影响SSD写入性能)。* LBA48 supported
:支持LBA48 addressing(突破2TB容量限制)。
通过/sys
文件系统查看物理信息
Linux将设备信息暴露在/sys
目录下,可直接查看硬盘型号、接口类型等:
cat /sys/block/sda/device/model # 硬盘型号 cat /sys/block/nvme0n1/device/device_type # 接口类型(如NVMe) cat /sys/block/sda/queue/rotational # 是否为旋转介质(1=机械硬盘,0=SSD)
常用命令对比总结
命令 | 主要用途 | 常用参数 | 示例场景 |
---|---|---|---|
lsblk |
查看块设备及分区结构 | -f , -m , -o NAME,SIZE,FSTYPE |
快速了解设备、分区、挂载信息 |
fdisk |
查看/管理MBR/GPT分区表 | -l , 交互模式(p /q ) |
查看分区类型、大小、启动标记 |
parted |
高级分区管理(支持大容量) | -l , print (交互模式) |
调整分区大小、查看GPT分区 |
df |
查看已挂载文件系统使用量 | -h , -T , -i |
监控磁盘空间是否不足 |
du |
统计目录/文件占用空间 | -sh , --max-depth=N |
定位大文件、清理磁盘 |
smartctl |
查看硬盘SMART健康状态 | -H , -a , -x |
判断硬盘是否损坏、预测寿命 |
hdparm |
获取硬盘物理参数 | -I , -t (基准测试) |
查看缓存、TRIM支持、转速 |
blkid |
查看块设备属性(UUID/FS类型) | -o value -s UUID |
获取分区UUID用于挂载 |
相关问答FAQs
Q1:Linux中/dev/sda和/dev/nvme0n1有什么区别?如何确认硬盘接口类型?
A:/dev/sda
是SCSI/SATA/USB等传统接口硬盘的设备名,而/dev/nvme0n1
是NVMe接口的固态硬盘,可通过以下方式确认接口类型:
- 通过设备名判断:
sd
前缀通常为SATA/SCSI,nvme
前缀为NVMe。 - 通过
lsblk
查看拓扑结构:lsblk -t | grep -E "sda|nvme0n1"
输出中
SATA
、NVMe
等字段直接标注接口类型。 - 通过物理信息判断:
cat /sys/block/sda/device/interface # 可能输出"ata"(SATA)或"scsi" cat /sys/block/nvme0n1/device/device_type # 输出"NVMe"
Q2:如何判断硬盘是否即将损坏?需要关注哪些SMART属性?
A:通过smartctl
查看SMART信息,重点关注以下属性(不同硬盘厂商属性名可能略有差异):
- 机械硬盘:
Reallocated_Sector_Ct
(重分配扇区数):大于0表示扇区损坏,持续增长需立即更换。Current_Pending_Sector
(当前待重定向扇区数):大于0表明存在读取错误。Uncorrectable_Error_Cnt
(不可纠正错误计数):大于0可能导致数据丢失。Raw_Read_Error_Rate
(原始读取错误率):异常升高表明磁头或盘片问题。
- SSD:
Wear_Leveling_Count
(磨损均衡计数):反映SSD写入寿命,数值越大越接近寿命极限(需结合厂商寿命阈值)。Available_Reservd_Space
(预留空间):剩余比例低于10%时性能下降,需更换。Media_Wearout_Indicator
(媒体磨损指标,部分厂商支持):百分比形式,低于20%需警惕。
操作建议:定期执行sudo smartctl -a /dev/sda | grep -E "(ATTRIBUTE_ID|fail)"
,若出现FAILING_NOW
或Pre-fail
属性异常,立即备份数据并更换硬盘。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26283.html