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

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

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

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

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

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