菜鸟科技网

Linux硬盘检测常用命令有哪些?

基础信息查看类

这类命令主要用于查看系统已识别到的硬盘设备、分区、文件系统类型、总容量、已用空间等信息。

Linux硬盘检测常用命令有哪些?-图1
(图片来源网络,侵删)

lsblk (List Block Devices)

用途:以树状图列出所有块设备信息,非常直观,是首选的查看设备信息的命令。

常用选项

  • -f--fs:显示文件系统类型、挂载点、UUID 等信息。
  • -d--nodeps:不显示从属设备(如分区),只显示磁盘本身。
  • -p--paths:显示完整的设备路径。

示例

# 列出所有块设备,包括文件系统信息
lsblk -f
# 输出示例:
# NAME        FSTYPE   FSVER   LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
# sda                                                                         
# ├─sda1      ext4     1.0           1234-abcd-5678-efgh                    45.2G    20% /
# └─sda2      swap     1             deadbeef-cafe-babe-1234                  0B     0% [SWAP]
# nvme0n1                                                                   
# └─nvme0n1p1 ext4     1.0           fedcba09-8765-4321-0001                  92G    15% /data

df (Disk Free)

用途:报告文件系统的磁盘空间使用情况,它按挂载点来显示,而不是按设备。

Linux硬盘检测常用命令有哪些?-图2
(图片来源网络,侵删)

常用选项

  • -h--human-readable:以人类可读的方式显示(如 K, M, G, T)。
  • -T--print-type:显示文件系统类型。
  • -x--exclude-type:排除指定类型的文件系统,df -x tmpfs 可以排除临时文件系统,只看真实硬盘。

示例

# 以人类可读方式显示所有已挂载文件系统的磁盘使用情况
df -hT
# 输出示例:
# Filesystem     Type      Size  Used Avail Use% Mounted on
# /dev/sda1      ext4       50G  9.8G   38G  21% /
# /dev/nvme0n1p1 ext4      100G  15G   83G  16% /data
# tmpfs          tmpfs      16G     0   16G   0% /dev/shm

fdisk & gdisk

用途:经典的磁盘分区管理工具。fdisk 用于 MBR/GPT 分区表,gdisk (GPT Disk) 是其 GPT 版本,更适合现代大硬盘。

注意:这两个工具是交互式的,主要用于管理分区,但也可以用来查看分区信息。

Linux硬盘检测常用命令有哪些?-图3
(图片来源网络,侵删)

示例

# 查看 /dev/sda 的分区表
sudo fdisk -l /dev/sda
# 查看 /dev/nvme0n1 的 GPT 分区表
sudo gdisk -l /dev/nvme0n1

输出会显示磁盘的几何信息、所有分区的起始/结束扇区、ID 类型等。


硬件详情与健康状态类

这类命令用于读取硬盘的 S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) 信息,这是评估硬盘健康状态最核心的技术。

smartctl

用途smartmontools 包的一部分,是读取和解析 S.M.A.R.T. 数据的黄金标准。

前提:需要安装 smartmontools

# Debian/Ubuntu
sudo apt-get install smartmontools
# CentOS/RHEL/Fedora
sudo yum install smartmontools

常用选项

  • -a--all:显示所有 S.M.A.R.T. 信息和属性。
  • -H--health:仅显示硬盘的整体健康评估。
  • -i--info:显示设备标识信息(型号、序列号、固件版本等)。
  • -x--xall:显示所有信息,包括原始数据、制造商特定信息等。

示例

# 查看硬盘 /dev/sda 的整体健康状态
sudo smartctl -H /dev/sda
# 查看硬盘 /dev/nvme0n1 的所有 S.M.A.R.T. 信息 (NVMe 使用不同的命令集)
sudo smartctl -a /dev/nvme0n1
# 输出示例 (关键部分):
# === START OF INFORMATION SECTION ===
# Device Model: WDC WD10EZEX-08M2NA0
# Serial Number: WD-WCC4N0KTY7PB
# ...
#
# === START OF READ SMART DATA SECTION ===
# SMART overall-health self-assessment test result: PASSED

解读

  • PASSED:硬盘状态良好。
  • FAILED:硬盘可能即将损坏,应立即备份数据并更换。
  • OK:通常与 PASSED 同义。
  • Pre-fail 属性:当该属性值低于阈值时,硬盘可能会很快失败。
  • Old_age 属性:随着使用时间正常变化的属性。

