Cuttlefish: Snapshot and restore

ב-Android 15 מוסבר איך לצלם קובץ snapshot ולשחזר קובץ snapshot של מכשיר וירטואלי מסוג Cuttlefish. צילום קובץ snapshot של מכשיר Cuttlefish מאפשר לשמור את המצב של המכשיר בתמונה בדיסק. לאחר מכן תוכלו לשחזר את קובץ ה-snapshot כדי להחזיר מכשיר Cuttlefish למצב שנשמר קודם.

אפשר להשתמש בתמונות מצב בתהליכי עבודה שונים, אוטומטיים או ידניים. כשמבצעים פעולה שמשנה את המכשיר, אפשר לצלם תמונת מצב של המכשיר כדי לוודא שאפשר לשחזר אותו למצב מסוים. לדוגמה, כשמריצים חבילות בדיקות שמשנות את המצב של המכשיר ויכולות לגרום לבעיות או לחוסר יציבות בבדיקות הבאות, אפשר לצלם קובץ snapshot כדי לשחזר את המכשיר למצב ששמרתם אחרי הבדיקה, וכך לוודא שהבדיקות הבאות יתבצעו בצורה תקינה.

דוגמה נוספת לתהליך עבודה שבו קובצי snapshot שימושיים היא בדיקת ההתנהגות של אפליקציה. כשבודקים את ההתנהגות של אפליקציה על סמך קבוצה של פעולות, אפשר ליצור קובץ snapshot בין הפעולות בזמן שהאפליקציה פועלת, כדי שתוכלו לשחזר את קובץ ה-snapshot הזה בלי שתצטרכו להתחיל מחדש. לדוגמה, אם זמן ההפעלה של משחק ארוך, תוכלו לצלם קובץ snapshot אחרי שמגיעים לתפריט הראשי כדי לשחזר את המכשיר למצב הזה ולדלג על זמן ההפעלה.

צילום תמונת מצב של מכשיר Cuttlefish

כשמצלמים קובץ snapshot של מכשיר, צריך להשעות את מכשיר Cuttlefish כדי לוודא שהוא נמצא במצב יציב. כשהמכשיר מושעה, כל המעבדים הווירטואליים והמכשירים מופסקים, וכל המאגרים מעבירים את המצב שלהם למכונה הווירטואלית. לאחר מכן, קובץ ה-snapshot שומר את המצב של המעבד הווירטואלי, הזיכרון ומצב המכשיר בדיסק בתיקיית יעד שצוינה.

אין תמיכה ב-VirtiosFS וצריך להשבית אותו כשמצלמים קובץ snapshot. כדי להשבית את VirtioFS, מעבירים את הארגומנט --enable_virtiofs=false כשמריצים את cvd create או את cvd start.

בתמונות המצבה יש תמיכה רק במצב ה-GPU של SwiftShader‏ (guest_swiftshader). אין תמיכה במצבי גרפיקה אחרים עם האצה.

בשלבים הבאים מוסבר איך מפעילים מכשיר Cuttlefish ומצלמים קובץ snapshot.

  1. מפעילים מכשיר תוך השבתת VirtioFS. (לאחר מכן תוכלו להשתמש במכשיר).

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. כדי ליצור snapshot, מריצים את הפקודה cvd snapshot_take עם הדגלים הבאים:

    • --force: אם קיימת תיקייה בנתיב שצוין של קובץ ה-snapshot, הדגל הזה מבטיח שהתיקייה הקיימת תימחק ותיקייה חדשה תיווצר בנתיב של קובץ ה-snapshot שמכיל את קובץ ה-snapshot

    • --auto_suspend: השהיה של המכשיר לפני צילום קובץ ה-snapshot והפעלה מחדש של המכשיר אחרי צילום קובץ ה-snapshot.

    • --snapshot_path: הנתיב שצוין שבו נוצרת תיקייה חדשה עם קובץ ה-snapshot.

    cvd snapshot_take --force --auto_suspend \
    --snapshot_path=PATH

שחזור מכשיר Cuttlefish

כשמשחזרים קובץ snapshot של מכשיר Cuttlefish, צריך לעצור את המכונה של Cuttlefish שבה נוצר קובץ ה-snapshot. אם המכונה כבר הופסקה, אין צורך לבצע פעולה נוספת וניתן לשחזר את קובץ ה-snapshot.

כדי לשחזר קובץ snapshot של מכשיר Cuttlefish, מפעילים מכשיר באמצעות cvd create ומצרפים את נתיב קובץ ה-snapshot. אם מספר המכונה הבסיסית של מכשיר Cuttlefish שבו צולמה קובץ ה-snapshot שונה ממספר המכונה הבסיסית של מכונה Cuttlefish הנוכחית, מעבירים את מספר המכונה הבסיסית באמצעות הדגל --base_instance_num.

cvd create --snapshot_path=PATH \
--base_instance_num=ID

השעיה של מכשיר Cuttlefish

אפשר להשעות מכשיר Cuttlefish בלי לצלם קובץ snapshot (לא נעשה שימוש בנפח דיסק לשמירת המצב). כדי להשעות מכשיר Cuttlefish, מריצים את הפקודה:

cvd suspend

המשך העבודה במכשיר Cuttlefish

כדי להמשיך את העבודה עם מכשיר Cuttlefish מושעה, מריצים את הפקודה:

cvd resume

אימות התכונה Snapshot/Restore

כדי לאמת את התכונה Snapshot/Restore, מריצים את הבדיקה הבאה:

atest SnapshotTest