这个答案解释说,SSD 上文件的实际位置与感知位置无关,并且每次更新文件时都会发生变化。
我想知道这是否也适用于分区和文件系统?
如果我在 SSD 上创建 1000 次分区并格式化 1000 次,那么每次分区和文件系统数据都会写入 SSD 的不同部分吗?
SSD 上的文件主干上的容器文件内的文件系统怎么样?每次更新其中的文件(甚至只是时间戳)时,容器文件碎片是否会在 SSD 上移动?
答案1
我想知道这是否也适用于分区和文件系统?
从 SSD 控制器的角度来看,SSD 上没有文件、分区和文件系统。块与其 LBA(逻辑块地址)相关联。磨损均衡算法和底层虚拟到物理块号映射适用于全部数据,无论 SSD 用户如何称呼它们。一些块恰好保存文件系统元数据。其他块恰好保存文件数据或分区元数据(例如 GPT(如果使用)或 LVM(如果使用));SSD 既不知道也不关心哪个是哪个。
如果我在 SSD 上创建 1000 次分区并格式化 1000 次,那么每次分区和文件系统数据是否都会写入 SSD 的不同部分?
不必要每次,但主要是出于磨损均衡的目的。
此外,物理块迁移有时会影响具有没有什么与正在写入的数据有关。例如,考虑当(假设)99% 的 SSD 已“满”(即未丢弃/修剪(即视为实际数据))并且大量写入操作发生在文件系统认为空闲或不断重复使用的 1% 的 LBA 中时会发生什么。如果 SSD 的控制器没有使用足够明智的块(重新)映射算法,即如果 1% 的 LBA 始终指向相同的 1% 的物理块,那么 1% 的物理块可能会相对较快地变坏,从而有效地将 SSD 的预期寿命缩短 100 倍(以 TBW(总写入字节数)为单位)。在这种情况下,控制器可能会决定将经常修改的 LBA 的物理块与不经常修改的 LBA 的物理块交换,以保持物理块磨损(更)均匀。
答案2
SSD 只会看到操作系统发送的 WRITE 命令。如果您创建/删除分区 1000 次,则唯一会更改的块(1000 次)是包含分区表的块。如果您“重新格式化”分区,分区的元数据也会被重写(根目录、可用块列表……),而不是整个分区。
我不明白你对容器的想法。如果它们只是由卷管理器(Linux 上的 LVM?,FreeBSD 上的 Geom?)管理的卷,元数据很少(如增强分区表),那么更改不应意味着多次重新分配,也不应该意味着磨损。