固态盘的最小擦写单元也是 4kB 吗?

大多数文件系统的 “块尺寸” 都是 4kB, 给文件分配空间时,哪怕数据没占满 4kB, 也要消耗掉 4kB 的空间。比如这条命令:

echo "Hello, world!" > Test.txt

生成的新文件 Test.txt 只有 14B 的大小,但在文件系统里占用的空间却是 4kB. 再加上文件名、时间戳、权限属性等 Metadata, 占用的空间要超过 4kB.

众所周知,固态盘 SSD 的擦写次数是有限的,每写入一次数据,就要在对应的物理位置额外多增加一次擦写次数。那么上面那条命令在固态盘上增加的擦写数据量是 14B, 还是 4kB? 当然,文件名、时间戳、权限属性等 Metadata 还要额外占据一些空间。

假如固态盘也像文件系统那样存在一个 “最小分配单元”,那么分配数是 4kB 还是其他数值?该数值是固态盘的厂商在固件里设置死了,还是可以在内核软件层面进行调整?

有做内联的话,一个块就足够了。不过还要更新文件所在的目录项。

擦(除)和写是不同的操作。

典型的固态硬盘,写操作使用的是 4KiB 的块,擦除操作是 256KiB(64 块)。

是硬件的限制。

参考资料: Write amplification - Wikipedia

2赞

谢谢您的详细解答!

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。