如何运行检查盘?


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带有-w或fsck标记为坏/损坏的扇区,因此不使用它们。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.