Cluster node (Pod) volumes are created according to the values set in the storage section of fepChildCrVal in the FEPCluster custom resource.
Note
After you create the FEPCluster for the first time, you cannot add new volumes later or modify the storageClass or accessModes.
You can resize the initially created volume only if the underlying storageClass supports dynamic resizing.
The following is the schema for the storage section of the FEPCluster customer resource:
Field | Mandatory | Sub-Field | Default | Description |
|---|---|---|---|---|
archivewalVol | No | size | 1Gi | Volume size of the archive log. Refer to "Estimating Database Disk Space Requirements" in the Fujitsu Enterprise Postgres Installation and Setup Guide for Server to help you design the size. |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start | ||
backupVol | No | size | 2Gi | Volume size of the backup. Estimate based on the following formula: (full backup generations + incr backup generations + 1) * dataVol size |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start | ||
dataVol | Yes | size | 2Gi | Volume size of the data. Refer to "Estimating Database Disk Space Requirements" in the Fujitsu Enterprise Postgres Installation and Setup Guide for Server and base the design on table/index size. |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start | ||
logVol | No | size | 1Gi | Volume size of the log. If you change the log output level (default: WARNING) or enable the audit log feature, measure the actual amount of log output in a test environment. |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start | ||
tablespaceVol | No | size | 512Mi | Volume size of the tablespace. When using tablespaces, as with dataVol, you should refer to "Estimating Database Disk Space Requirements" in the Fujitsu Enterprise Postgres Installation and Setup Guide for Server for information on sizing. |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start | ||
walVol | Yes | size | 1200Mi | Volume size of the transaction log. Refer to "Estimating Database Disk Space Requirements" in the Fujitsu Enterprise Postgres Installation and Setup Guide for Server to help you design the size. Note that the default value for max_wal_size is 1 GB. |
storageClass | Defaults to platform default if omitted | SC is only set at start | ||
accessModes | Defaults to ReadWriteOnce if omitted | Access mode is only set at start |
The 'accessMode' is been incorporated for the inclusion of pgBadger layer later. Giving it a shared volume capability will allow pgBadger Container to read logs from multiple server instance ( master / replica ) and expose it via a WebServer.
Due to a sudden increase in queries, etc., the amount of data and WAL will increase, and the disk capacity will be compressed, which may cause the database operation to stop. If the disk usage exceeds the threshold, or if database operation has stopped due to insufficient disk space, use the following methods to resolve the insufficient disk space.
Increasing disk space
Reducing disk usage
There are two ways to increase disk space:
Expanding disk capacity
If you are using a volume that can use the PVC extension function of Kubernetes, expand the disk capacity and solve the lack of space.
Migrating to a database cluster with a large disk capacity
If you are using a volume that cannot be used with the PVC extension function of Kubernetes, or if the volume cannot be expanded further due to the upper limit, etc., consider migrating the database cluster. Migrating data to a cluster that uses large-capacity disks solves the lack of capacity.
Expanding disk capacity
Expand your disk capacity with the Kubernetes PVC extension. Only disks that support the PVC expansion function can be expanded. Check the specifications of the CSI driver you are using to see if the disk supports PVC extensions.
Disk capacity expansion can be performed manually by the user at any time, or automatically by the operator when the usage exceeds the threshold in cooperation with the monitoring function.
Manual expansion can expand a PVC by changing the storage definition of the FEPCluster custom resource. Rewrite the custom resource and expand the PVC when AlertManager gives you a notification that the disk usage exceeds the threshold or the database stops due to lack of disk space.Refer to "5.3.2 Resizing PVCs" for more information on manual expansion. Also, refer to "Default Alert Rule" in the Reference for an example definition of AlertManager's alert rule.
Automatic expansion does not require database administrator monitoring or manual maintenance work (volume capacity expansion) until the expansion limit is reached.
For more information on auto expansion, refer to "2.3.3.2 Configuring PVC Auto Expansion".
If you are using a disk that does not support the PVC expansion function or if the disk capacity cannot be expanded, Refer to "Migrating to a database cluster with a large disk capacity" and "2.3.3.1.2 Reducing Disk Usage".
Migrating to a database cluster with a large disk capacity
Use the backup/restore function to construct a new database cluster on another disk and migrate the data. Use this method when:
When the alert manager issues a notification that the disk usage exceeds the threshold
When the database stops due to lack of disk space
Insufficient disk space can be resolved by changing to a disk with a larger capacity.
When migrating to a new database cluster, you can build a new FEPCluster and restore data by setting spec.changeParams of the FEPRestore custom resource and changing the definition from the restore source. For details, refer to "FEPRestore Custom Resource Parameters" in the Reference.
Execute the REINDEX statement on the data storage destinations (dataVol, walVol, tablespaceVol) as preventive maintenance for insufficient disk space. For details, refer to "Reorganizing Indexes" in the Fujitsu Enterprise Postgres Operation Guide.
Consider reducing the amount of disk usage as preventive maintenance for insufficient capacity of the transaction log storage destination and backup data storage destination. If the capacity of the transaction log storage destination is insufficient, review the log file rotation settings and output level, and consider changing them. If the backup data or transaction log archive storage space is insufficient, consider reducing the number of backup generations saved.
You can reduce the number of backup generations by specifying "backup_expire" for spec.fepAction.type of the FEPAction custom resource. For details, refer to "FEPAction Custom Resource Parameters" in the Reference.
By setting the FEPCluster custom resource spec.fepChildCrVal.storage.autoresize.enable to true, you can enable the PVC auto-grow feature that automatically expands disk space when disk usage exceeds a threshold.
The following two conditions must be met to enable the PVC auto-expansion function.
Specify a volume that supports the PVC expansion function in StorageClass
Specify true in the allowVolumeExpansion field in StorageClass
Check the specifications of the CSI driver you are using to see if the specified volume supports the PVC expansion function.
We also need Prometheus to monitor storage usage. Scrape the metrics captured by the kubelet below with Prometheus.
kubelet_volume_stats_used_bytes (Volume used capacity (bytes))
kubelet_volume_stats_capacity_bytes (Volume capacity (bytes))
Make sure that the scrape_config section of your Prometheus config file references /metrics, which the kubelet serves over https, for each node. Check the Prometheus documentation for more details.
The PVC auto-expansion feature can be enabled/disabled even after building the FEPCluster.
Enabling PVC auto-expansion builds a fep-tuning pod containing a pvc-auto-resize container. The pvc-auto-resize container periodically retrieves metrics from Prometheus for each defined PVC. If the PVC volume usage rate exceeds the defined threshold, the definition of the FEPCluster custom resource is automatically rewritten. The target PVC is automatically extended by rewriting the custom resource.
If the FEPCluster is configured with multiple units, the PVC will be expanded if the volume usage rate of even one unit exceeds the threshold.
The following parameters are used in the PVC auto expansion feature. For details of each parameter, refer to the Reference.
spec.fep.autoTuning section: Prometheus connection information for retrieving metrics
spec.fepChildCrVal.storage.autoresize section: Storage common extended settings
spec.fepChildCrVal.storage.xxxVol section: definition and individual extension settings for each storage
In the expansion settings, it is possible to define the volume utilization threshold, amount of size expansion, upper limit of size that can be expanded, and so on.
Below is an example of defining a FEPCluster custom resource when enabling the PVC auto expansion feature.
spec:
fep:
autoTuning:
prometheus:
prometheusUrl: http://prometheus-prometheus-oper-prometheus.prometheus.svc:9090
fepChildCrVal:
storage:
autoresize:
enable: True
threshold: 20
increase: 20
dataVol: # Use the data volume as is defined under autoresize
size: 10Gi
storageClass: resizable-storage
walVol: # wal volume changes threshold and expansion limit
size: 2Gi
storageClass: resizable-storage
threshold: 50
storageLimit: 10
backupVol: # backup volume does not expand
size: 20Gi
storageClass: share-storage
accessModes: ReadWriteMany
storageLimit: 0Concept of combination with monitoring feature
The PVC auto-expansion feature allows you to limit the amount of storage that can be expanded. However, there is a possibility that more data than expected may occur and the amount of data may exceed the set upper limit. To avoid this, we recommend using the monitoring function in conjunction with the PVC auto-expansion function.
In the alert rule created by default when using the FEPExporter function, an alert will be sent when the volume usage rate exceeds 90%. The default threshold for PVC autogrowth is 80%. As a result, even if the volume usage increases when the disk expansion limit is reached and automatic expansion is not performed, an alert will be sent from AlertManager, so you can be aware of the lack of disk space.
By setting the autogrowth threshold to a value lower than the alert rule threshold, you can keep more safe disk space.