Linux badblocks命令教程:如何检测磁盘驱动器上的坏区(附案例详解和注意事项)

Linux badblocks命令介绍

badblocks(坏区检测)命令用于在设备(通常是磁盘分区)上搜索坏区。坏区是指已经损坏并且不再可靠使用的内存块。

Linux badblocks命令适用的Linux版本

badblocks命令在大多数Linux发行版中都可以使用,包括Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和Raspbian。如果在某些版本的Linux中没有预装badblocks命令,可以通过安装相应的包来获取。

Linux badblocks命令的基本语法

badblocks命令的基本语法如下:

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks [-b block_size] [-i input_file] [-o output_file] [-svwnf] [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks] [-p num_passes] [-t test_pattern [-t test_pattern [...]]] device [last_block [first_block]]

这里,device是要检查的设备,last_block是要检查的最后一个块,first_block是要检查的第一个块。

Linux badblocks命令的常用选项或参数说明

badblocks命令的选项较多,主要有以下几个:

选项 说明
-b block_size 指定块的大小(以字节为单位)。默认值是1024
-c blocks_at_once 指定一次测试的块数。默认值是64
-d delay_factor_between_reads 如果读取操作没有遇到错误,badblocks会在读取之间延迟;延迟将作为读取操作所花费时间的百分比来计算
-e max_bad_blocks 指定在中止测试之前的最大坏块数。默认值是0,这意味着测试将一直进行,直到达到测试范围的末尾
-i input_file 读取已知存在的坏块列表。badblocks将跳过这些已知的坏块,因为它们已知是坏的
-o output_file 将坏块列表写入文件,而不是标准输出
-p num_passes 执行的测试次数
-s 显示测试的当前进度,通过显示已扫描的块的百分比
-v 详细模式
-w 执行读写测试,通过在每个块上写入一些模式并进行比较
-n 执行非破坏性的读写测试
-f 强制在设备上运行测试,即使设备已挂载
-t test_pattern 使用的测试模式

Linux badblocks命令实例详解

下面是一些badblocks命令的使用实例。

实例1:基本的badblocks使用

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -v /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,并显示详细的输出。

实例2:将坏块列表写入文件

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -o badblocks.txt /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,并将坏块列表写入badblocks.txt文件。

实例3:执行非破坏性的读写测试

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -n /dev/sda1

这个命令会在/dev/sda1设备上执行非破坏性的读写测试。

实例4:执行读写测试

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -w /dev/sda1

这个命令会在/dev/sda1设备上执行读写测试。请注意,这是一个破坏性的测试,因为它会覆盖设备上的所有数据。

实例5:指定块的大小

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -b 4096 /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时指定块的大小为4096字节。

实例6:指定一次测试的块数

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -c 128 /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时指定一次测试的块数为128。

实例7:在中止测试之前的最大坏块数

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -e 10 /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时指定在中止测试之前的最大坏块数为10。

实例8:读取已知存在的坏块列表

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -i known-bad-blocks.txt /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时读取已知存在的坏块列表。

实例9:执行的测试次数

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -p 3 /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时指定执行的测试次数为3。

实例10:使用的测试模式

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -t random /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时指定使用的测试模式为随机。

实例11:强制在设备上运行测试

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ badblocks -f /dev/sda1

这个命令会在/dev/sda1设备上搜索坏区,同时强制在设备上运行测试,即使设备已挂载。

Linux badblocks命令的注意事项

  • 如果在使用badblocks命令时遇到bash: badblocks: command not found错误,那么可能是系统中没有安装相应的包。可以按照上面的方法进行安装。

Linux badblocks相关命令

badblocks 是用于扫描存储设备中损坏的区块的命令,以下是与 badblocks 相关的一些命令,以及一些其他常用命令:

badblocks 命令:检查设备上的坏道
fsck 命令:检查和修复文件系统
e2fsck 命令:检查 ext2/ext3/ext4 文件系统
mke2fs 命令:创建 ext2/ext3/ext4 文件系统
resize2fs 命令:调整 ext2/ext3/ext4 文件系统的大小
dumpe2fs 命令:打印 ext2/ext3/ext4 文件系统信息
tune2fs 命令:调整 ext2/ext3/ext4 文件系统的参数
df 命令:显示文件系统的磁盘使用情况
mount 命令:挂载文件系统
umount 命令:卸载已挂载的文件系统
dd 命令:复制文件并在进程中转换和格式化数据
blkid 命令:显示块设备的 UUID 和文件系统类型
lsblk 命令:列出所有可用块设备的信息
partprobe 命令:通知操作系统内核重新读取分区表
hdparm 命令:显示和设置硬盘参数
fstab 文件:存储挂载点和相关选项的静态文件系统信息
gparted 命令:图形化的分区编辑工具
parted 命令:磁盘分区和分区大小调整工具
fdisk 命令:磁盘分区表操作工具
cfdisk 命令:基于文本的磁盘分区表编辑器
ls 命令:列出文件和目录
cp 命令:复制文件和目录
rm 命令:删除文件或目录
mkdir 命令:创建新目录
mv 命令:移动或重命名文件和目录
top 命令:显示正在运行的进程
chmod 命令:改变文件或目录的权限
chown 命令:改变文件或目录的所有者和所属组

相关推荐
好好学操作系统4 分钟前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc7 分钟前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn7 分钟前
Linux同步机制之信号量
linux·服务器·网络
嵌入式学习菌7 分钟前
SPIFFS文件系统
服务器·物联网
旺仔Sec7 分钟前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
BullSmall28 分钟前
linux 根据端口查看进程
linux·运维·服务器
herinspace32 分钟前
管家婆软件年结存后快马商城操作注意事项
服务器·数据库·windows
_F_y39 分钟前
Linux:进程间通信
linux
嘻哈baby40 分钟前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible
weixin_462446231 小时前
Kali/ubuntu Linux 中彻底删除 Cursor 编辑器(含 dpkg 非空目录警告解决)
linux·ubuntu·cursor