Cuttlefish: ภาพรวมและการกู้คืน

Android 15 จะแนะนำวิธีถ่ายภาพสแนปชอตและ กู้คืนสแนปชอตของอุปกรณ์เสมือน Cuttlefish การถ่ายภาพสแนปชอตของอุปกรณ์ Cuttlefish ช่วยให้คุณบันทึกสถานะของอุปกรณ์เป็นรูปภาพในดิสก์ได้ จากนั้นคุณจะกู้คืนสแนปชอตเพื่อเปิดอุปกรณ์ Cuttlefish ไปยัง สถานะที่บันทึกไว้ก่อนหน้านี้ได้

คุณสามารถใช้สแนปชอตในเวิร์กโฟลว์อัตโนมัติหรือเวิร์กโฟลว์ด้วยตนเองต่างๆ ได้ เมื่อ ทำตามขั้นตอนที่แก้ไขอุปกรณ์ คุณสามารถถ่ายภาพรวมของ อุปกรณ์เพื่อให้แน่ใจว่าคุณสามารถกู้คืนอุปกรณ์กลับสู่สถานะที่ระบุได้ เช่น เมื่อเรียกใช้ชุดการทดสอบที่แก้ไขสถานะของอุปกรณ์ และอาจทำให้เกิดปัญหาหรือความไม่เสถียรในการทดสอบต่อไป คุณสามารถถ่ายภาพรวมเพื่อให้คืนค่าอุปกรณ์เป็นสถานะที่บันทึกไว้หลังจากการทดสอบ เพื่อให้มั่นใจว่าการทดสอบครั้งต่อๆ ไปจะทำงานได้อย่างราบรื่น

อีกตัวอย่างหนึ่งของเวิร์กโฟลว์ที่สแนปชอตมีประโยชน์คือเมื่อทดสอบ ลักษณะการทำงานของแอป เมื่อทดสอบลักษณะการทำงานของแอปตามชุด การดำเนินการ คุณสามารถถ่ายสแนปชอตระหว่างการดำเนินการขณะที่แอปกำลังทำงาน เพื่อให้คุณกู้คืนไปยังสแนปชอตนั้นได้โดยไม่ต้องรีสตาร์ทตั้งแต่ เริ่มต้น เช่น หากการเปิดตัวเกมใช้เวลานาน คุณ สามารถถ่ายภาพรวมหลังจากไปถึงเมนูหลักเพื่อกู้คืน อุปกรณ์ไปยังสถานะดังกล่าวได้โดยไม่ต้องรอเวลาเปิดตัว

ถ่ายสแนปชอตของอุปกรณ์ Cuttlefish

เมื่อถ่ายภาพรวมของอุปกรณ์ จะต้องระงับอุปกรณ์ Cuttlefish เพื่อให้แน่ใจว่าอุปกรณ์ Cuttlefish อยู่ในสถานะที่เสถียร เมื่ออุปกรณ์ ถูกระงับ ระบบจะหยุด vCPU และอุปกรณ์ทั้งหมด และบัฟเฟอร์ทั้งหมดจะพุช สถานะไปยัง VM จากนั้นสแนปชอตจะบันทึกสถานะ vCPU, หน่วยความจำ และสถานะอุปกรณ์ลงในดิสก์ที่โฟลเดอร์ปลายทางที่ระบุ

ไม่รองรับ VirtiosFS และต้องปิดใช้เมื่อถ่ายภาพรวม หากต้องการ ปิดใช้ VirtioFS ให้ส่งอาร์กิวเมนต์ --enable_virtiofs=false เมื่อเรียกใช้ cvd create หรือ cvd start

รองรับเฉพาะโหมด GPU ของ SwiftShader (guest_swiftshader) สำหรับ ภาพรวม ระบบไม่รองรับโหมดกราฟิกเร่งความเร็วอื่นๆ

ขั้นตอนต่อไปนี้จะอธิบายกระบวนการเปิดตัวอุปกรณ์ Cuttlefish และถ่ายภาพรวม

  1. เปิดใช้อุปกรณ์ขณะปิดใช้ VirtioFS (จากนั้นคุณจะใช้อุปกรณ์ได้)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. ถ่ายภาพรวมโดยเรียกใช้ cvd snapshot_take ด้วยแฟล็กต่อไปนี้

    • --force: หากมีโฟลเดอร์ในเส้นทางสแนปชอตที่ระบุ แฟล็กนี้จะช่วยให้มั่นใจได้ว่าระบบจะลบโฟลเดอร์ที่มีอยู่และสร้างโฟลเดอร์ใหม่ในเส้นทางสแนปชอตที่มีสแนปชอต

    • --auto_suspend: ระงับอุปกรณ์ก่อนที่จะถ่ายสแนปชอตและ กลับมาทำงานต่อหลังจากถ่ายสแนปชอต

    • --snapshot_path: เส้นทางที่ระบุซึ่งจะสร้างโฟลเดอร์ใหม่ พร้อมสแนปชอต

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

กู้คืนอุปกรณ์ Cuttlefish

เมื่อกู้คืนสแนปชอตของอุปกรณ์ Cuttlefish คุณต้องหยุดอินสแตนซ์ Cuttlefish ที่ใช้ถ่ายสแนปชอต หากหยุดอินสแตนซ์แล้ว คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมและสามารถกู้คืนข้อมูลจาก Snapshot ได้

หากต้องการกู้คืนสแนปชอตของอุปกรณ์ Cuttlefish ให้เปิดใช้อุปกรณ์ด้วย cvd create แล้วระบุเส้นทางของสแนปชอต หากหมายเลขอินสแตนซ์ฐานของอุปกรณ์ Cuttlefish ที่ใช้ถ่ายภาพรวมแตกต่างจากหมายเลขอินสแตนซ์ ฐานของอินสแตนซ์ Cuttlefish ปัจจุบัน ให้ส่งหมายเลขอินสแตนซ์ ฐานนั้นโดยใช้แฟล็ก --base_instance_num

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

ระงับอุปกรณ์ Cuttlefish

คุณสามารถระงับอุปกรณ์ Cuttlefish ได้โดยไม่ต้องถ่ายสแนปชอต (ระบบจะไม่ใช้พื้นที่ดิสก์ ในการบันทึกสถานะ) หากต้องการระงับอุปกรณ์ Cuttlefish ให้เรียกใช้คำสั่งต่อไปนี้

cvd suspend

กลับมาใช้อุปกรณ์ Cuttlefish ต่อ

หากต้องการกลับมาใช้อุปกรณ์ Cuttlefish ที่ถูกระงับ ให้เรียกใช้คำสั่งต่อไปนี้

cvd resume

ตรวจสอบฟีเจอร์สแนปชอต/การกู้คืน

คุณตรวจสอบความถูกต้องของฟีเจอร์สแนปชอต/กู้คืนได้โดยเรียกใช้การทดสอบต่อไปนี้

atest SnapshotTest