कटलफ़िश: स्नैपशॉट और उसे वापस लाना

Android 15 में, Cuttlefish वर्चुअल डिवाइस का स्नैपशॉट लेने और उसे वापस लाने का तरीका बताया गया है. Cuttlefish डिवाइस का स्नैपशॉट लेने पर, डिवाइस की स्थिति को डिस्क पर इमेज के तौर पर सेव किया जा सकता है. इसके बाद, Cuttlefish डिवाइस को पहले से सेव की गई स्थिति पर लाने के लिए, स्नैपशॉट को वापस लाया जा सकता है.

ऑटोमेटेड या मैन्युअल वर्कफ़्लो में, स्नैपशॉट का इस्तेमाल किया जा सकता है. डिवाइस में बदलाव करने वाली कोई प्रोसेस करते समय, डिवाइस का स्नैपशॉट लें. इससे, डिवाइस को पहले जैसा करने में मदद मिलेगी. उदाहरण के लिए, ऐसे टेस्ट सुइट चलाते समय जो डिवाइस की स्थिति में बदलाव करते हैं और जिनकी वजह से आने वाले टेस्ट में समस्याएं या अस्थिरता हो सकती है, तो स्नैपशॉट लिया जा सकता है. इससे, किसी टेस्ट के बाद डिवाइस को सेव की गई स्थिति में वापस लाया जा सकता है. इससे यह पक्का किया जा सकता है कि आने वाले टेस्ट बिना किसी रुकावट के चलें.

वर्कफ़्लो का एक और उदाहरण, जहां स्नैपशॉट काम के होते हैं. यह तब होता है, जब किसी ऐप्लिकेशन के व्यवहार की जांच की जा रही हो. कार्रवाइयों के सेट के आधार पर, ऐप्लिकेशन के व्यवहार की जांच करते समय, ऐप्लिकेशन के चलने के दौरान कार्रवाइयों के बीच में स्नैपशॉट लिया जा सकता है. इससे, आपको शुरुआत से फिर से शुरू किए बिना उस स्नैपशॉट को वापस लाने में मदद मिलती है. उदाहरण के लिए, अगर किसी गेम को लॉन्च करने में ज़्यादा समय लगता है, तो मुख्य मेन्यू पर पहुंचने के बाद स्क्रीनशॉट लिया जा सकता है. इससे डिवाइस को उसी स्थिति में वापस लाया जा सकता है और गेम को लॉन्च करने में लगने वाला समय बचाया जा सकता है.

Cuttlefish डिवाइस का स्नैपशॉट लेना

किसी डिवाइस का स्नैपशॉट लेते समय, Cuttlefish डिवाइस को निलंबित करना ज़रूरी है, ताकि यह पक्का किया जा सके कि Cuttlefish डिवाइस सही स्थिति में है. डिवाइस को निलंबित करने पर, सभी vCPU और डिवाइस बंद हो जाते हैं. साथ ही, सभी बफ़र अपनी स्थिति को VM पर भेज देते हैं. इसके बाद, स्नैपशॉट, vCPU की स्थिति, मेमोरी, और डिवाइस की स्थिति को डिस्क पर किसी तय डेस्टिनेशन फ़ोल्डर में सेव करता है.

VirtiosFS का इस्तेमाल नहीं किया जा सकता. साथ ही, स्नैपशॉट लेते समय इसे बंद करना ज़रूरी है. VirtioFS को बंद करने के लिए, cvd create या cvd start को चलाते समय, आर्ग्युमेंट के तौर पर --enable_virtiofs=false पास करें.

स्नैपशॉट के लिए, सिर्फ़ 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 इंस्टेंस को बंद करना ज़रूरी है जिसका स्नैपशॉट लिया गया था. अगर इंस्टेंस पहले से ही बंद है, तो आपको कुछ करने की ज़रूरत नहीं है. साथ ही, स्नैपशॉट को वापस लाया जा सकता है.

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