📜  操作系统中的错误块

📅  最后修改于: 2021-08-27 16:55:03             🧑  作者: Mango

坏块是存储介质的区域,由于它已完全损坏或损坏,因此对数据的存储不再可靠。

我们知道磁盘具有运动部件,并且公差小,容易发生故障。如果故障完成,则需要更换磁盘,并将其内容从备份介质还原到新磁盘。更常见的是,一个或多个扇区出现故障。甚至更多的磁盘来自名为Bad blocks的工厂。

这也称为坏道。

错误阻塞的原因
存储驱动器可能会在出厂时带有制造过程中产生的有缺陷的块。带有坏块的设备在出厂前被标记为有缺陷。这些将与可用的额外存储单元重新映射。

设备的物理损坏也使设备成为坏块,因为有时操作系统无法访问数据。掉落笔记本电脑也会损坏HDD的盘片。有时灰尘还会损坏HDD。

当存储晶体管出现故障时,将导致固态驱动器损坏。随着时间的推移,存储单元也会变得不可靠,因为在一定数量的编程擦除周期后,存储单元中的NAND闪存基板将变得不可用。

对于固态驱动器上的擦除过程,它需要通过闪存卡的大量电荷。这使将浮栅晶体管与闪存硅衬底分离的氧化层劣化,并且位错误率增加。驱动器的控制器可以使用错误检测和纠正机制来修复这些错误。但是,在某些时候,错误可能会超出控制器纠正错误的能力,并且单元可能变得不可靠。

软坏扇区是由软件问题引起的。例如,如果计算机因此意外关闭,则硬盘驱动器也会在写入块的过程中打开。因此,该块中包含的数据与CRC检测错误代码不匹配,并将其标记为坏扇区。

坏块的类型
坏块有两种类型-

  1. 物理或硬坏块
    它来自存储介质的损坏。
  2. 软或逻辑坏块
    当操作系统(OS)无法从扇区读取数据时,将发生软性或逻辑性坏块。

例子 –
软损坏块包括特定存储块的循环冗余校验(CRC)或纠错码(ECC)不匹配磁盘读取的数据的时间。

如何处理坏块
这些块有多种处理方式,但取决于磁盘和控制器。

在简单的磁盘(例如某些带有IDE控制器的磁盘)上,不良块是手动处理的。一种策略是在格式化磁盘时扫描磁盘以查找坏块。被发现标记为不可用的任何坏块,因此文件系统不会分配它们。如果在正常操作期间块变坏,则必须手动运行特殊程序(例如Linux badblocks命令)以搜索坏块并将其锁定。

越复杂的磁盘在坏块恢复方面就越聪明。控制器的工作是维护坏块列表。控制器形成的列表在出厂前的低级格式化期间会初始化,并在磁盘的整个生命周期内进行更新。低级格式化保留了操作系统不可见的备用扇区。最后一个任务是由控制器完成,该控制器将逻辑上将每个坏扇区替换为备用扇区。此方案也称为扇区备用和转发

典型的不良行业交易如下:

  • 假设操作系统要读取逻辑块80。
  • 现在,控制器将要计算EEC,并假设它发现该块是坏的。它向操作系统报告所请求的块已损坏。
  • 每当下次系统重新引导时,都会使用特殊命令,它将告诉控制器该扇区将被备用扇区替换。
  • 将来,只要有对框80的请求,该请求就由控制器翻译成替换扇区的地址。

注意
控制器的重定向(即,转换为替换的请求)可能会使操作系统的磁盘调度算法的任何优化无效。因此,大多数磁盘都经过了格式化,可以在每个柱面以及备用柱面中提供一些备用扇区。每当坏块要重新映射时,如果可能,控制器将使用来自同一柱面的备用扇区。否则,还会有备用气瓶。

一些控制器使用备用扇区来替换坏块,还有另一种技术来替换坏块,即扇区滑移

部门滑落的例子
假设逻辑块16出现故障,并且第一个可用的备用扇区跟随扇区200。然后,扇区滑动开始重新映射。从16到200的所有扇区,将它们全部向下移动一位。也就是说,将扇区200复制到备用磁盘,然后将扇区199复制到200,然后将198复制到199,依此类推,直到将扇区17复制到扇区18。
以这种方式滑动扇区可以释放扇区17的空间,从而可以将扇区16映射到该扇区。

坏块的替换并不是完全自动的,因为坏块中的数据通常会丢失。软错误会触发过程,在此过程中会复制块数据,并保留或滑移块。不可恢复的硬错误将丢失其所有数据。无论使用该块的任何文件都必须修复,并且需要手动干预。