Linux badblocks命令介绍
badblocks是一个Linux命令,它用于检查磁盘设备中损坏的区块(也称为坏道)。损坏的区块是指那些已经损坏或不可靠的磁盘空间,它们可能会导致数据丢失或错误。badblocks命令可以在不破坏数据的情况下进行只读测试,也可以进行读写测试,但会覆盖磁盘上的数据。badblocks命令可以与e2fsck或mke2fs命令配合使用,来修复或避免损坏的区块。
Linux badblocks命令适用的Linux版本
badblocks命令是一个通用的Linux命令,它可以在大多数的Linux发行版中使用,如Ubuntu, Debian, Fedora, CentOS, Red Hat等。如果你的Linux系统没有安装badblocks命令,你可以使用以下的命令来安装它:
- Ubuntu或Debian系统:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install e2fsprogs
- Fedora或Red Hat系统:
[linux@bashcommandnotfound.cn ~]$ sudo yum install e2fsprogs
- CentOS 7系统:
[linux@bashcommandnotfound.cn ~]$ sudo yum install e2fsprogs
- CentOS 8系统:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install e2fsprogs
Linux badblocks命令的基本语法
badblocks命令的基本语法格式如下:
badblocks [选项] 设备 [最后区块 [首区块]]
其中,设备是要检查的磁盘设备的名称,如/dev/sda或/dev/sdb1等。最后区块和首区块是可选的参数,用于指定要检查的区块的范围,如果不指定,则默认检查整个设备。
Linux badblocks命令的常用选项说明
badblocks命令的常用选项说明如下:
选项 | 说明 |
---|---|
-b 区块大小 | 指定磁盘的区块大小,单位为字节,默认为1024字节。 |
-c 区块数 | 指定一次检查的区块数,默认为64个区块。 |
-d 延迟因子 | 指定读取区块之间的延迟因子,单位为微秒,默认为0。 |
-e 最大坏区块数 | 指定检查的最大坏区块数,如果超过这个数目,命令将停止运行。 |
-f | 强制检查已挂载的设备,这可能会损坏文件系统,不推荐使用。 |
-i 输入文件 | 指定一个输入文件,该文件包含已知的坏区块列表,这些坏区块将被跳过。 |
-n | 执行非破坏性的读写测试,不会覆盖磁盘上的数据。 |
-o 输出文件 | 指定一个输出文件,该文件将保存检查出的坏区块列表。 |
-p 次数 | 指定检查的次数,每次检查使用不同的测试模式。 |
-s | 显示检查的进度,以百分比的形式显示已检查的区块数。 |
-t 测试模式 | 指定一个或多个测试模式,用于读写测试。测试模式可以是一个十六进制数,表示要写入的数据模式,或者是以下的特殊值:random(随机模式),zero(全零模式),或者default(默认模式,即0xaa, 0x55, 0xff, 0x00)。 |
-v | 显示详细的信息,包括检查出的坏区块的编号。 |
-w | 执行破坏性的读写测试,会覆盖磁盘上的数据,使用前请备份数据。 |
Linux badblocks命令的实例
以下是一些使用badblocks命令的实例:
- 检查/dev/sdb1设备的坏区块,显示进度和详细信息,将结果保存到badblocks.txt文件中:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -sv -o badblocks.txt /dev/sdb1
- 检查/dev/sda设备的坏区块,使用非破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svn -o badblocks.txt /dev/sda
- 检查/dev/sdb1设备的坏区块,使用破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中,使用随机模式和全零模式进行两次检查:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svw -o badblocks.txt -t random -t zero -p 2 /dev/sdb1
- 检查/dev/sda设备的坏区块,使用破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中,使用0x55和0xaa两种数据模式进行两次检查:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svw -o badblocks.txt -t 0x55 -t 0xaa -p 2 /dev/sda
- 检查/dev/sdb1设备的坏区块,使用非破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中,跳过已知的坏区块,输入文件为known-badblocks.txt:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svn -o badblocks.txt -i known-badblocks.txt /dev/sdb1
- 检查/dev/sda设备的坏区块,使用非破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中,只检查前1000个区块:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svn -o badblocks.txt /dev/sda 1000
- 检查/dev/sdb1设备的坏区块,使用非破坏性的读写测试,显示进度和详细信息,将结果保存到badblocks.txt文件中,只检查第1000到第2000个区块:
[linux@bashcommandnotfound.cn ~]$ sudo badblocks -svn -o badblocks.txt /dev/sdb1 2000 1000
Linux badblocks命令的注意事项
使用badblocks命令时,需要注意以下几点:
- 不要在已挂载的设备上运行badblocks命令,这可能会损坏文件系统,除非你使用-f选项强制检查,但这也是不推荐的。
- 在使用破坏性的读写测试时,一定要先备份磁盘上的数据,因为这会覆盖磁盘上的数据,无法恢复。
- 在使用非破坏性的读写测试时,也要注意磁盘上的数据可能会被改变,尽量在没有数据的磁盘上进行测试。
- 在使用badblocks命令如果出现bash: badblocks: command not found,可以参考上面安装。
评论区