imida k Asked: 2020-06-11 01:11:42 +0800 CST2020-06-11 01:11:42 +0800 CST 2020-06-11 01:11:42 +0800 CST 为什么不使用“坏位”一词? 772 由于一个扇区由一些(512 或 4096)字节组成,因此考虑术语“坏位”而不是“坏扇区”看起来很自然。但没有使用该术语。有很多硬盘错误检查软件会报告扇区“坏扇区”,但没有软件会报告“坏扇区”。为什么会这样? hard-drive sectors 2 个回答 Voted Best Answer gronostaj 2020-06-11T01:56:08+08:002020-06-11T01:56:08+08:00 磁盘 - 无论是 HDD 还是 SSD - 都无法操作单个位甚至字节。扇区是磁盘可以使用的最小存储单元。您只能通过读取整个扇区、更改该位并将整个扇区写回来写入单个位。另一方面,写入整个扇区不需要额外的读取,因此尽可能避免使用小于位的单元是有意义的。因此,持久存储完全围绕扇区的概念构建。所有分区和文件系统结构都是扇区对齐的,以避免需要低效的部分写入。 现在假设您在单个扇区中检测到单个故障位,并且您拥有禁用它的技术。您的整个计算机都是为仅使用 8 位字节而构建的,因此整个字节都无法使用。您的扇区现在是 511 字节,而不是典型的 512 字节。再一次,您计算机中的所有内容都假定您能够在一个扇区中容纳 512 个字节,而您不能,因此整个扇区都无法使用。因此坏扇区。 此外,跟踪单个比特的健康是绝对不切实际的。单个扇区的健康信息占用一点空间(0 = 坏,1 = 好)。单个 512b 扇区包含 4096 位,因此它可以存储 4096 个扇区的健康,因此每 4097 个扇区中的 1 个被牺牲为健康位图。那是 0,024%,完全可以接受。如果您要跟踪单个位的运行状况(正如我已经解释过的那样,这无论如何都没有用),您需要一个位来记录每个位的运行状况,因此为运行状况信息牺牲了 50% 的存储空间。 在现实生活中的应用程序中,坏扇区可能不会存储为位图,但很容易用它们来解释问题,它会给你一种规模感。 user1686 2020-06-11T01:56:15+08:002020-06-11T01:56:15+08:00 扇区是磁盘读/写命令使用的最小单位。 磁盘实际上不允许计算机请求单个位(也不是字节——一个扇区通常是 512 或 4096字节,而不是位)。相反,操作系统总是发出“读取整个扇区”命令,并且它们不包括有关扇区的哪些部分已损坏的任何指示——磁盘要么返回整个扇区(必要时使用 ECC 恢复),要么根本不返回任何内容(ECC 无法处理的错误太多)。 我不确定我是否正确理解了该机制,但据我所知:当只有一个坏位时,您甚至不会注意到它,因为 ECC 信息将用于纠正它。但如果扇区损坏超出该点,那么通常 ECC 甚至不知道哪些特定位是坏的——它只知道其中“超过 X”是坏的。
磁盘 - 无论是 HDD 还是 SSD - 都无法操作单个位甚至字节。扇区是磁盘可以使用的最小存储单元。您只能通过读取整个扇区、更改该位并将整个扇区写回来写入单个位。另一方面,写入整个扇区不需要额外的读取,因此尽可能避免使用小于位的单元是有意义的。因此,持久存储完全围绕扇区的概念构建。所有分区和文件系统结构都是扇区对齐的,以避免需要低效的部分写入。
现在假设您在单个扇区中检测到单个故障位,并且您拥有禁用它的技术。您的整个计算机都是为仅使用 8 位字节而构建的,因此整个字节都无法使用。您的扇区现在是 511 字节,而不是典型的 512 字节。再一次,您计算机中的所有内容都假定您能够在一个扇区中容纳 512 个字节,而您不能,因此整个扇区都无法使用。因此坏扇区。
此外,跟踪单个比特的健康是绝对不切实际的。单个扇区的健康信息占用一点空间(0 = 坏,1 = 好)。单个 512b 扇区包含 4096 位,因此它可以存储 4096 个扇区的健康,因此每 4097 个扇区中的 1 个被牺牲为健康位图。那是 0,024%,完全可以接受。如果您要跟踪单个位的运行状况(正如我已经解释过的那样,这无论如何都没有用),您需要一个位来记录每个位的运行状况,因此为运行状况信息牺牲了 50% 的存储空间。
在现实生活中的应用程序中,坏扇区可能不会存储为位图,但很容易用它们来解释问题,它会给你一种规模感。
扇区是磁盘读/写命令使用的最小单位。
磁盘实际上不允许计算机请求单个位(也不是字节——一个扇区通常是 512 或 4096字节,而不是位)。相反,操作系统总是发出“读取整个扇区”命令,并且它们不包括有关扇区的哪些部分已损坏的任何指示——磁盘要么返回整个扇区(必要时使用 ECC 恢复),要么根本不返回任何内容(ECC 无法处理的错误太多)。
我不确定我是否正确理解了该机制,但据我所知:当只有一个坏位时,您甚至不会注意到它,因为 ECC 信息将用于纠正它。但如果扇区损坏超出该点,那么通常 ECC 甚至不知道哪些特定位是坏的——它只知道其中“超过 X”是坏的。