בדף הזה נסביר איך:
יוצרים קטגוריה עם מיקום אזורי.
טוענים את הקטגוריה האזורית למערכת הקבצים המקומית באמצעות Cloud Storage FUSE.
העברת נתונים מקטגוריה קיימת לקטגוריה אזורית באמצעות Storage Transfer Service.
יצירת קטגוריה באזור
לפני שמתחילים
אם עוד לא עשיתם זאת, קבלו את התפקידים הנדרשים ליצירת מאגרי מידע.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על יצירה.
- ממלאים את פרטי הקטגוריה בדף Create a bucket. אחרי כל אחד מהשלבים הבאים, לוחצים על המשך כדי לעבור לשלב הבא:
-
בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:
-
מזינים שם ייחודי גלובלית שעומד בקריטריונים לשמות של קטגוריות.
-
-
בקטע Choose where to store your data, מבצעים את הפעולות הבאות:
-
בוחרים באפשרות אזור כסוג המיקום.
-
בתפריט הנפתח של סוג המיקום, בוחרים Location שבו נתוני האובייקטים בקטגוריה יישמרו באופן קבוע.
-
-
בקטע Choose how to store your data, האפשרות Rapid storage (אחסון מהיר) נבחרת כסוג האחסון שמוגדר כברירת מחדל.
-
בקטע Choose how to control access to objects, בוחרים אם הקטגוריה אוכפת public access prevention או לא, ואז בוחרים מודל בקרת גישה לאובייקטים של הקטגוריה.
-
כדי לבחור איך להצפין את נתוני האובייקט, לוחצים על החץ להרחבה שליד Data encryption ובוחרים שיטה ל-Data encryption.
-
לוחצים על יצירה.
שורת הפקודה
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
בסביבת הפיתוח, מריצים את הפקודה
gcloud storage buckets create:gcloud storage buckets create \ gs://BUCKET_NAME --location=BUCKET_LOCATION --placement=BUCKET_ZONE \ --default-storage-class=RAPID --enable-hierarchical-namespace --uniform-bucket-level-access
מחליפים את:
מחליפים את
BUCKET_NAMEבשם שרוצים לתת לקטגוריה, בכפוף לדרישות למתן שמות. לדוגמה:rapid-storage-bucket.
BUCKET_LOCATIONבאזור הקטגוריה. לדוגמה,us-east1.
BUCKET_ZONEבאזור שבו רוצים למקם את הקטגוריה. לדוגמה,us-east1-b.
אם הבקשה מבוצעת בהצלחה, הפקודה תחזיר את ההודעה הבאה:
Creating gs://rapid-storage-bucket/...
טעינת הקטגוריה האזורית באמצעות Cloud Storage FUSE
לפני שמתחילים
בקטע הזה אנחנו יוצאים מנקודת הנחה שכבר יש לכם גישה ל-Cloud Storage FUSE. אם עדיין לא עשיתם את זה, אתם צריכים לבצע את השלבים הבאים:
- התקנת Cloud Storage FUSE. חשוב לוודא שאתם מתקינים את Cloud Storage FUSE בגרסה 3.4.0 ואילך.
- אימות בקשות של Cloud Storage FUSE
- אם לא יצרתם את הקטגוריה שאתם רוצים לצרף, צריך לקבל את התפקידים הנדרשים כדי לצרף את הקטגוריה.
כדי לטעון קטגוריה אזורית באמצעות Cloud Storage FUSE, משתמשים בפקודות הבאות:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
מחליפים את:
MOUNT_POINTבספרייה המקומית שאליה רוצים לטעון את הקטגוריה. לדוגמה,$HOME/example-bucket.
BUCKET_NAMEבשם הקטגוריה שרוצים לטעון.
לדוגמה, הפקודות הבאות טוענות קטגוריה בשם example-rapid-storage-bucket לנקודת הטעינה source-bucket:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
כדי להעביר אובייקטים מקטגוריה קיימת לקטגוריה אזורית חדשה, צריך לצרף את שתי הקטגוריות ואז להשתמש בפקודה cp כדי להעביר את האובייקטים.
השוואת ביצועים באמצעות בדיקת FIO
כדי להשוות את מהירות הדלי האזורי, מריצים בדיקת FIO.
Google Kubernetes Engine
הפקודה הבאה מחילה הגדרה על אשכול Google Kubernetes Engine שמריץ בדיקת FIO על קטגוריה של Cloud Storage. הקטגוריה נטענת למערכת הקבצים של הקונטיינר באמצעות מנהל התקן ה-CSI של FUSE ל-GKE.
$ cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: fio
namespace: default
annotations:
gke-gcsfuse/volumes: "true"
spec:
containers:
- name: fio
image: mayadata/fio
command: ["/bin/ash", "-c", "--"]
args:
- |
fio --name=read_latency_test --filename=/data/fio --filesize=1G --time_based=1 --ramp_time=10s --runtime=1m --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 --bs=4K --iodepth=1 --rw=randread --disable_slat=1 --disable_clat=1 --lat_percentiles=1 --numjobs=1
volumeMounts:
- name: fio-bucket
mountPath: /data
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- ZONE_NAME
serviceAccountName: default
volumes:
- name: fio-bucket
csi:
driver: gcsfuse.csi.storage.gke.io
volumeAttributes:
bucketName: "BUCKET_NAME"
gcsfuseLoggingSeverity: warning
restartPolicy: Never
EOF
כאשר:
ZONE_NAMEהוא האזור שבו נמצאת הקטגוריה. לדוגמה,us-east4-a.
BUCKET_NAMEהוא שם הקטגוריה. לדוגמה,my-bucket.
אם הבדיקה מצליחה, הפלט של התגובה ייראה כך:
$ kubectl logs fio
Defaulted container "fio" out of: fio, gke-gcsfuse-sidecar (init)
read_latency_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.36
Starting 1 process
read_latency_test: (groupid=0, jobs=1): err= 0: pid=11: Mon Mar 3 20:38:14 2025
read: IOPS=591, BW=2365KiB/s (2422kB/s)(139MiB/60001msec)
lat (usec): min=867, max=181966, avg=1685.32, stdev=2695.84
lat percentiles (usec):
| 1.00th=[ 1074], 5.00th=[ 1188], 10.00th=[ 1254], 20.00th=[ 1336],
| 30.00th=[ 1401], 40.00th=[ 1467], 50.00th=[ 1549], 60.00th=[ 1614],
| 70.00th=[ 1713], 80.00th=[ 1844], 90.00th=[ 2057], 95.00th=[ 2278],
| 99.00th=[ 3064], 99.50th=[ 3654], 99.90th=[ 8717], 99.95th=[ 73925],
| 99.99th=[131597]
bw ( KiB/s): min= 1290, max= 2736, per=100.00%, avg=2365.51, stdev=244.10, samples=120
iops : min= 322, max= 684, avg=591.34, stdev=61.10, samples=120
cpu : usr=0.81%, sys=1.61%, ctx=36011, majf=0, minf=36
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=35473,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=2365KiB/s (2422kB/s), 2365KiB/s-2365KiB/s (2422kB/s-2422kB/s), io=139MiB (145MB), run=60001-60001msec
מכונה וירטואלית ב-Compute Engine
ההוראות הבאות מריצות בדיקת FIO במכונה וירטואלית (VM) של Compute Engine.
- טעינת אחסון מהיר באמצעות Cloud Storage FUSE:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
מחליפים את:
-
PATHבנתיב למערכת הקבצים המקומית שבה רוצים לטעון את הקטגוריה.
- אם עדיין לא עשיתם זאת, מתקינים את FIO:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- הרצת בדיקה לדוגמה של זמן האחזור של קריאת FIO:
fio --name=read_latency_test \
--filename=BUCKET_PATH/1G --filesize=1G \
--time_based=1 --ramp_time=10s --runtime=1m \
--ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
--bs=4K --iodepth=1 --rw=randread --numjobs=1
מחליפים את:
-
BUCKET_PATHבנתיב לקטגוריה שחיברתם.
אם הבדיקה מצליחה, הפלט של התגובה ייראה כך:
read_latency_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.33
Starting 1 process
Jobs: 1 (f=1): [f(1)][100.0%][eta 00m:00s]
read_latency_test: (groupid=0, jobs=1): err= 0: pid=78399: Tue Feb 11 21:14:35 2025
read: IOPS=622, BW=2490KiB/s (2550kB/s)(146MiB/60001msec)
slat (usec): min=108, max=13857, avg=1596.92, stdev=243.32
clat (nsec): min=1539, max=141717, avg=5872.92, stdev=3230.74
lat (usec): min=112, max=13866, avg=1602.80, stdev=244.13
clat percentiles (nsec):
| 1.00th=[ 2960], 5.00th=[ 3856], 10.00th=[ 4320], 20.00th=[ 4704],
| 30.00th=[ 4896], 40.00th=[ 5088], 50.00th=[ 5280], 60.00th=[ 5536],
| 70.00th=[ 5856], 80.00th=[ 6240], 90.00th=[ 7072], 95.00th=[ 8512],
| 99.00th=[21120], 99.50th=[26240], 99.90th=[40704], 99.95th=[51968],
| 99.99th=[75264]
bw ( KiB/s): min= 2024, max= 2672, per=100.00%, avg=2491.15, stdev=105.69, samples=120
iops : min= 506, max= 668, avg=622.77, stdev=26.41, samples=120
lat (usec) : 2=0.06%, 4=6.21%, 10=89.91%, 20=2.61%, 50=1.15%
lat (usec) : 100=0.05%, 250=0.01%
cpu : usr=0.67%, sys=1.79%, ctx=37361, majf=0, minf=37
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=37355,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=2490KiB/s (2550kB/s), 2490KiB/s-2490KiB/s (2550kB/s-2550kB/s), io=146MiB (153MB), run=60001-60001msecהעברת נתונים באמצעות Storage Transfer Service
אפשר להשתמש ב-Storage Transfer Service כדי להעביר נתונים בין קטגוריות אזוריות לבין קטגוריות אחרות של Cloud Storage.
ההרשאות הנדרשות
כדי להעביר נתונים בין קטגוריות של Cloud Storage, צריך את תפקידי ה-IAM שמפורטים במאמר הרשאות להעברה ללא סוכן.
בנוסף, מכיוון שבקטגוריות אזוריות נעשה שימוש במרחב שמות היררכי, צריך להעניק לסוכן השירות של Storage Transfer Service את הרשאות ה-IAM הבאות:
אם המקור הוא מאגר אזורי:
- אם משתמשים בתפקידים המוגדרים מראש שמפורטים במאמר הרשאות להעברה ללא סוכן, לא נדרשת פעולה נוספת.
ההרשאה הנדרשת (
storage.folders.list) כבר כלולה בתפקיד Storage Object Viewer (roles/storage.objectViewer).
- אם משתמשים בתפקידים המוגדרים מראש שמפורטים במאמר הרשאות להעברה ללא סוכן, לא נדרשת פעולה נוספת.
ההרשאה הנדרשת (
כשהיעד הוא מאגר אזורי:
- צריך להקצות לסוכן השירות את התפקיד Storage Object User (
roles/storage.objectUser). כך מקבלים את ההרשאה הנדרשתstorage.folders.create.
- צריך להקצות לסוכן השירות את התפקיד Storage Object User (
הוראות להוספת תפקידים לסוכן השירות מופיעות במאמרים הבאים:
מגבלות
העברות נתמכות:
- העברות נתמכות בין קטגוריות אזוריות וקטגוריות בכל מיקום אחר ב-Cloud Storage, כולל קטגוריות אזוריות אחרות.
תכונות שלא נתמכות:
- העברות מבוססות-אירועים
- שכפול בין דליים
- העברות מבוססות-סוכן
אובייקטים שלא הושלמו:
- כשמעבירים אובייקטים שלא הושלמה ההעברה שלהם מקטגוריה אזורית, יכול להיות שהנתונים בקטגוריית היעד לא ישקפו שינויים באובייקטים שמתבצעים בזמן שההעברה מתבצעת.
- אובייקטים של מקור שלא עברו סופיות מסומנים כסופיים בדלי היעד.
יצירת העברה
כדי להתחיל, אפשר לעיין במאמר בנושא יצירת העברה באמצעות Storage Transfer Service.