我想测试磁盘的物理错误是否是不可能的,磁盘的文件系统错误。该磁盘是典型的 USB 外部驱动器。磁盘(不是分区级别,而是整个磁盘本身)使用 VeraCrypt 进行加密。我存储文件的分区正在使用 Btrfs。方法是什么?
以下是我自己尝试过的事情:
首先,网络搜索结果说badblocks
,但其他结果说它现在是一个过时的工具。当我运行它时,它要求只读的东西,这让我认为它可能会破坏现有文件,所以我取消了它。
然后,我尝试使用 VeraCrypt 卷上的“检查文件系统”上下文菜单。但是它显示了一个“fsck”窗口,上面写着“如果您希望检查 BTRFS 文件系统的一致性或修复损坏的文件系统,请参阅 btrfs(8) 子命令 'check'”并退出。
我打开一个终端并尝试执行btrfs check
,但“sudo btrfs check(设备名称)”失败,“在 /dev/sdd 上找不到有效的 btrfs”(可能是因为整个磁盘已加密”)和“sudo btrfs check(解密的目录)”因“不是常规文件或块设备”而失败。
PS:感谢接受的答案,我得到了正确的设备名称。我为以后遇到同样问题的人添加以下内容。我使用的评论是sudo btrfs --force --check-data-csum -p /dev/mapper/veracrypt1
。我添加了--check-data-csum
,因为没有它,它只检查磁盘的元数据校验和,而不是实际文件,所以我不得不再次运行测试(再次执行所有先前的检查)。-p
似乎是一个不错的选择,因为它显示到目前为止已经检查了多少项目。
你可以尝试一只简单的猫
这将通过原始设备并报告是否存在物理级错误。
如果要检查磁盘是否有错误,可以使用SMART:
或者,如果您想要 GUI,您可以使用 GNOME 磁盘和SMART Data & Self-Test菜单选项。(并非所有外部驱动器都支持 SMART,这可能不适合您。)
要检查文件系统,您不能使用
/dev/sdd
它,因为它保存的是加密数据,而不是“可读”的 btrfs 文件系统。用于lsblk
获取用于访问明文数据的 dm-crypt 设备的名称(可能是/dev/mapper/veracrypt1
)并对其运行文件系统检查:badblocks
应该是安全的,毕竟默认情况下它只要求只读访问(除非您使用该-w
选项)。运行它作为badblocks -s -v /dev/sdd
. 虽然更好的方法(除非磁盘是 SDD)是smartctl -t long /dev/sdd
,然后用于smartctl -a /dev/sdd
监视进度(这将需要一些时间)并查看坏(即重新分配)块的数量。