「PostgreSQL」- 选择文件系统

关于次级文件系统

这里的次级文件系统是指:在目录中挂载额外的数据盘,以用于 PostgreSQL 的数据存储。

官方不建议直接使用次级文件系统的根目录作为数据目录,而应该在次级文件系统中创建子目录,来进行 PostgreSQL 数据存储。

关于文件系统性能

经验表明,在所有其他条件相同的情况下,不应仅仅 通过切换文件系统进行较小的文件系统配置更改 来期望重大的性能或行为变化。

关于 NFS 存储

这是我们比较关心的问题,鉴于无法提供块存储,网络存储则多以 NFS 为主。

PostgreSQL 并未使用 NFS 某些高级特性,诸如 File Locking 等等。

但是 PostgreSQL 要求 NFS 开启部分挂载选项:

hard vs. soft

1)建议开启 NFS hard 挂载选项,以在出现网络问题时,进程能够“挂起”;
2)如果通过 soft 挂载,那么当网络故障时,系统调用将被中断,并且 PostgreSQL 不会进行重试,而是返回 IO 错误。

sync vs. async

1)建议开启 NFS sync 挂载选项,以保证数据实际写入磁盘;
2)鉴于 PostgreSQL 会调用 fsync 刷新写缓存,虽然 NFS async 选项足够,但是 fsync 并不能保证数据写入持久存储;

关于 iSCSI 存储

如果使用块存储,例如 iSCSI 等等,就无需考虑 NFS 复杂问题,当然可能需要考虑其他问题。

参考文献

PostgreSQL: Documentation: 14: 19.2. Creating a Database Cluster