我怀疑磁盘上可能存在坏扇区。我使用了ext3文件系统。
哪种工具最适合Windows的错误检查工具?
我怀疑磁盘上可能存在坏扇区。我使用了ext3文件系统。
哪种工具最适合Windows的错误检查工具?
Answers:
要检查坏扇区,请检查SMART数据,这可能是启动磁盘实用程序(Palimpsest)可以访问的最好的数据。即使您在那里看不到任何坏处,也可以进行自检以确保。
该程序捆绑在gnome-disk-utility
包装中。跑gksudo gnome-disks
或在Ubuntu 16.04版本(3.18)中:
您也可以使用 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
本身并不能帮助您找到坏扇区,更糟糕的是,如果存在很多坏扇区,它甚至可能损坏您的数据。仅在磁盘运行状况良好时使用。
在整个答案中,我将假设存储驱动器在路径上显示为块设备/dev/sdc
。要在当前设置中查找存储驱动器的路径,请使用:
palimpsest
)(如果有GUI),或者lsblk
然后ls -l /dev/disk/by-id
尝试通过大小,分区,制造商和型号名称找到合适的设备。有时,存储介质根本根本无法工作。它仍然显示为内核和磁盘管理器中的块设备,但是它的第一个保存分区表的扇区不可读。可以使用以下方法轻松验证:
sudo dd if=/dev/sdc of=/dev/null count=1
如果此命令导致出现有关“输入/输出错误”的消息,则说明我们的驱动器已损坏或无法按预期与Linux内核交互。在前一种情况下,运气好的话,具有适当装备的实验室的数据恢复专家可以挽救其内容。在后一种情况下,值得尝试使用其他操作系统。(我遇到的USB驱动器可以在Windows上运行而无需特殊的驱动程序,但不能在Linux或OS X上运行。)
可以通过SMART查询支持它的设备的健康状况,或指示其执行不同完整性的完整性自测。通常,这是最佳选择,但通常仅在(非古代)硬盘和固态驱动器上可用。大多数可移动闪存介质不支持它。
其他资源和说明:
要测试整个设备的读取完整性而不进行写入,我们可以这样使用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
命令中。
fsck-检查并修复Linux文件系统。使用调用
fsck /dev/sda1
/ dev / sda1是您要检查的驱动器。有关更多详细信息,请参见“ man fsck”。
您还可以通过'badblocks'命令检查设备是否有坏块。
检查驱动器时需要将其卸载,因此要检查根分区,需要在分区的根目录中创建一个文件“ forcefsck”并重新引导。下次启动时将检查设备:
sudo touch /forcefsck
sudo reboot
或者,您可以从Live CD引导并从那里运行检查。
sudo dumpe2fs -b /dev/sda9
。但我认为最好是磁盘处理有故障的扇区,而不是文件系统(SMART,坏块等,请参阅我的文章)。
您可以检查运行命令的坏块
sudo badblocks -nsv /dev/[device-partition] > bad-blocks-result
用于无损读写测试。这将生成一个文件,bad-blocks-result
其中包含损坏的扇区。
-n使用非破坏性读写模式。默认情况下,仅执行非破坏性的只读测试。
-s通过在磁盘上写出当前坏块的大致完成百分比来显示扫描的进度。
-v详细模式。
sudo fsck -t ext3 -l bad-blocks-result /dev/[device-partition]
以告诉文件系统坏扇区在哪里,并在可能的情况下将数据移出坏扇区。你可以在这里找到更多关于它的阅读。
fsck
命令在btrfs
文件系统上失败。
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磁盘是图形前端。
smartctl
收到以下报告时,我感到很困惑:“未知的USB桥接器”,“请使用-d选项指定设备类型”。我在以下位置找到了所需的数据:smartmontools.org/wiki/Supported_USB-Devices。
F3(Fight Flash Fraud)是另一种选择,它应该另外检测伪造的闪存驱动器(其实际容量是广告容量的一小部分):
安装F3
sudo apt install f3
插入驱动器
将测试数据写入驱动器上的可用空间(检查驱动器的安装位置lsblk
)
f3write /media/$USER/D871-DD7C/
读取测试数据
f3read /media/$USER/D871-DD7C/
参考:
Badblocks可以很好地工作,但是它并不是为了检测伪造的闪存驱动器而设计的,可能不会报告任何错误。
badblocks
带有-w
或fsck
标记为坏/损坏的扇区,因此不使用它们。f3可以返回类似的信息Corrupted: 16.01 MB (32784 sectors)
,但是否将其标记为坏扇区?还是我们为此需要坏块?我正在尝试,dumpe2fs -b
看来id没有标记。
您可以测试读取整个磁盘,同时显示进度指示器:
time sudo pv /dev/sdc >/dev/null
某些磁盘问题将表现为报告的I / O错误。这比dd
进度指示器要好一点,因为命令行界面更标准一些,而且不太容易出现拼写错误。请注意,pv
它基本上是的增强版cat
。默认情况下可能未安装,但可以使用安装sudo apt-get install pv
。
一种类似的方法是使用几个专门了解磁盘I / O错误的可用工具之一来读取磁盘,并且具有“尝试抢救数据”的功能。ddrescue
在包管理器中搜索。
dd count=1
除非存储介质完全损坏(或不受支持),否则存储速度也非常快。
ddrescueview
dd
有一个进度指示条带status=progress
。
如果您有无法删除数据的分区,请按照下列步骤操作
$fdisk -l commnd
假设要检查的分区称为/ dev / sdPTC(要检查的分区),并且您还有另一个分区来存储安装在/ scan / resultPath /文件夹中的结果
2.然后您可以运行此命令
$sudo badblocks -v /dev/sdPTC > /scan/resultPath/badsectors.txt
这将确定给定设备的坏块是什么,并将它们存储在名为badsectors.txt的文件中
fsck
命令告诉Ubuntu不要使用badsectors.txt文件中提到的坏扇区。$sudo fsck -l /scan_result/badsectors.txt /dev/sda
这样一来,硬盘的寿命就会增加一点,直到获得新的硬盘更换为止。
如果您有一个完整的分区,要检查是否有坏的物理扇区,并且可以负担该分区上的所有数据的丢失或为空,请按照以下步骤操作
$sudo apt-get install gnome-disk-utility
$sudo gnome-disks
检查并再次检查该分区上没有重要数据
使用gnome-disks
“-”符号手动删除/删除分区
使用gnome-disks
CREATE创建一个新分区,然后选择“ slow”选项,它将检查给定空间的错误
bionic beaver
不同的方式处理磁盘检查?