การเช่าหลายรายการของ Cuttlefish ช่วยให้เครื่องโฮสต์ของคุณสามารถเปิดใช้งานอุปกรณ์เสมือนแขกหลายเครื่องด้วยการเรียกใช้การเปิดใช้งานเพียงครั้งเดียว
เครื่องเสมือน Cuttlefish หลายเครื่องเหล่านี้สามารถแชร์ทรัพยากรดิสก์โฮสต์บางส่วนได้ ซึ่งช่วยให้คุณประหยัดพื้นที่ดิสก์ได้ เครื่องเสมือนแต่ละเครื่องได้รับการซ้อนทับดิสก์ที่แตกต่างกันซึ่งครอบคลุมพาร์ติชัน Android (เช่น super
, userdata
, boot
) การแก้ไขใด ๆ ในดิสก์เกสต์จะอยู่ในโอเวอร์เลย์ดิสก์เฉพาะเกสต์ ทำให้เครื่องเสมือน Cuttlefish แต่ละเครื่องมีมุมมองคัดลอกเมื่อเขียนของพาร์ติชั่นดิสก์ เนื่องจากอุปกรณ์เสมือนแต่ละเครื่องเขียนข้อมูลเพิ่มเติมลงในมุมมองของดิสก์ ไฟล์ซ้อนทับบนดิสก์โฮสต์จะมีขนาดเพิ่มขึ้นเนื่องจากไฟล์เหล่านั้นจับเดลต้าระหว่างสถานะดั้งเดิมและสถานะปัจจุบัน
ไฟล์ซ้อนทับสามารถรีเซ็ตได้เพื่อให้ดิสก์ปลาหมึกกลับสู่สถานะดั้งเดิม กระบวนการนี้เรียกว่า การล้างด้วยไฟฟ้า
หมายเลขอินสแตนซ์
อุปกรณ์ปลาหมึกจะสร้างและใช้ทรัพยากรบนโฮสต์ที่เชื่อมโยงกับ หมายเลขอินสแตนซ์ ตัวอย่างเช่น การเชื่อมต่อ adb
ถูกเปิดเผยผ่านซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520
สำหรับอุปกรณ์ Cuttlefish ที่มีหมายเลขอินสแตนซ์ 1
เมื่อเปิดใช้งานหลายอินสแตนซ์ ระบบจะสร้างซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520
สำหรับอุปกรณ์ตัวแรก และ 6521
สำหรับอุปกรณ์ตัวที่สอง และเพิ่มหมายเลขพอร์ตสำหรับอุปกรณ์เพิ่มเติมแต่ละเครื่อง
แก้ไขจำนวนอินสแตนซ์ที่รองรับสูงสุด
ทรัพยากรฝั่งโฮสต์ เช่น อุปกรณ์เครือข่าย TAP จะต้องได้รับการจัดสรรล่วงหน้าสำหรับเครื่องเสมือน Cuttlefish ตามค่าเริ่ม ต้น แพ็คเกจ Debian ที่ใช้ปลาหมึก จะจัดเตรียมทรัพยากรสำหรับอินสแตนซ์หมายเลข 1
ถึง 10
สิ่งนี้สามารถเปลี่ยนแปลงได้โดยการแก้ไข num_cvd_accounts
ใน /etc/default/cuttlefish-host-resources
และรีสตาร์ทบริการ cuttlefish-host-resources
โดยการรันคำสั่งต่อไปนี้:
sudo systemctl restart cuttlefish-host-resources
การกำหนดค่า Canonical
การกำหนดค่า Canonical แสดงถึงการกำหนดค่าสำหรับอุปกรณ์ Cuttlefish ในรูปแบบ JSON คุณสามารถสร้างไฟล์ JSON การกำหนดค่า Canonical เพื่ออธิบายการกำหนดค่าของอุปกรณ์ Cuttlefish หลายเครื่องในสถานการณ์ที่มีผู้เช่าหลายราย
ข้อมูลต่อไปนี้จะอธิบายรูปแบบที่ใช้สำหรับไฟล์ JSON การกำหนดค่าตามรูปแบบบัญญัติ (แทนที่ตัวยึดตำแหน่งด้วยการกำหนดค่าอุปกรณ์)
{
"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 | ตัวเลข | จำนวนหน่วยความจำที่จะจัดสรรสำหรับ VM ที่ระบุในหน่วยเมกะไบต์ |
setupwizard_mode | สตริง | ระบุว่าวิซาร์ดการตั้งค่าอุปกรณ์รันสำหรับผู้ใช้เมื่อเรียกใช้อุปกรณ์ครั้งแรกหรือไม่ ตัวเลือกที่รองรับสำหรับโหมดวิซาร์ดการตั้งค่าคือ DISABLED , OPTIONAL และ REQUIRED |
cpus | ตัวเลข | จำนวน CPU เสมือนที่จัดสรรให้กับ VM |
disk | วัตถุ | ระบุคุณสมบัติที่เกี่ยวข้องกับการค้นหาอาร์ติแฟกต์ของระบบไฟล์ที่ใช้สำหรับการเรียกใช้อินสแตนซ์ VM เดียว |
default_build | สตริง | เส้นทางระบบไฟล์ในเครื่องไปยังโฟลเดอร์ที่มีอิมเมจอุปกรณ์เสมือน Cuttlefish |
สำหรับตัวอย่างเพิ่มเติมของไฟล์การกำหนดค่าที่แจกจ่ายด้วย cvd
โปรดดูโฟลเดอร์ cvd_test_configs
ในแผนผังโค้ด Cuttlefish
ควบคุมอินสแตนซ์หลายผู้เช่า
ส่วนนี้อธิบายวิธีการเริ่มและหยุดอุปกรณ์ในสถานการณ์ที่มีผู้เช่าหลายราย คุณสามารถเปิดอุปกรณ์ Cuttlefish ได้หลายตัวโดยใช้ตัวเลือกต่อไปนี้:
- Canonical config : เปิดใช้งานการกำหนดค่าที่กำหนดเองสำหรับแต่ละอุปกรณ์โดยใช้ไฟล์กำหนดค่า JSON ที่อธิบายรายการอินสแตนซ์ที่จะเปิดใช้งาน
- รูปภาพของผู้เยี่ยมชมรายเดียว : เปิดอุปกรณ์หลายเครื่องจากรูปภาพของผู้เยี่ยมชมรายเดียว
เริ่ม VM หลายรายการจากการกำหนดค่าตามรูปแบบบัญญัติ
หากต้องการเริ่ม VM หลายเครื่องโดยใช้การกำหนดค่ามาตรฐานที่อธิบายสถานการณ์จำลองแบบหลายผู้เช่า ให้เรียกใช้คำสั่ง cvd start
ด้วยคำนำหน้าแฟล็ก --config_file=
ดังนี้:
cvd start --config_file=CONFIG_FILE
ต่อไปนี้คือตัวอย่างการเรียกใช้ที่อ้างอิงถึงไฟล์กำหนดค่ามาตรฐานที่ชื่อ /etc/phone.json
cvd start --config_file=/etc/phone.json
เริ่ม VM หลายรายการจากอิมเมจของแขกรายเดียว
หากต้องการเปิดใช้งานอุปกรณ์ Cuttlefish หลายเครื่องโดยใช้อิมเมจแขกเพียงตัวเดียว ให้ใช้แฟล็ก --num_instances= N
โดยที่ N คือจำนวนอุปกรณ์ที่จะเปิดใช้งาน ตามค่าเริ่มต้น อุปกรณ์จะเริ่มต้นจากอินสแตนซ์หมายเลข 1
cvd start --num_instances=N
หากต้องการเปลี่ยนหมายเลขอินสแตนซ์เริ่มต้น ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
เพิ่มแฟล็ก
--base_instance_num= N
โดยมี N เป็นหมายเลขอินสแตนซ์แรกcvd start --base_instance_num=N
เปิดตัว Cuttlefish ด้วยบัญชีผู้ใช้ที่ตรงกับ
vsoc- NN
โดยที่ NN คือหมายเลขอินสแตนซ์ฐานในรูปแบบสองหลัก ตัวอย่างเช่น หากต้องการเปิด Cuttlefish ด้วยบัญชีผู้ใช้vsoc- 01
ให้รัน:cvd start --base_instance_num=1
วิธีหยุดอุปกรณ์
หากต้องการหยุดอุปกรณ์ทั้งหมดที่เรียกใช้โดยการเรียกใช้ cvd start
ครั้งล่าสุด ให้รัน:
cvd stop