![如何在设置 dedup=off 后(开启一段时间后)减少内存使用量?](https://linux22.com/image/1511271/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%AE%BE%E7%BD%AE%20dedup%3Doff%20%E5%90%8E%EF%BC%88%E5%BC%80%E5%90%AF%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%EF%BC%89%E5%87%8F%E5%B0%91%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E9%87%8F%EF%BC%9F.png)
我知道这个设置dedup=on
会导致内存占用过高,而且几乎不值得(例如https://serverfault.com/a/569099/208661)。但是,我确实打开了它以查看其工作原理,并在带有缓存的 1.4 TB 池中放置了 20 GB。内存消耗(启动后使用和不使用 zfs 的内存使用量差异)比使用时大约高 8 GB btrfs
。设置后,dedup=on
它明显高于使用btrfs
,但不是 8 GB。现在,我关闭dedup
off
并重新启动,但内存消耗仍然很高(我想说是一样的)。
它会保持高位吗,即我是否必须销毁并重新创建池以避免这种内存消耗,它是否需要时间才能关闭,我可以做些什么(某种重新复制)以加快这个过程?
答案1
假设您的问题源于重复数据删除,它不会有太大帮助,因为只有新数据不重复,旧数据仍然重复数据删除,并且重复数据删除表也保留,请参阅http://list.zfsonlinux.org/pipermail/zfs-discuss/2013-March/007668.html:
这是一个非常常见的问题。从技术上讲,您可以在池上设置 dedup=off,这样新写入的数据就不会被重复数据删除。池将继续正常工作。但是,所有现有重复数据删除所需的数据结构不会消失,它们对性能的影响也不会消失。
最重要的是,如果您禁用重复数据删除来修复重复数据删除导致的速度缓慢,它将不起作用。在这种情况下,您需要将数据发送到另一个存储设备,销毁您的池,创建一个关闭重复数据删除的新池,然后恢复数据。目前没有其他方法。
对于您来说,这将非常快,因为您只需移动 20GB。
有关重复数据删除详细信息的其他有用资源包括: