在一个 以前的文章 我们讨论了如何修复 BIOS 相关问题。 在这里,我们将重点关注另一个组件,虽然它不是必需的,但对于充分利用我们的计算机来说是必不可少的。 现在我们看到 如何使用免费软件和开源实用程序修复硬盘。
硬盘的作用是 允许存储和检索大量信息。 在大多数情况下,该存储是永久性的(至少在我们自愿决定删除它之前)。 此外,当它必须存储比它可以存储的更多信息时,它会与 RAM 协作,充当临时存储位置。
如何修复硬盘
要知道如何解决问题,我们必须首先了解它们的性质,为此,我们需要了解硬盘驱动器的组成和操作。
在密封盒内,我们发现了两个区别很大的组件:
- 一套电子和机械部件 负责存储和检索数据的过程。
- 一堆称为拼盘的光盘。 盘片将信息以磁性形式存储在小元素的顶部和底部,这些小元素可以被磁化或消磁,代表一位信息中的 1 或 0。
硬盘操作
每个表面都有一个读写磁头,即磁头数量将是板材数量的两倍。 使用机械臂 头部从外向内线性移动。 同时,在写入或读取信息时,一叠盘子以恒定速度旋转。 当要读取或写入某些内容时,磁头就位并等待磁盘旋转,直到相应的磁头与要查找的数据的位置或指定的保存位置对齐。
面的每个表面都被分成称为轨道的同心圆。. 在堆栈中的所有磁盘上占据相同位置的磁道称为柱面。 磁道被细分为扇区,扇区是可以写入磁盘的最小信息单位。
要识别磁头、扇区和柱面,我们必须牢记磁头和柱面从零开始编号,扇区从一开始编号。 也就是说硬盘的第一个扇区对应的是磁头0、柱面0、扇区1。
但是,Linux(和其他操作系统) 它们不使用物理分区,而是使用称为分区的基于软件的分区. 实际上,分区就像是独立的存储单元一样工作。
在每个分区内,内容被组织成称为目录的分层结构。. 虽然分区的大小是固定的并且占据连续的柱面,但目录可以改变这一点并分散在分区的任何位置。 在同一个磁盘单元中,每个分区都可以有一个文件系统,这对于每个分区中的内容都是强制性的。
GPT 和 MBR 之间的差异
为了能够写入或读取特定数据, 驱动器必须至少有一个分区和一个可以找到所有可用分区信息的地方,它们在哪里开始和结束,以及它们中的哪一个是在打开计算机时启动操作系统的。
有两个 存储该信息的方法: 主引导记录 (MBR) 和 GUID 分区表 (GPT)
MBR 是最古老的方法。 在由 位于驱动器开头的特殊引导扇区。 除了有关分区的信息外,该驱动器还包含引导加载程序 如果安装了多个操作系统,请选择从哪个开始。
MBR 只能用于最大 2TB 的驱动器和四个主分区或三个主分区和一个扩展分区,这些分区可以进一步细分为逻辑分区。
使用 GPT,每个分区都被分配了一个“全局唯一标识符”。 GPT没有驱动器容量或MBR分区数的限制在任何情况下,存在的限制都是由操作系统强加的。
GPT的另一个优点是 与在驱动器开头存储分区和引导数据的 MBR 不同,它将其保存在整个驱动器的多个副本中. 此外,它通过查看循环冗余校验值来检测数据完整性问题。 如果发现损坏,请尝试从磁盘上的其他位置恢复它们。
常见问题以及如何在 Linux 中修复它们
一般我们可以发现4类问题:
- 关键数据删除:这可能是由于用户错误删除了不应删除的内容或由于所用软件中的错误所致。
- 病毒作用: 尽管 Linux 有一个权限系统,使其比其他操作系统更不容易受到攻击,但没有任何安全机制可以在用户无能的情况下幸存下来。 只需访问一个受感染的网站,恶意软件就可以访问任何连接的驱动器并篡改数据。
- 硬盘上的坏扇区:在这种情况下,可能是由于制造故障或处理过程中产生的物理损坏。
我们可以在为时已晚之前检测到驱动器问题的一些方法是:
dd 命令
使用此命令 我们可以测量打字速度。 为此,我们打开终端并写入:
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
可以使用以下命令测量延迟:
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
fsck 命令
此命令启动一个实用程序 允许您扫描文件数据库以查找并尝试修复错误。 此外,它还会生成结果报告。 如果系统意外关闭,fsck 会自动运行。
要使用此命令,我们必须确定要分析的分区。 我们用命令来做:
sudo fdisk -l
一旦我们确定了搜索到的分区,我们就必须记下它的标识符。 这采用 /dev/sdx* 的形式,其中 x 是以 a 开头的字母代表第一个驱动器,* 以 1 开头的数字代表第一个分区。
为了进行验证,我们首先使用命令卸载分区
umount /dev/sdX*
然后我们启动命令:
fsck /dev/sdX*
如果我们想检查一个完整的单元,我们写相同的命令,但不指明分区号。
为了扫描当前分区,您必须从安装介质或从引导加载程序的救援模式执行此操作。
坏锁命令
这个命令 查找坏道并保存信息 在文本文件中。
指令如下:
sudo badblocks -v /dev/sdX*> ~/sectores_dañados.txt
e2fsck 命令
这是一个 错误检测和纠正命令 特定于 Ext 文件系统,语法为:
须藤 e2fsck -cfpv /dev/sdX*
cfpv 指令指出:
- c 所以程序应该找到坏块并将它们添加到列表中。
- f 这也应该进行文件系统检查。
- p 你应该尝试修复坏块。
- v 这应该显示在完成程序结果中。
e2fsck 和 badlocks 可以通过让前者读取后者检测到的错误列表来组合。
sudo e2fsck -l bad_sectors.txt /dev/sdX*
测试磁盘命令
测试盘是 一个删除的数据恢复工具 有意、无意或恶意。 结果并不总是完美的,文件也不会恢复原来的名字,所以我们必须一一审查,找到我们要找的东西。
在开始使用它之前,我们必须使用我们发行版的包管理器安装它。 安装后,我们使用命令启动程序
testdisk
当我们这样做时,我们将看到三个选项:
- 创建 日志文件
- 加 对前几届会议收集的信息的补充信息。
- 不注册 信息。
接下来,我们用光标选择我们要分析的单元,然后移动到要继续的指令,然后按Enter。 在以下屏幕中,我们指示分区表的类型和恢复模式。 最后,我们选择分区。
为了完成,我们转到被删除文件所在的目录,我们标记它,我们按 C 开始恢复,然后是它的保存位置。
许多这些命令可以与图形界面一起使用。 例如,在 GNOME 中我们有应用程序 的gparted 可以在存储库中找到并作为可以在实时模式下使用的 Linux 发行版。 KDE 桌面也有自己的分区编辑工具。
另一方面,有一些付款恢复解决方案。 然而, 两者都不能保证完美的结果,所以最好有重要文件的多个副本 在本地和云端。
谢谢你的整理,幸运的是我都还好,不过到时候能有一篇像这篇一样实用的文章收藏在书签里就很好了。
谢谢