许多人似乎有这样的想法 ( 1 , 2 , 3 , 4 , 5 ) 将 SSD 分区的开头对齐为 SSD 擦除块大小的倍数在某种程度上是有益的。我看不到好处;考虑以下分区(请暂停您对 16K 擦除块的怀疑;它们在实践中可能要大得多,分区也是如此):
Partitions: [ 1 ] [ 2 ]
Logical blocks: [ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ]
Physical blocks: [ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ][ 4K ]
Erase blocks: [ 16K ][ 16K ]
Run Code Online (Sandbox Code Playgroud)
现在,如果逻辑块K对应于任何K 的物理块K(例如,如果 SSD 控制器没有进行磨损均衡),那么这可能有一些理论上的优点。例如,假设上图中的分区 2 更早开始了一个逻辑/物理块。然后,分区 2 开头的任何写入都将导致第一个擦除块的擦除,就像对分区 1 的任何写入一样,这将导致对该特定擦除块的额外磨损。
然而,在磨损均衡的情况下,逻辑块和物理块之间没有固定的对应关系(例如,逻辑块K可以对应任意一个物理块L),因此擦除块对齐应该是完全没有意义的。与块大小对齐应该就足够了,这样写出到分区的页面(用于交换)和文件系统块(用于数据)不会在 SSD 上占用过多的块。
相关问题:
分区对齐到 SSD 擦除块大小毫无意义吗?
根据下面引用的 2008 年的建议,似乎将分区与块大小边界对齐取决于任何给定 SSD 设备中的品牌、型号和控制芯片算法。
对于不使用智能技术和算法的老一代SSD设备,这样做可能更重要,但您应该查看SSD制造商的技术指南。
在第一代 SSD 上,在擦除块边界上对齐文件系统至关重要,但英特尔 X25-M 应该具有更智能的算法,可以减少写入放大的影响。细节有点模糊,但大概有一个映射表将扇区(以某种内部扇区大小——我们不确定是 512 字节还是更大的大小)映射到单个擦除块。
快进到 2014 年,根据以下建议,似乎读/写与页面大小对齐,擦除是在 SSD 空闲时完成的,这无关紧要,毫无意义。
读取/写入按页面大小对齐,并且在 SSD 空闲时在后台进行擦除。因此,擦除块大小无关紧要。页面大小很重要,但它总是很小,所以只需进行 MiB 对齐。无论如何,文件系统会将其分解为大约 4k 的大小。无法与 1536KiB 对齐,也无法与文件系统中的数百个小文件对齐。即使您将分区放在 1536KiB 的边界上并将文件系统设置为 1536KiB 的突袭步幅,您也不会注意到任何区别。读/写是在页面级别完成的,并且无论如何都由闪存转换层重新分配。因此,无论您如何尝试从外部对齐,SSD 无论如何都会将其破坏以达到自己的目的,那有什么意义呢?
我认为磨损均衡是 2008 年文章中提到的那些 [更智能] 较新的 SSD 算法之一,现在,这 - 以及其他相关的现代 SSD 和分区技术 - 在 SSD 设备中更常见,这意味着这种对齐会更多可能毫无意义。
我认为互联网上关于这个话题的一些讨论在某些情况下可能是正确的,基于这些文章中可能提到的任何 SSD 技术,因此内容可能根本不适用于其他人,具体取决于他们使用什么。
这归结为了解您的 SSD 设备的规格、特性、功能等,以及您在执行此类操作时使用的任何分区工具,以确保在您的环境中进行最佳配置,无论这是否是一项毫无意义的操作履行。
这个问题非常难,特别是考虑到 SSD 技术在不断发展,尤其是现代操作系统不断改进对 SSD 的处理。
此外,我不确定您的问题是否与磨损均衡有关。它应该与旨在避免块擦除的 SSD 优化一起使用。
让我们首先正确理解我们的条款:
很明显,SSD 固件更喜欢总是写入空块,因为它们已经被擦除。否则,将页添加到包含数据的块将需要读取块/存储页/擦除块/写入块的顺序。
上面的应用过于宽松会导致页面分散在整个SSD上,并且大多数块变成部分空的,因此SSD可能很快就会用完空块。为避免这种情况,SSD 会在后台持续进行 垃圾收集,合并部分写入的块并确保有足够的空块可用。此操作可能如下所示:
[![图像1][1]](https://i.stack.imgur.com/wnOzX.png)
垃圾收集引入了另一个因素 - 写入放大 - 意味着一个操作系统写入 SSD 可能需要在 SSD 上进行多次物理写入。
由于 SSD 块只能在其消亡前擦除和写入一定次数,因此磨损均衡 旨在将块写入均匀地分布在 SSD 上,因此没有块的写入量比其他块多得多。
分区对齐问题
从上面来看,看起来允许 SSD 将页面映射到任何物理位置的机制,保留操作系统认为它们存储的任何位置,不需要分区对齐。由于页面没有写入操作系统认为写入的位置,因此操作系统认为写入数据的位置不再重要。
然而,这忽略了操作系统本身尝试优化磁盘访问的事实。对于经典硬盘,它将尝试通过在不同磁道上相应地分配数据来最小化磁头移动。聪明的 SSD 固件应该操纵虚构的柱面并跟踪它向操作系统报告的信息,以便轨道大小等于块大小,页面大小等于扇区大小。
当操作系统对 SSD 的看法更符合实际时,操作系统所做的优化可能会避免 SSD 需要映射页面并避免垃圾收集,这将减少写入放大并增加使用寿命固态硬盘。
需要注意的是,SSD 碎片过多(意味着页面映射过多)会增加 SSD 完成的工作量。2009 年的文章 Intel Mainstream SSD 的长期性能分析 表明,如果驱动器被滥用且大小写混合的时间过长,它会进入性能下降永久的状态,并且随着磨损均衡这一状态条件可能会扩展到更多的驱动器。这种情况是许多 SSD 用户看到性能随时间下降的原因。
我的最后建议是对齐分区以尊重擦除块布局。操作系统将假设分区在磁盘方面是对齐的,并且它对文件放置所做的决定可能会更智能地完成。与往常一样,操作系统驱动程序与 SSD 固件的个别特性可能会使这些担忧无效,但最好还是安全一点。
| 归档时间: |
|
| 查看次数: |
3360 次 |
| 最近记录: |