
Linux 磁盘相关命令
磁盘管理
参考文章:菜鸟教程-https://www.runoob.com/linux/linux-filesystem.html
df(查看磁盘空间)
disk free 检查文件系统的磁盘空间占用情况。(查看空间使用情况、挂载点)
# 将容量结果以易读的容量格式显示出来
df -h
常用参数:
-h
:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。-T
:显示文件系统的类型。-t <文件系统类型>
:只显示指定类型的文件系统。-i
:显示 inode 使用情况。-H
:该参数是-h
的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。-k
:这个选项会以 KB 作为单位显示磁盘空间使用情况。-a
:该参数将显示所有的文件系统,包括虚拟文件系统,例如proc
、sysfs
等。如果没有使用该选项,默认情况下,df
命令不会显示虚拟文件系统。
du(查看文件和目录大小)
disk used 命令用于查看文件和目录占用空间情况
# 只列出当前目录下的所有文件夹容量(包括隐藏文件夹)
du
# 将文件的容量也列出来
du -a
# 检查根目录底下每个目录所占用的容量
du -sm /*
常用参数:
-a
:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h
:以人们较易读的容量格式 (G/M) 显示;-s
:仅显示指定目录或文件的总大小,而不显示其子目录的大小。-S
:包括子目录下的总计,与 -s 有点差别。-k
:以 KBytes 列出容量显示;-m
:以 MBytes 列出容量显示;
fdisk(查看磁盘分区)
磁盘分区表操作工具
# 列出所有分区信息
fdisk -l
常用参数:
-l
:输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
# 操作磁盘
fdisk /dev/sdX
离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。
Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition <==删除一个partition
l list known partition types
m print this menu
n add a new partition <==新增一个partition
o create a new empty DOS partition table
p print the partition table <==在屏幕上显示分割表
q quit without saving changes <==不储存离开fdisk程序
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit <==将刚刚的动作写入分割表
x extra functionality (experts only)
磁盘格式化
mkfs
make filesystem,适用于磁盘分区后进行格式化操作。
# 显示 mkfs 支持的文件格式(按两下 tab 键)
mkfs[tab][tab]
# 指定将某个分区格式化为 ext4
mkfs -t ext4 /dev/sdX1
常用参数:
-t
:文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
磁盘检验
fsck(分区格式检查)
file system check,用来检查和维护不一致的文件系统。
# 显示 fsck 支持的文件格式(按两下 tab 键)
fsck[tab][tab]
# 强制检测分区 如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。
fsck -C -f -t ext3 /dev/sdXX
常用参数:
-t
: 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数-s
: 依序一个一个地执行 fsck 的指令来检查-A
: 对/etc/fstab 中所有列出来的 分区(partition)做检查-C
: 显示完整的检查进度-d
: 打印出 e2fsck 的 debug 结果-p
: 同时有 -A 条件时,同时有多个 fsck 的检查一起执行-R
: 同时有 -A 条件时,省略 / 不检查-V
: 详细显示模式-a
: 如果检查有错则自动修复-r
: 如果检查有错则由使用者回答是否修复-y
: 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。
磁盘挂载与卸除
mount(挂载)
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
# 将 hdc6 分区挂载到 /mnt/hdc6
mount /dev/hdc6 /mnt/hdc6
unmount(卸除)
umount [-fn] 装置文件名或挂载点
# 卸载 /dev/hdc6
umount /dev/hdc6
常用参数:
-f
:强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;-n
:不升级 /etc/mtab 情况下卸除。
数据擦除
shred(推荐)
用随机位覆盖文件或整个磁盘中的数据,并将其从系统中安全地删除。(Linux 默认安装)
# -v显示操作 -n擦除一次 -z 擦除后用0填充
shred -v -n 1 -z /dev/sdX
常用参数:
-n N
:指定覆盖次数(默认3次),增加次数可提升安全性,但耗时更长。例如,-n 5
表示覆盖5次
-z
:最后一次覆盖使用0填充,以隐藏擦除痕迹
-v
:显示操作进度,便于监控执行过程
--random-source=FILE
:指定随机数据源(如/dev/urandom
或自定义文件),增强随机性
-u
:擦除后删除文件(适用于文件擦除,不推荐直接用于磁盘设备)
dd(快速)
从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
# 使用0填充整个磁盘 bs=1M块大小 status=progress显示进度
dd if=/dev/zero of=/dev/sdX bs=1M status=progress
# 备份整个分区为 img 文件
dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
物理销毁
若磁盘无法正常读写,拆解硬盘并用强磁铁破坏盘片,使用电钻穿透盘片(至少3个不同位置)。
SMART
Self-Monitoring, Analysis, and Reporting Technology,用于了解磁盘状态,使用 smartctl 工具查询。大多数发行版默认安装,若没有则可手动安装 apt-get install smartmontools
# 查看磁盘完整报告
smartctl -a /dev/sdX
# 只显示硬盘基本信息(型号、序列号等)
smartctl -i /dev/sdX
# 快速查看磁盘健康状态(仅显示 SMART 检查结果)
smartctl -H /dev/sdX
# 仅显示 SMART 属性表
smartctl -A /dev/sdd
# 触发自检测试
smartctl -t short /dev/sda # 后台短测试(约2分钟)
smartctl -t long /dev/sda # 后台长测试(数小时,全面检测)
smartctl -C -t short /dev/sda # 前台短测试
smartctl -C -t long /dev/sda # 前台长测试
# 查看日志
smartctl -l selftest /dev/sda # 显示自检历史
smartctl -l error /dev/sda # 查看错误记录
坏道检测与修复
badblocks(坏道检测)
支持 非破坏性测试(仅读取数据,不修改)和 破坏性测试(写入测试数据,覆盖原有内容)两种模式,可保存结果至文件供后续修复工具(如 e2fsck
)使用。
# 扫描并保存结果至文件
badblocks -s -v -o badblocks.log /dev/sda
# 破坏性测试(慎用)
badblocks -wvs /dev/sda
常用参数:
-v
:显示详细进度和结果(如当前扫描块号、坏道统计)
-n
:非破坏性测试(默认模式),仅读取数据不写入-w
:破坏性测试,写入随机数据验证块可写性(该参数会覆盖磁盘数据,仅用于空盘检测或已备份的场景,需谨慎)-b <size>
:设置块大小(单位:字节),需与文件系统块对齐(如 -b 4096)
-s
:显示扫描进度百分比,便于监控耗时操作-o <file>
:将坏道列表输出到指定文件(如 -o badblocks.txt)-t <pattern>
:指定测试模式(如 -t random 用随机数据测试,提高检测准确性)
e2fsck
Linux 系统中用于检查和修复文件系统的核心工具。(仅适用于ext2/ext3/ext4文件系统)
# 自动修复可恢复错误,常用于定期维护或启动时检查
e2fsck -p /dev/sda1
# 扫描坏块并标记,防止数据写入损坏区域
e2fsck -c -y /dev/sda1
# 使用 badblocks 扫描的坏块数据
e2fsck -l badblocks.log /dev/sdX
常用参数:
-p / -a
:自动修复可恢复的错误,无需用户确认(-a 已弃用,推荐 -p)-y
: 强制回答所有问题为“是”,适用于非交互式修复
-n
:只读模式检查,显示问题但不修改(安全预览)-f
: 强制检查,即使文件系统标记为“干净”-c
:调用 badblocks 检查坏块(单次 -c 为只读,两次 -cc 为读写测试)-b
: 指定备用超级块(主超级块损坏时恢复数据)
-C 0
:显示进度条(文件描述符 0 对应终端)
-D
:优化目录结构(压缩空目录、重建哈希索引)-l <file>
:添加指定文件中的块号列表到坏块列表
高级管理工具 hdparm
功能:
硬件信息查询:显示硬盘型号、序列号、固件版本、接口类型等详细信息(通过 -i 或 -I 参数)。
性能调优:调整 DMA 模式(-d)和 32位 I/O 模式(-c),提升数据传输效率、设置预读分区数(-a)和写入缓存(-W),优化读写性能。
电源管理:查看电源状态(-C)或设置省电模式(-S、-y、-Y)。
性能测试:测试磁盘实际读取速度(-t)和缓存读取速度(-T),评估硬盘健康状态。
安全操作:支持安全擦除(--security-erase)和固件升级(--fwdownload),但需谨慎使用。
常用参数及示例
信息查看类
# 显示启动时检测的硬件信息
hdparm -i /dev/sda
# 直接读取硬盘详细规格(更全面)
hdparm -I /dev/sda
# 显示磁头、磁道、扇区等几何参数
hdparm -g /dev/sda
性能测试类
# 测试硬盘实际读取速度(单位:MB/s)
hdparm -t /dev/sda
# 测试缓存读取速度(反映内存性能)
hdparm -T /dev/sda
参数调整类
# 设置预读分区数为256(提升大文件读取效率)
hdparm -a 256 /dev/sda
# 启用写入缓存(提高写入速度)
hdparm -W 1 /dev/sda
# 设置空闲60秒后进入省电模式
hdparm -S 60 /dev/sda
高级功能类
# 安全擦除硬盘数据(需密码)
hdparm --security-erase pass /dev/sda
# 升级硬盘固件(高风险操作)
hdparm --fwdownload firmware.bin /dev/sda
典型使用场景
快速评估硬盘性能
# 同时测试缓存和实际读取速度
hdparm -Tt /dev/sda
优化服务器硬盘参数
# 启用DMA、预读512块、写入缓存
hdparm -a 512 -d 1 -W 1 /dev/sda
排查磁盘响应缓慢问题
# 检查电源状态是否为“active/idle”
hdparm -C /dev/sda
# 确认接口速率(如SATA 6Gb/s)
hdparm -I /dev/sda | grep "Transport"