בנוסף למאגרי הנתונים המשותפים הרגילים בזיכרון של PostgreSQL, מטמון הדיסק של AlloyDB Omni מאפשר לאחסן מאגרי נתונים באחסון מהיר כמו כונני SSD. שמירת נתונים במטמון בדיסק מאיצה את אחזור הנתונים בהתקנות של AlloyDB Omni עם ספריות נתונים שממוקמות באחסון איטי יותר.
בדומה למאגרי נתונים משותפים של PostgreSQL, מטמון הדיסק של AlloyDB Omni הוא לא קבוע, כלומר הנתונים שנשמרו במטמון אובדים בהפעלה מחדש.
כברירת מחדל, מטמון הדיסק של AlloyDB Omni משתמש בכל האחסון שמדווח על ידי מערכת הקבצים. אפשר להגדיר את נפח האחסון ששמור לשמירת נתונים במטמון באמצעות הפרמטר omni_disk_cache_file_size.
הפעלת מטמון דיסק ב-AlloyDB Omni
כדי להפעיל את מטמון הדיסק, צריך לבצע את כל הפעולות שמתוארות בקטעי המשנה הבאים:
- הקצאת דיסקים ויצירת מערכת קבצים
- העלאת ספריית המטמון בתוך AlloyDB Omni
- הפעלת מטמון דיסק של AlloyDB Omni עבור AlloyDB Omni שפועל בקונטיינר
הקצאת דיסקים ויצירת מערכת קבצים
במקרה של מטמון דיסק ב-AlloyDB Omni, יוצרים מערכת קבצים בדיסק אחד או בכמה דיסקים ומעלים אותה. בנוסף, אפשר להשתמש בכלי עזר כמו mdadm או lvm כדי לאגד את הקיבולת באמצעות כמה דיסקים ולהשתמש בכל מערכת קבצים.
השלבים הבאים מדגימים שימוש בפקודות lvm ו-ext4 במכונת Ubuntu ב-Compute Engine באמצעות NVMe SSD.
כדי ליצור קבוצת עוצמת קול מכל המכשירים הפיזיים הזמינים:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
מחליפים את מה שכתוב בשדות הבאים:
-
STORAGE_PREFIX: הקידומת של הנתיב של הדיסקים המקומיים של היעד שמצורפים למכונה וירטואלית באמצעות ממשק NVMe (זיכרון מהיר לא נדיף) – לדוגמה, ב- Google Cloud, הנתיבים של מכשירי NVMe תמיד מתחילים ב-/dev/nvme0n. -
VOLUME_GROUP: השם של קבוצת נפחים שבה משולבים כונני ה-SSD שלכם, לדוגמה,omni-disk-cache-volume.
-
-
כדי ליצור נפח לוגי מהקיבולת הפנויה של קבוצת הנפחים מהשלב הקודם, משתמשים בפקודה הבאה:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
מחליפים את
LOGICAL_VOLUMEבשם של נפח לוגי שמערכת ה-LVM מתייחסת אליו כמחיצה – לדוגמה,omni_disk_cache_device. - יוצרים את מערכת הקבצים
ext4בווליום הלוגי. אם צריך, אפשר לציין אפשרויות אחרות שלext4בהתאם לאבטחת הנתונים.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
כדי ליצור ספרייה שתשמש כנקודת טעינה במחשב המארח ולטעון את מערכת הקבצים, משתמשים בפקודה הבאה:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
מחליפים את
OMNI_DISK_CACHE_DIRECTORYבשם של הספרייה או בנתיב לספרייה שמשמשת כנקודת צירוף (mount point) – לדוגמה,omni_disk_cache_directory.
טעינת ספריית מטמון בתוך AlloyDB Omni
לפני שמפעילים את מטמון הדיסק ב-AlloyDB Omni שפועל בקונטיינר, צריך לטעון את ספריית המטמון בתוך AlloyDB Omni.
מידע על התקנה של AlloyDB Omni מקובץ אימג' של Docker ועל התאמה אישית של ההתקנה מופיע במאמר התאמה אישית של ההתקנה של AlloyDB Omni.
כדי לטעון את OMNI_DISK_CACHE_DIRECTORY בתוך קונטיינר Docker שבו פועל AlloyDB Omni, משתמשים בפקודה הבאה:
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
מחליפים את מה שכתוב בשדות הבאים:
-
CONTAINER_NAME: השם שיוקצה למאגר החדש של AlloyDB Omni, לדוגמהmy-omni. -
PASSWORD: הסיסמה של מנהל הבסיס של מסד הנתונים של PostgreSQL. -
DATA_DIR: הנתיב במערכת הקבצים שרוצים ש-AlloyDB Omni ישתמש בו לספריית הנתונים שלו. -
CACHE_DIRECTORY_PATH: ספריית המטמון בתוך קונטיינר AlloyDB Omni שממופה לנקודת הטעינה במחשב המארח – לדוגמה, בהתאם לערך של ספריית המטמון בתוך הקונטיינר,/omni_disk_cache_directory, בדומה ל-OMNI_DISK_CACHE_DIRECTORY, או/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
מחליפים את מה שכתוב בשדות הבאים:
-
CONTAINER_NAME: השם שיוקצה למאגר החדש של AlloyDB Omni, לדוגמהmy-omni. -
PASSWORD: הסיסמה של מנהל הבסיס של מסד הנתונים של PostgreSQL. -
CACHE_DIRECTORY_PATH: ספריית המטמון בתוך קונטיינר AlloyDB Omni שממופה לנקודת הטעינה במחשב המארח – לדוגמה, בהתאם לערך של ספריית המטמון בתוך הקונטיינר,/omni_disk_cache_directory, בדומה ל-OMNI_DISK_CACHE_DIRECTORY, או/disk/cache/inside/container.
כדי להעניק הרשאות גישה מלאות ל-OMNI_DISK_CACHE_DIRECTORY שנטען, משתמשים בפקודות הבאות:
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
הפעלת מטמון בדיסק
כדי להפעיל שמירת נתונים במטמון בדיסק עבור מסד הנתונים:
מתחברים למסד הנתונים בתור
SUPERUSER.Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgresPodman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgresמגדירים את הדגלים
omni_disk_cache_enabledו-omni_disk_cache_directoryשל Grand Unified Configuration (GUC).ALTER SYSTEM SET omni_disk_cache_enabled=on; ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';(אופציונלי) כברירת מחדל, AlloyDB Omni משתמש בכל השטח הזמין במערכת הקבצים. במקרה הצורך, אפשר לשנות את ברירת המחדל הזו על ידי עדכון הדגל
omni_disk_cache_file_sizeGUC.ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;מחליפים את
SIZE_IN_MBבכמות שטח הדיסק, במגה-בייט, שרוצים שמטמון הדיסק ישתמש בה.מפעילים מחדש את AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
אימות ההגדרה של מטמון הדיסק
אחרי שמפעילים את מטמון הדיסק של AlloyDB Omni, צריך לוודא שיש גישה למטמון הדיסק. לשם כך, אפשר לעקוב אחרי פעולות קריאה וכתיבה בדיסקים באמצעות כלי עזר זמינים כמו iotop או iostat.
בנוסף, אפשר לבדוק אם מטמון הדיסק של AlloyDB Omni פתוח.
כדי לאמת את הגדרת מטמון הדיסק ב-AlloyDB Omni, משתמשים בפקודה הבאה.
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"אם השמירה במטמון של הדיסק מוגדרת בצורה נכונה, ההודעה Successfully opened omni disk cache ... מוצגת ביומנים.