Além dos buffers compartilhados na memória padrão do PostgreSQL, o cache em disco do AlloyDB Omni permite armazenar buffers em armazenamento rápido, como unidades de estado sólido (SSDs). O cache em disco acelera a recuperação de dados em instalações do AlloyDB Omni com diretórios de dados localizados em armazenamento mais lento.
Assim como os buffers compartilhados do PostgreSQL, o cache em disco do AlloyDB Omni não é persistente, o que significa que os dados armazenados em cache são perdidos na reinicialização.
Por padrão, o cache em disco do AlloyDB Omni usa todo o armazenamento informado pelo sistema de arquivos. É possível definir a quantidade de armazenamento reservado para dados de cache usando o parâmetro omni_disk_cache_file_size.
Ativar o cache em disco do AlloyDB Omni
Para ativar o cache em disco, conclua todas as subseções a seguir:
- Provisionar discos e criar um sistema de arquivos
- Montar o diretório de cache no AlloyDB Omni
- Ativar o cache em disco do AlloyDB Omni para o AlloyDB Omni em execução em um contêiner
Provisionar discos e criar um sistema de arquivos
Para o cache em disco do AlloyDB Omni, crie um sistema de arquivos em um ou vários discos e ative-o. Além disso, é possível usar utilitários como mdadm ou lvm para agrupar a capacidade usando vários discos e qualquer sistema de arquivos.
As etapas a seguir demonstram o uso de lvm e ext4 em uma instância do Compute Engine do Ubuntu usando SSDs NVMe.
Crie um grupo de volumes com 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 anexados a uma máquina virtual usando a interface de memória não volátil expressa (NVMe). Por exemplo, no Google Cloud, os caminhos de dispositivos NVMe sempre começam com/dev/nvme0n.VOLUME_GROUP: o nome de um grupo de volumes em que seus SSDs estão combinados. Por exemplo,omni-disk-cache-volume.
-
Para criar um volume lógico com a capacidade livre do grupo de volumes da etapa anterior, use o seguinte comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Substitua
LOGICAL_VOLUMEpelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo,omni_disk_cache_device. - Crie o sistema de arquivos
ext4no volume lógico. Se necessário, especifique outras opções deext4sujeitas à 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 host e monte o sistema de arquivos, 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_DIRECTORYpelo nome do diretório ou um caminho para o diretório que serve como um ponto de montagem, por exemplo,omni_disk_cache_directory.
Montar o diretório de cache no AlloyDB Omni
Antes de ativar o cache em disco para o AlloyDB Omni em execução em um contêiner, é necessário montar o diretório de cache dentro do AlloyDB Omni.
Para informações sobre como instalar o AlloyDB Omni de uma imagem Docker e personalizá-lo, consulte Personalizar a instalação do AlloyDB Omni.
Para montar o OMNI_DISK_CACHE_DIRECTORY dentro do contêiner do 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 \ -d google/alloydbomni
Substitua o seguinte:
CONTAINER_NAME: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo,my-omni.PASSWORD: a senha do administrador raiz do banco de dados PostgreSQL.DATA_DIR: o caminho do sistema de arquivos que você quer que o AlloyDB Omni use para o diretório de dados.CACHE_DIRECTORY_PATH: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner,/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 \ -d docker.io/google/alloydbomni
Substitua o seguinte:
CONTAINER_NAME: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo,my-omni.PASSWORD: a senha do administrador raiz do banco de dados PostgreSQL.CACHE_DIRECTORY_PATH: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner,/omni_disk_cache_directory, semelhante aOMNI_DISK_CACHE_DIRECTORY, ou/disk/cache/inside/container.
Para conceder permissões de acesso total ao OMNI_DISK_CACHE_DIRECTORY montado, use os seguintes comandos:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /OMNI_DISK_CACHE_DIRECTORY
sudo docker exec -it CONTAINER_NAME chmod -R a+rw /OMNI_DISK_CACHE_DIRECTORY
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /OMNI_DISK_CACHE_DIRECTORY
sudo podman exec -it CONTAINER_NAME chmod -R a+rw /OMNI_DISK_CACHE_DIRECTORY
Ativar o cache em disco
Para ativar o cache em disco do banco de dados, siga estas etapas:
Conecte-se ao banco de dados como um
SUPERUSER.Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgresPodman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgresDefina as flags da Grand Unified Configuration (GUC)
omni_disk_cache_enabledeomni_disk_cache_directory.ALTER SYSTEM SET omni_disk_cache_enabled=on; ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';(Opcional) Por padrão, o AlloyDB Omni usa todo o espaço disponível no sistema de arquivos. Se necessário, é possível substituir isso atualizando a flag
omni_disk_cache_file_sizeda GUC.ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;Substitua
SIZE_IN_MBpela quantidade de espaço em disco, em MB, que você quer que o cache em disco use.Reinicie o AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Verificar a configuração do cache em disco
Depois de ativar o cache em disco do AlloyDB Omni, verifique se o cache em disco está sendo acessado monitorando a atividade de leitura e gravação nos discos usando utilitários disponíveis, como iotop ou iostat.
Além disso, é possível verificar se o cache em disco do AlloyDB Omni está aberto.
Para verificar a configuração do cache em disco do AlloyDB Omni, use o seguinte comando.
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 cache em disco estiver configurado corretamente, a mensagem Successfully opened omni disk cache ... vai aparecer nos registros.
A seguir
- Sobre o gerenciamento automático de memória
- Sobre discos SSD locais
- Como criar e iniciar uma instância de VM