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