Postgres 9.3 has introduced data checksums at the data page level, using a CRC-16 algorithm for the checksum calculation.
With 9.3, the only way to check if an existing server has checksums enabled was to have a look at the data folder using pg_controldata like that…
$ pg_controldata $PGDATA | grep checksum Data page checksum version: 0/1
0 indicates that checksums are disabled, and 1 the opposite. By the way, this is particularly unhandy in the case of a server whose file system cannot be accessed directly.
However, a new GUC parameter has been added in Postgres 9.4 reporting if checksums are enabled on a server, making the user life easier. This allows to check the presence of checksums on a cluster by using normal client applications like psql with a simple SHOW command or by having a look at pg_settings.
=# SHOW data_checksums; data_checksums ---------------- off (1 row) =# SELECT name, setting, category FROM pg_settings WHERE name = 'data_checksums'; name | setting | category ----------------+---------+---------------- data_checksums | off | Preset Options (1 row)
Note this parameter is read-only as checksums can only be set at initdb, and that it is not mentioned in postgresql.conf.