我只准备一台VM机器(在Proxmox上运行),通过Ubuntu 16.04 LTS运行postgresql 9.6。 这个postgres将被用来处理一个小公司的Jira / FisheEye / Confluence数据库。 通常我们同时是几个用户,所以我们不需要调整它以获得极高的性能/可伸缩性。
那么就是我们在服务器上使用BTRFS来帮助我们处理在必要时为虚拟机增加额外空间的问题,再加上我们启用了lzo压缩。 另外,我们使用btrok来处理BTRFS子卷到另一台机器的备份。
我怀疑如果可能是一个好主意,使用BTRFS来处理postgresql数据库文件,因为我们将非常有用的情况下,我们需要扩大虚拟硬盘空间,但我读了关于postgresql性能超过BTRFS(特别是如果datacow没有被禁用。
任何人都有这种情况的经验?
一般的答案 :糟糕的主意。 你可以在这里阅读关于它的一些细节。 长话短说,BTRFS的COW机制将导致正常OLTP工作负载的性能不一致
更好的答案 :在某些情况下,我会使用它。 为什么和如何:
我希望它有帮助。
注意 :一个用户build议COW可以针对特定的卷/文件夹禁用BTRFS,我不理会这个事实。 事实上,它可以被禁用,但如果你这样做,为什么你仍然会使用BTRFS? – 因为你仍然可以在文件系统的其余部分使用COW,而在virtualbox和postgres没有任何性能的情况下,所有其他很酷的function(比如快照和东西)都可以使用。 当然,纯数据库服务器使用BTRFS并禁用COW是没有意义的。 但是对于通用机器/服务器? 它可以让你使用所有的酷function(RAID1,…),而不会影响性能。 所以在我眼中是双赢的。