如何运行检查盘?


84

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

哪种工具最适合Windows的错误检查工具?


@PabloBianchi:这个问题的范围完全相同。我标记他们为国防部合并他们。
David Foerster

Answers:


101

磁碟

要检查坏扇区,请检查SMART数据,这可能是启动磁盘实用程序(Palimpsest)可以访问的最好的数据。即使您在那里看不到任何坏处,也可以进行自检以确保。

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

Palimpsest的SMART

或在Ubuntu 16.04版本(3.18)中:

磁盘上的SMART

坏块

您也可以使用 badblocks

sudo badblocks -sv /dev/sda

只是检查,或者先检查并修复,然后将结果写入临时文件:

sudo badblocks -sv /dev/sda  > bad-blocks-result
sudo fsck -t ext4 -l bad-blocks-result /dev/sda1

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

badblocks手册:

重要说明:如果错误块的输出将被馈送到e2fsck或mke2fs程序,则正确指定块大小非常重要,因为生成的块号非常取决于文件系统使用的块大小。因此,强烈建议用户不要直接运行badblocks,而应使用e2fsck和mke2fs程序的-c选项。

fsck

fsck本身并不能帮助您找到坏扇区,更糟糕的是,如果存在很多坏扇区,它甚至可能损坏您的数据。仅在磁盘运行状况良好时使用。


1
实际上,badblocks的手册不鼓励直接使用它,而是使用“ -c”(只读检查)或“ -cc”(读写检查)选项将用户引导到e2fsck。
mrówa

2
值得注意的是,在13.04上,您仅通过从ubuntu菜单运行“磁盘”即可运行palimpsest,但是...我看不到启动自检的选项(可能是因为我只有一个驱动器,而这是一个正在运行的驱动器) Ubuntu ...)
rogerdpack

2
@mrówa手册仅说:“如果坏块的输出将被馈送到e2fsck或mke2fs程序中”
Jon

1
将要列出所有磁盘的信息放入sudo fdisk -l
Kangarooo 2014年

2
现在称为gnome-disks
endolith 2014年

74

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

  • Gnome磁盘 安装Gnome磁盘(以前称为Gnome Disk Utility,又名palimpsest)(如果有GUI),或者
  • 在终端上查看的输出,lsblk然后ls -l /dev/disk/by-id尝试通过大小,分区,制造商和型号名称找到合适的设备。

基本检查

  • 仅检测完全无响应的媒体
  • 几乎是瞬时的(除非介质被旋转或破碎)
  • 安全
  • 适用于只读媒体(例如CD,DVD,BluRay)

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

sudo dd if=/dev/sdc of=/dev/null count=1

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

SMART自检

  • 可调的完整性
  • 瞬时或变慢(取决于测试的彻底性)
  • 安全
  • 警告在不久的将来可能会失败

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

其他资源和说明:

只读检查

  • 仅检测到一些闪存介质错误
  • 硬盘非常可靠
  • 安全
  • 适用于只读媒体(例如CD,DVD,BluRay)

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

sudo badblocks -b 4096 -c 4096 -s /dev/sdc

此操作可能会花费很多时间,尤其是在存储驱动器实际上已损坏的情况下。如果错误计数上升到零以上,我们将知道存在一个坏块。如果我们对坏块的确切数量(甚至位置)不感兴趣,我们可以在任何时候安全地中止操作(即使在电源故障期间也可以强制终止)。使用option可以在错误时自动中止-e 1

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

无损读写检查

  • 非常彻底
  • 最慢的
  • 非常安全(除非出现电源故障或间歇性内核恐慌)

有时-特别是对于闪存介质-仅在尝试写入时才会发生错误。(这将无法可靠地发现(闪存)广告大小超出实际大小的媒体,而应使用“ 扑灭欺诈”。)

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

  • 不要强行中断此操作! Ctrl+ C(SIGINT / SIGTERM)并等待正常的过早终止是可以的,但killall -9 badblocks(SIGKILL)则不是。强制终止后,badblocks将无法恢复当前测试的块范围的原始内容,并将其替换为垃圾数据,并可能损坏文件系统。

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

破坏性读写检查

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

如上所述,但是在执行写测试之后又不恢复以前的驱动器内容,因此速度要快一些。由于无论如何都会擦除数据,因此可以强制终止,而不会带来(附加)负面影响。

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


43

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

fsck /dev/sda1

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

您还可以通过'badblocks'命令检查设备是否有坏块。

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

sudo touch /forcefsck
sudo reboot

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


谢谢,机器在没有监视器的情况下运行,重新启动后是否可以访问检查的输出?
纪尧姆·科特

我创建了文件并重新启动,但是它确实非常快,并且boot.log中没有新内容。
GuillaumeCoté2011年

fsck只是做了一个非常快速的检查,我尝试了-c选项来检查坏块。
GuillaumeCoté2011年

