zerofree on s3backer,节省云中的空间

时间:2013-03-03 12:56:55

标签: amazon-s3 cloud

我已经安装了一个s3backer分区,通过amazon s3服务在云端保存数据。 作为标准文件系统行为,删除的文件只是与fs断开连接,使底层块保持不变。 这导致没有删除亚马逊上的块,因此如果被删除,所使用的空间也被计费。 为了防止这种情况,我可以使用zerofree实用程序强制在文件系统中的未使用块上写入零。这会导致s3backer删除云中未使用的块。

问题是zerofree实用程序需要安装只读分区,以防止在使用分区时节省空间。

您是否知道在rw挂载分区上是否还有其他选项可以执行此操作?像文件系统安装选项或其他解决方案?

谢谢

1 个答案:

答案 0 :(得分:0)

以前没有好的答案,但现在可能有。但是,链中有几个必须满足的链接......

首先:您需要一个支持TRIM块设备命令(在2.6.28中添加)的Linux内核以及支持它的文件系统(Linux 3.7或更高版本中的XFS,ext4,btrfs)。最初旨在向SSD设备通知它们可以回收的块,该命令告诉块设备使用它的文件系统不再需要块。删除文件时,某些(但不是全部)文件系统将通过TRIM通知块设备。

链中的下一个链接是this kernel patch,在环回安装的情况下,使用TRIM选项将fallocate()块设备命令转换为FALLOC_FL_PUNCH_HOLE在循环文件上。显然,这是3.2版本的Linux。

链中的下一个链接是支持将fallocate()系统调用传递给FUSE中的用户代码,该代码已在FUSE版本2.9.2中添加。

链中的最后一个链接是对s3backer中FUSE的fallocate()的支持。我已经开始关注这个问题,但还没有完成。

总结所有要求(按分层顺序):

  • 支持TRIM的“上层”文件系统(例如,Linux中的ext4或btrfs> = 3.7)
  • Linux内核> = 3.2 TRIM on loopback mounts
  • FUSE版本> = 2.9.2支持fallocate()
  • glibc version> = 2.18,其中包含定义FALLOC_FL_PUNCH_HOLE常量
  • 的标头
  • 支持fallocate()
  • 的s3backer的更新版本

在实施和测试后,我会向s3backer mailing list发送内容。