性能测试与基准类

这类命令用于测试硬盘的读写速度,帮助你了解 I/O 性能瓶颈。

dd

用途:一个通用的文件转换和复制工具,但常被用来进行简单的磁盘速度测试。注意:dd 有风险,用错会清除数据!

示例

# 测试写入速度 (在 /tmp 目录下创建一个 1GB 的文件)
# 注意:/tmp 通常在内存文件系统,要测试真实磁盘,请使用你自己的挂载点,如 /data
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
# 测试读取速度 (读取刚刚创建的文件)
dd if=/tmp/testfile of=/dev/null bs=1G iflag=direct
# 清理测试文件
rm /tmp/testfile
  • if: 输入文件
  • of: 输出文件
  • bs: 块大小 (block size)
  • count: 块数量
  • oflag=direct / iflag=direct: 绕过系统缓存,直接与磁盘 I/O,得到更真实的速度。

fio (Flexible I/O Tester)

用途:功能极其强大的 I/O 性能基准测试工具,是专业人员的首选,可以模拟各种负载(随机读、顺序写、混合等)。

前提:需要安装 fio

# Debian/Ubuntu
sudo apt-get install fio
# CentOS/RHEL/Fedora
sudo yum install fio

示例

# 创建一个 4GB 的测试文件
fio --name=randwrite-test --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=1 --size=4G --numjobs=1 --runtime=60 --time_based --group_reporting --filename=/data/testfile.fio
# 解释:
# --name: 测试作业名称
# --rw: 读写模式 (randwrite=随机写, read=顺序读, etc.)
# --bs: 块大小
# --direct: 是否使用 O_DIRECT 绕过缓存
# --size: 测试文件总大小
# --runtime: 运行时间

fio 的输出非常详细,包括 IOPS、带宽、延迟等关键性能指标。

iotop

用途:类似 top 命令,但它是用来实时监控磁盘 I/O 的,可以清晰地看到哪个进程在进行读写,以及 I/O 速率。

前提:需要 iotop 和 Python,通常需要 sudo 权限才能获取准确数据。

# 安装
sudo apt-get install iotop
# 运行
sudo iotop

它会按 I/O 使用率对进程进行排序,让你快速定位高 I/O 负载的进程。


诊断与低级工具类

这类工具用于更底层的硬件操作,如检查坏道。

badblocks

用途:在设备上查找坏块,这是一个破坏性操作,不要在有数据的磁盘上运行!

前提:通常需要卸载设备或从 Live USB 系统中运行。

示例

# 在 /dev/sdb 上进行非破坏性的只读测试 (查找坏块)
sudo badblocks -v -s /dev/sdb
# 在 /dev/sdb 上进行破坏性的写读测试 (会擦除数据!)
sudo badblocks -w -v -s /dev/sdb
  • -v: 详细模式。
  • -s: 显示进度。
  • -w: 写入测试(破坏性)。

总结与选择建议

命令 主要用途 关键信息 使用场景
lsblk 查看块设备结构 设备名、大小、分区、挂载点 快速了解系统中有哪些硬盘及其分区情况。
df -hT 查看文件系统使用情况 已挂载点的总容量、已用空间、文件系统类型 日常检查磁盘空间是否已满。
smartctl 检测硬盘健康状态 S.M.A.R.T. 属性、整体健康评估、硬盘型号/序列号 最重要的命令,定期运行以预防硬盘故障。
dd 简单性能测试 读写大文件的吞吐量 快速、粗略地估算顺序读写速度。
fio 专业性能基准测试 IOPS、带宽、延迟、各种负载下的表现 精确评估硬盘性能,特别是数据库、虚拟机等场景。
iotop 实时 I/O 监控 进程级别的实时读写速率 诊断系统卡顿问题,找出是哪个进程导致的 I/O 瓶颈。
badblocks 查找物理坏道 找到的坏块数量和位置 确认硬盘是否存在物理损坏(慎用!)。

最佳实践流程

  1. 初次检查:使用 lsblkdf -hT 了解系统硬盘布局和空间使用情况。
  2. 健康监控:定期(如每周)使用 sudo smartctl -a /dev/sdX 检查硬盘健康状态。
  3. 性能分析:当感觉系统变慢时,使用 iotop 查看是否有高 I/O 进程,如果想评估升级硬盘的效果,使用 fio 进行基准测试。
分享:
扫描分享到社交APP
上一篇
下一篇