fsck -c刚刚说过:/ dev / sda9:更新坏块inode。我没有有关多少坏节点以及它们所代表的文件系统比例的信息。
GuillaumeCoté2011年

sudo dumpe2fs -b /dev/sda9。但我认为最好是磁盘处理有故障的扇区,而不是文件系统(SMART,坏块等,请参阅我的文章)。
安排

20

坏块

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

  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]以告诉文件系统坏扇区在哪里,并在可能的情况下将数据移出坏扇区。

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


1
要稍后再继续使用坏块,或者如果您忘记将坏扇区导出到文本文件(如我),此答案将为您提供帮助:superuser.com/a/693000/218025
chelder

我可以使用badblocks检查我的Windows分区吗?还是会以某种方式损坏它?
私人

1
@Private如果您有新问题,请使用顶部的“问问题”链接。
约翰,

fsck命令在btrfs文件系统上失败。
路易斯·索萨

20

Smartctl

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

sudo apt-get install smartmontools 

然后

sudo smartctl -a /dev/sda | less

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

sudo smartctl -H /dev/sda

仅打印健康数据。

要在后台开始新的短(几分钟)或长(最多几个小时)自检,请执行以下操作:

sudo smartctl -t [short|long]

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

也可以看看


5
如果设备支持SMART,则是绝佳的解决方案。许多(便宜的)可移动闪存驱动器和非常老的硬盘驱动器却没有。
David Foerster,2014年

当我smartctl收到以下报告时,我感到很困惑:“未知的USB桥接器”,“请使用-d选项指定设备类型”。我在以下位置找到了所需的数据:smartmontools.org/wiki/Supported_USB-Devices
nobar 2015年

10

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

  1. 安装F3

    sudo apt install f3
    
  2. 插入驱动器

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

    f3write /media/$USER/D871-DD7C/
    
  4. 读取测试数据

    f3read /media/$USER/D871-DD7C/
    

参考:

Badblocks可以很好地工作,但是它并不是为了检测伪造的闪存驱动器而设计的,可能不会报告任何错误


badblocks带有-wfsck标记为坏/损坏的扇区,因此不使用它们。f3可以返回类似的信息Corrupted: 16.01 MB (32784 sectors),但是否将其标记为坏扇区?还是我们为此需要坏块?我正在尝试dumpe2fs -b看来id没有标记。
Pablo A

4

您可以测试读取整个磁盘,同时显示进度指示器:

time sudo pv /dev/sdc >/dev/null

某些磁盘问题将表现为报告的I / O错误。这比dd进度指示器要好一点,因为命令行界面更标准一些,而且不太容易出现拼写错误。请注意,pv它基本上是的增强版cat。默认情况下可能未安装,但可以使用安装sudo apt-get install pv

一种类似的方法是使用几个专门了解磁盘I / O错误的可用工具之一来读取磁盘,并且具有“尝试抢救数据”的功能。ddrescue在包管理器中搜索。


这不会检测到仅在写访问期间出现的问题,并且不会报告需要修复或解决该问题的存储介质的受影响区域。dd count=1除非存储介质完全损坏(或不受支持),否则存储速度也非常快。
大卫·佛斯特

另请参阅:ddrescueview
nobar

由于GNU Coreutils的8.24+ dd有一个进度指示条status=progress
Pablo A

1

如果您有无法删除数据的分区,请按照下列步骤操作

  1. 使用以下命令确定要检查坏扇区的分区

$fdisk -l commnd

假设要检查的分区称为/ dev / sdPTC(要检查的分区),并且您还有另一个分区来存储安装在/ scan / resultPath /文件夹中的结果

2.然后您可以运行此命令

$sudo badblocks -v /dev/sdPTC > /scan/resultPath/badsectors.txt

这将确定给定设备的坏块是什么,并将它们存储在名为badsectors.txt的文件中

  1. 现在,您可以使用fsck命令告诉Ubuntu不要使用badsectors.txt文件中提到的坏扇区。

$sudo fsck -l /scan_result/badsectors.txt /dev/sda

这样一来,硬盘的寿命就会增加一点,直到获得新的硬盘更换为止。


如果您有一个完整的分区,要检查是否有坏的物理扇区,并且可以负担该分区上的所有数据的丢失或为空,请按照以下步骤操作

  1. $sudo apt-get install gnome-disk-utility

  2. $sudo gnome-disks

  3. 检查并再次检查该分区上没有重要数据

  4. 使用gnome-disks“-”符号手动删除/删除分区

  5. 使用gnome-disksCREATE创建一个新分区,然后选择“ slow”选项,它将检查给定空间的错误

在此处输入图片说明


它是哪个Ubuntu版本有关系吗?难道bionic beaver不同的方式处理磁盘检查?
加百利博览会

我没有在该版本上尝试过此过程。
Mauricio Gracia Gutierrez
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.