Além das buffers partilhadas na memória padrão do PostgreSQL, a cache de disco do AlloyDB Omni permite armazenar buffers em armazenamento rápido, como unidades de estado sólido (SSDs). A colocação em cache no disco acelera a obtenção de dados em instalações do AlloyDB Omni com diretórios de dados localizados num armazenamento mais lento.
Tal como as buffers partilhados do PostgreSQL, a cache de disco do AlloyDB Omni não é persistente, o que significa que os dados em cache são perdidos no reinício.
Por predefinição, a cache de disco do AlloyDB Omni usa todo o armazenamento comunicado pelo sistema de ficheiros. Pode definir a quantidade de armazenamento reservada para dados de colocação em cache através do parâmetro omni_disk_cache_file_size
.
Ative a cache de disco do AlloyDB Omni
Para ativar a cache de disco para o AlloyDB Omni num contentor, siga estes passos.
Aprovisione discos e crie um sistema de ficheiros
Para a cache de disco do AlloyDB Omni, cria um sistema de ficheiros num disco ou em vários discos e monta-o num contentor com o AlloyDB Omni. Além disso, pode usar utilitários como mdadm
ou lvm
para agrupar a capacidade através de vários discos e usar qualquer sistema de ficheiros.
Os passos seguintes demonstram a utilização de lvm
e ext4
numa instância do Ubuntu Compute Engine com SSDs NVMe.
Crie um grupo de volume a partir de todos os dispositivos físicos disponíveis:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Substitua o seguinte:
STORAGE_PREFIX
: o prefixo do caminho dos discos locais de destino que estão anexados a uma máquina virtual através da interface nonvolatile memory express (NVMe). Por exemplo, no Google Cloud, os caminhos dos dispositivos NVMe começam sempre com/dev/nvme0n
.VOLUME_GROUP
: o nome de um grupo de volumes onde os seus SSDs estão combinados, por exemplo,omni-disk-cache-volume
.
-
Para criar um volume lógico a partir da capacidade livre do grupo de volumes do passo anterior, use o seguinte comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Substitua
LOGICAL_VOLUME
pelo nome de um volume lógico que é tratado como uma partição pelo LVM, por exemplo,omni_disk_cache_device
. - Crie o sistema de ficheiros
ext4
no volume lógico. Se necessário, pode especificar outras opções deext4
sujeitas à segurança dos dados.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Para criar um diretório que sirva como ponto de montagem na máquina anfitriã e montar o sistema de ficheiros, use o seguinte comando:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
Substitua
OMNI_DISK_CACHE_DIRECTORY
pelo nome do diretório ou por um caminho para o diretório que serve como ponto de montagem, por exemplo,omni_disk_cache_directory
.
Monte o diretório da cache no AlloyDB Omni
Antes de ativar a cache de disco para o AlloyDB Omni em execução num contentor, tem de montar o diretório de cache no AlloyDB Omni.
Para obter informações sobre como instalar o AlloyDB Omni a partir de uma imagem do Docker e personalizá-lo, consulte o artigo Personalize a sua instalação do AlloyDB Omni.
Para montar o OMNI_DISK_CACHE_DIRECTORY
no contentor Docker que executa o AlloyDB Omni, use o seguinte comando:
Docker
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni
Substitua o seguinte:
CONTAINER_NAME
: o nome a atribuir ao novo contentor do AlloyDB Omni, por exemplo,my-omni
.PASSWORD
: a palavra-passe do administrador principal da sua base de dados PostgreSQL.DATA_DIR
: o caminho do sistema de ficheiros que quer que o AlloyDB Omni use para o respetivo diretório de dados.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: o diretório da cache no contentor do AlloyDB Omni que é mapeado para o ponto de montagem na máquina anfitriã, por exemplo, com base no valor do diretório da cache no contentor,/omni_disk_cache_directory
, semelhante aOMNI_DISK_CACHE_DIRECTORY
, ou/disk/cache/inside/container
.
Podman
podman run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
Substitua o seguinte:
CONTAINER_NAME
: o nome a atribuir ao novo contentor do AlloyDB Omni, por exemplo,my-omni
.PASSWORD
: a palavra-passe do administrador principal da sua base de dados PostgreSQL.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: o diretório da cache no contentor do AlloyDB Omni que é mapeado para o ponto de montagem na máquina anfitriã, por exemplo, com base no valor do diretório da cache no contentor,/omni_disk_cache_directory
, semelhante aOMNI_DISK_CACHE_DIRECTORY
, ou/disk/cache/inside/container
.
Para conceder autorizações de acesso total ao OMNI_DISK_CACHE_DIRECTORY
montado, use os seguintes comandos:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Ative a cache de disco do AlloyDB Omni
Para ativar a cache de disco do AlloyDB Omni para a sua base de dados, defina os parâmetros de configuração unificada geral (GUC) adequados depois de se certificar de que o diretório da cache montada está acessível a partir do contentor Docker.
-
Para estabelecer ligação à base de dados AlloyDB Omni contentorizada como superutilizador, use o seguinte comando:
Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
Podman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
-
Para definir o valor dos parâmetros, use os seguintes comandos na base de dados AlloyDB Omni:
alter system set omni_disk_cache_enabled=on; alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
-
Por predefinição, o AlloyDB Omni usa todo o espaço disponível no sistema de ficheiros. Pode substituir o valor predefinido através do parâmetro
omni_disk_cache_file_size
, se necessário.alter system set omni_disk_cache_file_size=SIZE_IN_MB;
-
Para que a alteração dos parâmetros de configuração da colocação em cache entre em vigor, reinicie o contentor em execução com o AlloyDB Omni:
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Valide a configuração da cache do disco
Depois de ativar a cache de disco do AlloyDB Omni, verifique se a cache de disco é acedida monitorizando a atividade de leitura e escrita nos discos através de utilitários como iotop
ou iostat
.
Além disso, pode verificar se a cache de disco do AlloyDB Omni está aberta.
Para validar a configuração da cache de disco do AlloyDB Omni num contentor, siga estes passos:
Docker
sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"
Podman
sudo podman logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"
Se o armazenamento em cache no disco estiver configurado corretamente, a mensagem Successfully opened omni disk cache ...
é apresentada nos registos.
O que se segue?
- Acerca da gestão automática de memória
- Acerca dos discos SSD locais
- Criar e iniciar uma instância de VM