如何运行检查盘?

Gui*_*oté 110 disk

我怀疑磁盘上可能有坏扇区。我使用了 ext3 文件系统。

什么工具是 Windows 的错误检查工具的最佳等价物?

arr*_*nge 122

磁盘

要检查坏扇区,请检查 SMART 数据,这可能是启动磁盘实用程序 ( Palimpsest )最容易访问的方法。即使您在那里没有看到任何坏块,也请启动自检以确保安全。

该程序捆绑在gnome-disk-utility包中。跑gksudo gnome-disks

来自 Palimpsest 的 SMART

或者在 Ubuntu 16.04 版本 (3.18) 中:

从磁盘智能

坏块

你也可以使用 badblocks

sudo badblocks -sv /dev/sda
Run Code Online (Sandbox Code Playgroud)

只是检查,或检查和修复首先将结果写入临时文件:

sudo badblocks -sv /dev/sda  > bad-blocks-result
sudo fsck -t ext4 -l bad-blocks-result /dev/sda1
Run Code Online (Sandbox Code Playgroud)

将检查整个磁盘并打印出/dev/sda上遇到的所有坏块。

badblocks手册:

重要提示:如果将 badblocks 的输出提供给 e2fsck 或 mke2fs 程序,正确指定块大小很重要,因为生成的块编号非常依赖于文件系统使用的块大小. 为此,强烈建议用户不要直接运行坏块,而是使用 e2fsck 和 mke2fs 程序的 -c 选项。

fsck

fsck本身不会帮助您找到坏扇区,更糟糕的是,如果有很多坏扇区,它可能会对您的数据造成更大的损害。仅在磁盘健康时使用它。

  • 实际上,badblocks 的手册不鼓励直接使用它,而是使用“-c”(用于只读检查)或“-cc”(用于读写检查)选项将用户引导至 e2fsck。 (4认同)
  • 这现在称为 gnome-disks (3认同)
  • 请注意,在 13.04 上,您只需从 ubuntu 菜单中运行“磁盘”即可运行 palimpsest,但是……我没有看到启动自检的选项(可能是因为我只有一个驱动器,并且它正在运行Ubuntu...) (2认同)
  • @mrówa 手册只说如果“坏块的输出将被提供给 e2fsck 或 mke2fs 程序” (2认同)

Dav*_*ter 93

在整个答案中,我假设存储驱动器在 path 中显示为块设备/dev/sdc。要在我们当前的设置中查找存储驱动器的路径,请使用:

  • 侏儒磁盘 安装 Gnome 磁盘(以前称为 Gnome 磁盘实用程序,又名palimpsest),如果有 GUI,或者
  • 在终端上查看 和 的输出,lsblkls -l /dev/disk/by-id尝试按大小、分区、制造商和型号名称找到正确的设备。

基本检查

  • 只检测完全无响应的媒体
  • 几乎是瞬间的(除非介质被降速或破碎)
  • 安全的
  • 适用于只读媒体(例如 CD、DVD、蓝光)

有时,存储介质根本不工作。它仍然显示为内核和磁盘管理器中的块设备,但其保存分区表的第一个扇区是不可读的。这可以通过以下方式轻松验证:

sudo dd if=/dev/sdc of=/dev/null count=1
Run Code Online (Sandbox Code Playgroud)

如果此命令导致有关“输入/输出错误”的消息,则我们的驱动器已损坏或无法按预期与 Linux 内核交互。在前一种情况下,如果幸运的话,拥有适当设备的实验室的数据恢复专家可以挽救其内容。在后一种情况下,值得尝试不同的操作系统。(我遇到过可以在没有特殊驱动程序的情况下在 Windows 上运行的 USB 驱动器,但不能在 Linux 或 OS X 上运行。)

智能自检

  • 可调整的彻底性
  • 瞬间变慢或更慢(取决于测试的彻底性)
  • 安全的
  • 警告在不久的将来可能出现故障

支持它的设备可以通过SMART查询其健康状况,或指示其执行不同彻底性的完整性自检。这通常是最好的选择,但通常仅适用于(非古代)硬盘和固态驱动器。大多数可移动闪存介质不支持它。

更多资源和说明:

只读检查

  • 只检测一些闪存媒体错误
  • 对于硬盘来说非常可靠
  • 减缓
  • 安全的
  • 适用于只读媒体(例如 CD、DVD、蓝光)

要在不写入的情况下测试整个设备的读取完整性,我们可以这样使用badblocks(8)

sudo badblocks -b 4096 -c 4096 -s /dev/sdc
Run Code Online (Sandbox Code Playgroud)

此操作可能需要很长时间,尤其是在存储驱动器实际上已损坏的情况下。如果错误计数上升到零以上,我们就会知道有一个坏块。如果我们对坏块的确切数量(可能还有位置)不感兴趣,我们可以随时安全地中止操作(甚至像断电时那样强制)。使用 option 可以在出错时自动中止-e 1

