ריבוי דיירים ב-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 של תצורה קנונית (צריך להחליף את ה-placeholder בתצורות המכשיר).
{
"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_only_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 |
אובייקט | מציינת מאפיינים שחלים על סביבת מכונה וירטואלית שספציפית למופע המכשיר. |
memory_mb |
מספר | נפח הזיכרון להקצאה למכונה וירטואלית ספציפית במגה-בייט. |
setupwizard_mode |
מחרוזת | המדיניות קובעת אם אשף הגדרת המכשיר יופעל עבור המשתמש בהפעלה הראשונה של המכשיר. האפשרויות הנתמכות למצב אשף ההגדרה הן:
DISABLED , OPTIONAL ו-
REQUIRED . |
cpus |
מספר | מספר יחידות ה-CPU הווירטואליות שהוקצו למכונה הווירטואלית. |
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