ייעוד המכונה המארחת של Cuttlefish לדיירויות מרובות מאפשר להפעיל כמה מכשירי אורחים וירטואליים באמצעות קריאה יחידה להפעלה.
מכונות וירטואליות מרובות של Cuttlefish יכולות לשתף חלק מהמשאבים של דיסק המארח, וכך לחסוך במקום בדיסק. לכל מכונה וירטואלית מוקצה שכבת-על נפרדת של דיסק שמכסה את המחיצות של Android (כמו super
, userdata
, boot
). כל שינוי בדיסק האורח מועבר לשכבת-על ייעודית של דיסק, כך שלכל מכונה וירטואלית של Cuttlefish יש תצוגה של מחיצות הדיסק שלה עם 'העתקה בזמן כתיבה'. ככל שכל מכשיר וירטואלי כותב יותר נתונים לתצוגה שלו של הדיסק, גודל קובצי שכבת-העל בדיסק המארח גדל כי הם מתעדים את ההפרש בין המצב המקורי לבין המצב הנוכחי.
אפשר לאפס את קובצי שכבת-העל כדי להחזיר את הדיסק של Cuttlefish למצב המקורי. התהליך הזה נקרא שטיפה בלחץ.
מספרי המכונות
מכשירי Cuttlefish יוצרים משאבים ומנצלים אותם במארח, בהתאם למספר המכונה שלהם. לדוגמה, חיבור adb
נחשף דרך שקע שרת TCP ביציאה 6520
למכשיר Cuttlefish עם מספר המכונה 1
.
כשמפעילים כמה מכונות, נוצר שקע שרת TCP ביציאה 6520
למכשיר הראשון, 6521
למכשיר השני, ומספר היציאה עולה בכל מכשיר נוסף.
שינוי המספר המקסימלי של המכונות הנתמכות
צריך להקצות מראש משאבים בצד המארח, כמו מכשירי רשת TAP, למכונות הווירטואליות של Cuttlefish. כברירת מחדל, חבילת Debian cuttlefish-base מקצה משאבים למספרי המכונות 1
עד 10
.
אפשר לשנות את זה על ידי שינוי הערך של num_cvd_accounts
בקובץ /etc/default/cuttlefish-host-resources
והפעלה מחדש של השירות cuttlefish-host-resources
באמצעות הפקודה הבאה:
sudo systemctl restart cuttlefish-host-resources
הגדרות קנוניות
הגדרות קנוניקליות מייצגות את ההגדרות של מכשירי Cuttlefish בפורמט JSON. אפשר ליצור קובצי JSON קנוניקליים של תצורה כדי לתאר את ההגדרות של כמה מכשירי Cuttlefish בתרחיש של כמה דיירים.
בהמשך מתואר הפורמט שמשמש לקובצי JSON של תצורה קנוניקלית (מחליפים את placeholders בהגדרות המכשיר).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
קובץ תצורה לדוגמה של הגדרה עם שני מכשירים, מכשיר טלפון ומכשיר לבישה:
{
"instances": [
{
"@import": "phone",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "OPTIONAL",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_x86_64_phone-userdebug"
}
},
{
"@import": "wearable",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "REQUIRED",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_gwear_x86-userdebug"
}
}
]
}
בטבלה הבאה מתוארים הרכיבים שבהם נעשה שימוש בהגדרה לדוגמה עם שני מכשירים:
רכיב | סוג | תיאור |
---|---|---|
instances |
מערך | מערך של אובייקטי JSON, שכל אחד מהם מתאר מכשיר יחיד בקבוצת המכשירים של הדיירים הרבים שרוצים להפעיל. |
@import |
מחרוזת | מציין את סוג המכשיר ומגדיר ערכים שמוגדרים כברירת מחדל לתצורת המכשיר. סוגי המכשירים הנתמכים הם phone ו-wearable . |
vm |
אובייקט | מציין מאפיינים שחלים על סביבת ה-VM שספציפית למכונה של המכשיר. |
memory_mb |
מספר | נפח הזיכרון להקצאה למכונה וירטואלית ספציפית, במגה-בייט. |
setupwizard_mode |
מחרוזת | מציין אם האשף להגדרת המכשיר יופעל עבור המשתמש בהפעלה הראשונה של המכשיר. האפשרויות הנתמכות במצב אשף ההגדרה הן DISABLED , OPTIONAL ו-REQUIRED . |
cpus |
מספר | מספר המעבדים הווירטואליים שמוקצים למכונה הווירטואלית. |
disk |
אובייקט | מציין מאפיינים שרלוונטיים לאיתור ארטיפקטים של מערכת קבצים המשמשים להרצה של מכונה וירטואלית אחת. |
default_build |
מחרוזת | נתיב במערכת הקבצים המקומית לתיקייה שמכילה קובץ אימג' של מכשיר וירטואלי של Cuttlefish. |
דוגמאות נוספות לקובצי תצורה שמופצים עם cvd
מופיעות בתיקייה cvd_test_configs
בעץ הקוד של Cuttlefish.
שליטה במכונות של דיירים מרובים
בקטע הזה נסביר איך יוצרים ומוחקים מכשירים בתרחיש של דיירים מרובים. אפשר להפעיל כמה מכשירי Cuttlefish באמצעות האפשרויות הבאות:
- תצורה קנוניקלית: הפעלת הגדרות בהתאמה אישית לכל מכשיר באמצעות קובץ תצורה בפורמט JSON שמתאר את רשימת המכונות להפעלה.
- קובץ אימג' יחיד של אורח: הפעלת מספר מכשירים מקובץ אימג' יחיד של אורח.
הפעלת כמה מכונות וירטואליות מתצורה קנוניקלית
כדי ליצור כמה מכונות וירטואליות באמצעות תצורה קנוניקלית שמתארת את התרחיש של 'מספר דיירים', מפעילים את הפקודה cvd create
עם קידומת הדגל --config_file=
באופן הבא:
cvd create --config_file=CONFIG_FILE
הדוגמה הבאה היא הפעלה לדוגמה שמפנה לקובץ תצורה קנוני בשם /etc/phone.json
.
cvd create --config_file=/etc/phone.json
הפעלה של כמה מכונות וירטואליות מתוך קובץ אימג' אורח יחיד
כדי להפעיל כמה מכשירי Cuttlefish באמצעות קובץ אימג' אורח אחד, משתמשים בדגל --num_instances=N
, כאשר N הוא מספר המכשירים שרוצים להפעיל. כברירת מחדל, המכשירים מתחילים במספר המכונה 1
.
cvd create --num_instances=N
כדי לשנות את מספר המכונה ההתחלתי, מבצעים אחת מהפעולות הבאות:
מוסיפים את הדגל
--base_instance_num=N
עם N כמספר המכונה הראשון.cvd create --base_instance_num=N
מריצים את Cuttlefish עם חשבון משתמש שמתאים ל-
vsoc-NN
, כאשר NN הוא מספר המכונה הבסיסי בשתי ספרות. לדוגמה, כדי להפעיל את Cuttlefish באמצעות חשבון המשתמשvsoc-01
, מריצים את הפקודה:cvd create --base_instance_num=1
איך מפסיקים את המכשירים
כדי להפסיק את כל המכשירים שהופעלו על ידי ההפעלה האחרונה של cvd create
, מריצים את הפקודה:
cvd stop
כדי להפעיל מחדש מכשירים שהושהו, מריצים את הפקודה:
cvd start
כדי להסיר מכשיר לחלוטין מהמערכת, מריצים את הפקודה:
cvd remove