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

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)
用途:报告文件系统的磁盘空间使用情况,它按挂载点来显示,而不是按设备。

常用选项:
-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 版本,更适合现代大硬盘。
注意:这两个工具是交互式的,主要用于管理分区,但也可以用来查看分区信息。

示例:
# 查看 /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 |
查找物理坏道 | 找到的坏块数量和位置 | 确认硬盘是否存在物理损坏(慎用!)。 |
最佳实践流程:
- 初次检查:使用
lsblk和df -hT了解系统硬盘布局和空间使用情况。 - 健康监控:定期(如每周)使用
sudo smartctl -a /dev/sdX检查硬盘健康状态。 - 性能分析:当感觉系统变慢时,使用
iotop查看是否有高 I/O 进程,如果想评估升级硬盘的效果,使用fio进行基准测试。
