ריבוי דיירים של דיונון מאפשר למכונה המארחת להפעיל מספר מכשירי אורחים וירטואליים באמצעות הפעלת השקה אחת.
המכונות הווירטואליות המרובות של 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 |
מספר | מספר המעבדים הווירטואליים שהוקצו ל-VM. |
disk |
אובייקט | מציינת את המאפיינים הרלוונטיים לאיתור ארטיפקטים של מערכת הקבצים שמשמשים להרצת מכונה וירטואלית יחידה. |
default_build |
מחרוזת | נתיב של מערכת הקבצים המקומית לתיקייה שמכילה תמונה של מכשיר וירטואלי של Cuttlefish. |
לדוגמאות נוספות של קובצי תצורה שמופצים באמצעות cvd
, אפשר להיכנס לתיקייה cvd_test_configs
בעץ הקוד של Cuttlefish.
שליטה במכונות עם ריבוי דיירים (multi-tenant)
בקטע הזה נסביר איך יוצרים ומוחקים מכשירים בתרחיש של דיירים מרובים. אפשר להפעיל מספר מכשירי 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