Oltre ai buffer condivisi in memoria di PostgreSQL standard, la cache dei dischi di AlloyDB Omni consente di archiviare i buffer su spazio di archiviazione veloce, come le unità a stato solido (SSD). La memorizzazione nella cache dei dischi accelera il recupero dei dati nelle installazioni di AlloyDB Omni con directory di dati situate su spazio di archiviazione più lento.
Come i buffer condivisi di PostgreSQL, la cache dei dischi di AlloyDB Omni non è persistente, il che significa che i dati memorizzati nella cache vengono persi al riavvio.
Per impostazione predefinita, la cache dei dischi di AlloyDB Omni utilizza tutto lo spazio di archiviazione segnalato dal file system. Puoi definire la quantità di spazio di archiviazione riservato alla memorizzazione nella cache dei dati utilizzando il parametro omni_disk_cache_file_size.
Attiva la cache dei dischi di AlloyDB Omni
Per attivare la cache dei dischi, completa tutte le seguenti sottosezioni:
- Esegui il provisioning dei dischi e crea un file system
- Monta la directory della cache all'interno di AlloyDB Omni
- Attiva la cache dei dischi di AlloyDB Omni per AlloyDB Omni in esecuzione in un container
Esegui il provisioning dei dischi e crea un file system
Per la cache dei dischi di AlloyDB Omni, crei un file system su uno o più dischi e lo monti. Inoltre, puoi utilizzare utilità come mdadm o lvm per raggruppare la capacità utilizzando più dischi e utilizzare qualsiasi file system.
I passaggi seguenti mostrano l'utilizzo di lvm e ext4 su un'istanza di Compute Engine Ubuntu utilizzando SSD NVMe.
Crea un gruppo di volumi da tutti i dispositivi fisici disponibili:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Sostituisci quanto segue:
STORAGE_PREFIX: il prefisso del percorso dei dischi locali di destinazione collegati a una macchina virtuale utilizzando l'interfaccia NVMe (Non-Volatile Memory Express), ad esempio, su Google Cloud, i percorsi dei dispositivi NVMe iniziano sempre con/dev/nvme0n.VOLUME_GROUP: il nome di un gruppo di volumi in cui sono combinati gli SSD, ad esempioomni-disk-cache-volume.
-
Per creare un volume logico dalla capacità libera del gruppo di volumi del passaggio precedente, utilizza il seguente comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Sostituisci
LOGICAL_VOLUMEcon il nome di un volume logico trattato come una partizione da LVM, ad esempioomni_disk_cache_device. - Crea il file system
ext4sul volume logico. Se necessario, puoi specificare altre opzioniext4soggette alla sicurezza dei dati.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Per creare una directory che funge da punto di montaggio sulla macchina host e montare il file system, utilizza il seguente comando:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
Sostituisci
OMNI_DISK_CACHE_DIRECTORYcon il nome della directory o un percorso alla directory che funge da punto di montaggio, ad esempioomni_disk_cache_directory.
Monta la directory della cache all'interno di AlloyDB Omni
Prima di attivare la cache dei dischi per AlloyDB Omni in esecuzione in un container, devi montare la directory della cache all'interno di AlloyDB Omni.
Per informazioni sull'installazione di AlloyDB Omni da un'immagine Docker e sulla sua personalizzazione, consulta Personalizza l'installazione di AlloyDB Omni.
Per montare OMNI_DISK_CACHE_DIRECTORY all'interno del container Docker che esegue AlloyDB Omni, utilizza il seguente 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
Sostituisci quanto segue:
CONTAINER_NAME: il nome da assegnare al nuovo container AlloyDB Omni, ad esempiomy-omni.PASSWORD: la password per l'amministratore root del database PostgreSQL.DATA_DIR: il percorso del file system che vuoi che AlloyDB Omni utilizzi per la directory dei dati.CACHE_DIRECTORY_PATH: la directory della cache all'interno del container AlloyDB Omni che esegue il mapping al punto di montaggio sulla macchina host, ad esempio, in base al valore della directory della cache all'interno del container,/omni_disk_cache_directory, simile aOMNI_DISK_CACHE_DIRECTORY, o/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
Sostituisci quanto segue:
CONTAINER_NAME: il nome da assegnare al nuovo container AlloyDB Omni, ad esempiomy-omni.PASSWORD: la password per l'amministratore root del database PostgreSQL.CACHE_DIRECTORY_PATH: la directory della cache all'interno del container AlloyDB Omni che esegue il mapping al punto di montaggio sulla macchina host, ad esempio, in base al valore della directory della cache all'interno del container,/omni_disk_cache_directory, simile aOMNI_DISK_CACHE_DIRECTORY, o/disk/cache/inside/container.
Per concedere le autorizzazioni di accesso completo a OMNI_DISK_CACHE_DIRECTORY montato, utilizza i seguenti comandi:
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
Attiva la cache dei dischi
Per attivare la memorizzazione nella cache dei dischi per il database:
Connettiti al database come
SUPERUSER.Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgresPodman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgresImposta i flag GUC (Grand Unified Configuration)
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';(Facoltativo) Per impostazione predefinita, AlloyDB Omni utilizza tutto lo spazio disponibile nel file system. Se necessario, puoi sostituire questo comportamento aggiornando il flag GUC
omni_disk_cache_file_size.ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;Sostituisci
SIZE_IN_MBcon la quantità di spazio su disco, in MB, che vuoi che la cache dei dischi utilizzi.Riavvia AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Verifica la configurazione della cache dei dischi
Dopo aver attivato la cache dei dischi di AlloyDB Omni, verifica che la cache dei dischi sia accessibile monitorando l'attività di lettura e scrittura sui dischi utilizzando le utilità disponibili come iotop o iostat.
Inoltre, puoi verificare se la cache dei dischi di AlloyDB Omni è aperta.
Per verificare la configurazione della cache dei dischi per AlloyDB Omni, utilizza il seguente 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 la memorizzazione nella cache dei dischi è configurata correttamente, nei log viene visualizzato il messaggio Successfully opened omni disk cache ....