我在 RamNode 有一个 AMD64 KVM VPS,它有 30 GB 磁盘、256 MB RAM 和 1 个“虚拟 CPU”(我不知道主机 CPU 的规格)。它将用于存储许多小的、易于压缩的文件,大部分小于 50kb,文本/HTML。我想使用压缩文件系统来节省我所拥有的少量磁盘空间。首先想到的是 ZFS,但从我读到的内容来看,ZFS 在小于 1-2GB RAM 的情况下运行不佳,所以我需要更轻量级的东西。至于 BTRFS,从我读到的内容来看,它对 CPU 的占用很大,而且还不稳定(至于 RAM,我不知道)。对文件系统有什么建议吗?性能和吞吐量不是问题,但磁盘使用率和 RAM 使用率才是问题。至于操作系统,我考虑的是 Linux Debian 8,但如果合适的 FS 不支持 Debian8/Linux,我可以切换(*BSD 也许是?)
答案1
过去两年,我在 Linux 上运行过 ZFS 和 BTRFS。我的经验是,在同等磁盘使用量的情况下,BTRFS 占用的 RAM 比 ZFS 少。除了 RAID5/6 之外,BTRFS 在装有 BTRFS 3.12 的 Ubuntu 14.04 上对我来说非常稳定。
我一直在 BTRFS 中使用 LZO 压缩,其写入速度与未压缩的一样快。
答案2
如果您不使用重复数据删除功能,ZFS 可以处理低 RAM。您还可以限制 ZFS 用于缓存 (ARC) 的 RAM 量。内置的 lz4 压缩对您的数据量非常有帮助。
答案3
嗯,决定使用什么 fs 取决于你的文件访问模式。
如果目标是最大压缩率,我建议对只读文件使用带 xz 压缩的 squashfs。
如果有数百万个小文件,它将节省空间和空闲的 inode。在不删除/移动/重写的情况下附加新文件也是理想的用例。只需使用 aufs/overlayfs/unionfs 合并 r/o 和 r/w 目录即可。需要通过合并 r/w 目录中的文件来定期更新 squashfs 文件。我读到有些公司使用了这个软件包。内容生成频率不高也是很好的用例。
频繁更新小部分内容 - 使用上述 zfs/btrfs 或 fusecompress(仅使用 0.9.x)。这三种解决方案与 rsync 配合使用效果很好。fusecompress 允许更强大的 lzma 压缩。
archivemount 无法与 rsync 配合使用。它在更新时休眠在磁盘上:(