Linux badblocks 命令实战示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将探索 Linux 的 badblocks 命令,这是一个用于扫描磁盘坏块的实用工具。badblocks 命令可以帮助识别并标记磁盘上的坏扇区,从而提高存储设备的可靠性。我们将学习如何对磁盘执行非破坏性的只读扫描以检测坏块,并在必要时修复它们。badblocks 命令是维护存储系统健康的有力工具。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/SystemInformationandMonitoringGroup(["`System Information and Monitoring`"]) linux(("`Linux`")) -.-> linux/UserandGroupManagementGroup(["`User and Group Management`"]) linux/SystemInformationandMonitoringGroup -.-> linux/df("`Disk Space Reporting`") linux/SystemInformationandMonitoringGroup -.-> linux/du("`File Space Estimating`") linux/SystemInformationandMonitoringGroup -.-> linux/dd("`File Converting/Copying`") linux/UserandGroupManagementGroup -.-> linux/sudo("`Privilege Granting`") subgraph Lab Skills linux/df -.-> lab-422568{{"`Linux badblocks 命令实战示例`"}} linux/du -.-> lab-422568{{"`Linux badblocks 命令实战示例`"}} linux/dd -.-> lab-422568{{"`Linux badblocks 命令实战示例`"}} linux/sudo -.-> lab-422568{{"`Linux badblocks 命令实战示例`"}} end

badblocks 命令介绍

在这一步中,我们将探索 badblocks 命令,这是一个用于扫描磁盘坏块的 Linux 实用工具。badblocks 命令可用于识别并标记磁盘上的坏扇区,从而帮助防止数据丢失并提高存储设备的可靠性。

首先,让我们检查系统中安装的 badblocks 命令版本:

badblocks --version

示例输出:

badblocks 1.46.2 (11-Nov-2022)

badblocks 命令提供了多个选项,允许你自定义扫描过程。一些最常用的选项包括:

  • -b:指定块大小(以字节为单位,默认值为 1024 字节)
  • -c:指定每次检查的块数(默认值为 64)
  • -s:显示扫描进度状态
  • -t:指定测试类型(非破坏性读写、非破坏性只读或破坏性测试)
  • -v:启用详细输出

要对磁盘执行非破坏性只读扫描,可以使用以下命令:

sudo badblocks -v /dev/sdb

该命令将扫描 /dev/sdb 磁盘上的坏块,并显示扫描进度。-v 选项启用详细输出,提供有关扫描的更多详细信息。

扫描磁盘坏块

在这一步中,我们将学习如何对磁盘进行全面扫描以识别坏块。

首先,让我们确定要扫描的磁盘。你可以使用 lsblk 命令列出系统中的所有块设备:

sudo lsblk

示例输出:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   100G  0 disk
└─sda1   8:1    0   100G  0 part /
sdb      8:16   0    20G  0 disk

在这个示例中,我们要扫描的磁盘是 /dev/sdb,这是一个 20GB 的磁盘。

要对磁盘执行非破坏性只读扫描,可以使用以下命令:

sudo badblocks -v /dev/sdb

该命令将扫描 /dev/sdb 磁盘上的坏块,并显示扫描进度。-v 选项启用详细输出,提供有关扫描的更多详细信息。

示例输出:

Checking blocks 0 to 41943039
Checking for bad blocks (read-only test)
Pass completed, 0 bad blocks found.

输出显示扫描未在 /dev/sdb 磁盘上发现任何坏块。

如果扫描发现坏块,你可以使用 -o 选项将坏块列表保存到文件中:

sudo badblocks -v -o badblocks.txt /dev/sdb

这将把坏块列表保存到当前目录下名为 badblocks.txt 的文件中。

修复磁盘坏块

在上一步中,我们学习了如何使用 badblocks 命令扫描磁盘坏块。在这一步中,我们将学习如何修复磁盘上的坏块。

要修复坏块,我们可以使用 e2fsck 命令,这是一个用于检查和修复 ext2、ext3 和 ext4 文件系统的工具。以下是使用它修复磁盘坏块的步骤:

  1. 确定要修复的磁盘的文件系统类型。你可以使用 lsblk 命令列出系统中的块设备并识别文件系统类型:

    sudo lsblk -f

    示例输出:

    NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
    sda1   ext4         c4a1d8d1-c3d3-4d4f-a6b0-e0c8c6a6d8d7 /
    sdb

    在这个示例中,磁盘 /dev/sdb 没有文件系统,因此我们无法使用 e2fsck 修复它。

  2. 如果磁盘具有 ext2、ext3 或 ext4 文件系统,你可以使用 e2fsck 命令修复坏块:

    sudo e2fsck -c /dev/sdb

    该命令将扫描 /dev/sdb 磁盘上的坏块并将其标记为不可用,防止它们用于数据存储。

    示例输出:

    e2fsck 1.46.2 (11-Nov-2022)
    Pass 1: Checking inodes, blocks, and sizes
    Checking for bad blocks (read-only test)
    Pass completed, 0 bad blocks found.

    输出显示 e2fsck 命令未在 /dev/sdb 磁盘上发现任何坏块。

如果 e2fsck 命令发现坏块,它会将其标记为不可用,并防止它们用于数据存储。你可以继续使用标记了坏块的磁盘,或者如果坏块数量过多,考虑更换磁盘。

总结

在本实验中,我们学习了 Linux 的 badblocks 命令,该命令用于扫描磁盘坏块。我们首先探索了 badblocks 命令提供的不同选项,例如指定块大小、每次检查的块数以及执行的测试类型。接着,我们学习了如何对磁盘执行非破坏性只读扫描以识别坏块。最后,我们讨论了如何使用 badblocks 命令修复磁盘上的坏块。

Linux 命令速查表

您可能感兴趣的其他 Linux 教程