侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux badblocks如何检查磁盘设备中损坏的区块或坏道(附实例教程和注意事项)

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,可以参考上面安装。
0

评论区