相关疑难解决方法(0)

当不再需要块时,Linux 文件系统会通知块设备吗?

传统上,假设存储设备(硬盘驱动器)除了简单地覆盖数据外,没有“删除”数据的机制。我可以看到一些理论场景,在这些场景中,通知块设备不再需要它们的底层存储是有用的,但我没有看到任何这样做的机制。

用例:

  • 几乎所有现代 SSD 都使用磨损均衡来延长使用寿命。这可以通过简单地拥有比报告大小更多的内部存储块并在它们之间循环来实现。但是如果 SSD 被告知不再需要块,它将提供一个更大的池来循环。
  • 在 RAM 中创建的文件系统(不包括 tmpfs)。在文件被删除的地方,如果文件系统不能报告不需要空间,则底层 ramdisk 不能将分配的空间返回给空闲 RAM。
  • 当交换空间中不再使用页面时,使用zram 的交换解决方案需要通知块设备,否则它们会在 RAM 中留下大量“垃圾”。

这看起来与FALLOC_FL_PUNCH_HOLE. 但是从我在那里读到的内容来看,这纯粹是为了从文件系统中的文件中取消分配空间。也就是说,用户空间应用程序可以通知文件系统不需要空间。但这与通知块设备不需要空间的文件系统不同,是吗?

那么是不是在每种情况下都有解决方法,或者我们有一种机制允许文件系统和交换在不再需要块时通知块设备?

block-device linux-kernel

5
推荐指数
1
解决办法
362
查看次数

标签 统计

block-device ×1

linux-kernel ×1