高级用法注意事项:如果我们想重用 的输出e2fsck,我们需要将块大小 ( -b) 设置为包含的文件系统的块大小。我们还可以调整-c一次测试的数据量(以块为单位)以提高吞吐量;对于大多数设备,16 MiB 应该没问题。

无损读写检查

  • 非常彻底
  • 最慢
  • 相当安全(除非断电或间歇性内核恐慌)

有时——尤其是对于闪存介质——错误仅在尝试写入时发生。(这将无法可靠地发现(闪存)媒体,其广告尺寸比实际尺寸更大;请改用“打击闪存欺诈”。)

  • 切勿安装了文件系统的驱动器上使用它! badblocks无论如何拒绝对这些进行操作,除非您强迫它。

  • 不要强行打断这个操作! Ctrl+ C(SIGINT/SIGTERM) 并等待正常的提前终止是可以的,但killall -9 badblocks(SIGKILL) 不是。强行终止后badblocks无法恢复当前测试块范围的原始内容,并将使其被垃圾数据覆盖并可能损坏文件系统。

要使用非破坏性读写检查,请将-n选项添加到上述badblocks命令中。

破坏性读写检查

  • 非常彻底
  • 慢点
  • 擦除驱动器上的所有数据

同上,但是在执行写测试后没有恢复以前的驱动器内容,因此它有点快。由于数据无论如何都会被擦除,因此强制终止不会产生(额外的)负面后果。

要使用破坏性读写检查,请将-w选项添加到上述badblocks命令。


Ser*_*gey 48

fsck - 检查和修复 Linux 文件系统。调用它使用

fsck /dev/sda1
Run Code Online (Sandbox Code Playgroud)

其中 /dev/sda1 是您要检查的驱动器。有关更多详细信息,请参阅“man fsck”。

还有'badblocks' 命令可以检查设备,你猜对了,坏块。

检查时需要卸载驱动器,因此要检查根分区,您需要在分区的根目录中创建一个文件“forcefsck”并重新启动。下次启动时将检查设备:

sudo touch /forcefsck
sudo reboot
Run Code Online (Sandbox Code Playgroud)

或者,您可以从 Live CD 启动并从那里运行检查。


Die*_*les 22

坏块

您可以检查运行命令的坏块

  1. sudo badblocks -nsv /dev/[device-partition] > bad-blocks-result用于无损读写测试。这将生成一个文件bad-blocks-result,其中扇区损坏。
    • -n使用非破坏性读写模式。默认情况下,只进行非破坏性只读测试。

    • -s通过写出当前坏块通过磁盘的粗略完成百分比来显示扫描进度。

    • -v详细模式。

  2. 然后,如果可能,您可以运行sudo fsck -t ext3 -l bad-blocks-result /dev/[device-partition]以告诉文件系统坏扇区的位置并将数据从它们移​​走。

你可以在这里找到更多关于它的阅读。


Pan*_*her 22

智能控制

IMO smartctl 是一个更好的工具。您可能必须先安装它

sudo apt-get install smartmontools 
Run Code Online (Sandbox Code Playgroud)

然后

sudo smartctl -a /dev/sda | less
Run Code Online (Sandbox Code Playgroud)

打印驱动器健康数据、属性和可用的测试结果。要少退出,请键入q。或者

sudo smartctl -H /dev/sda
Run Code Online (Sandbox Code Playgroud)

只打印健康数据。

在后台开始新的短(几分钟)或长(最多几个小时)自检:

sudo smartctl -t [short|long]
Run Code Online (Sandbox Code Playgroud)

如果您愿意,GSsmartControl主页)和Gnome Disks是图形前端。

也可以看看

  • 很好的解决方案,如果设备支持 SMART。许多(便宜的)可移动闪存驱动器和非常旧的硬盘驱动器没有。 (5认同)

bma*_*pin 10

F3(Fight Flash Fraud)是另一种选项,它应该额外检测假闪存驱动器(实际容量是广告容量的一小部分的闪存驱动器):

  1. 安装 F3

    sudo apt install f3
    
    Run Code Online (Sandbox Code Playgroud)
  2. 插入驱动器

  3. 将测试数据写入驱动器上的可用空间(检查驱动器的安装位置lsblk

    f3write /media/$USER/D871-DD7C/
    
    Run Code Online (Sandbox Code Playgroud)
  4. 读取测试数据

    f3read /media/$USER/D871-DD7C/
    
    Run Code Online (Sandbox Code Playgroud)

参考:

Badblocks 运行良好,但它不是为检测假闪存驱动器而设计的,并且可能不会为它们报告任何错误