ভার্চুয়াল মেশিন স্ন্যাপশট রোলব্যাক: কোনটি ফেরে আর কোনটি ফেরে না
একটি ভিএম স্ন্যাপশট গেস্ট ডিস্ক ও মেমরির অবস্থা ফিরিয়ে আনে, কিন্তু দূরবর্তী অ্যাকাউন্টের কাজ, শেয়ার করা ফাইলের কপি বা অন্যত্র রাখা রেকর্ড নয়: আগে রোলব্যাকের পরিধি ঠিক করুন।
চেকপয়েন্ট গেস্টের একাংশ ফিরিয়ে আনে আর বাকি প্রতিটি সিস্টেমকে যেখানে ছিল সেখানেই রাখে। গেস্ট থেকে যা বেরিয়ে গেছে — পৌঁছে দেওয়া বার্তা, হোস্টে কপি করা ফাইল, কোনো ওয়েবসাইটের গ্রহণ করা অ্যাকাউন্ট-কাজ — তা যে সিস্টেম গ্রহণ করেছে তার, চেকপয়েন্টের নয়। রোলব্যাকের একটি নির্দিষ্ট স্থানীয় পরিধি আছে, আর এটিকে মুছে ফেলা বলা মানে পুনরুদ্ধার পরিকল্পনাকে মিথ্যা বিবৃতিতে পরিণত করা। নিচের সারণিটি হলো একটি রিস্টোর আসলে কোথায় পৌঁছায় তার চেকলিস্ট।
ডেস্কটপ ফিরে আসে, দূরবর্তী সেশন আসে না
সাধারণ অভিযোগ আসে ঘটনার পরে। ভার্চুয়াল মেশিন গত সপ্তাহের অবস্থায় বুট হয়, ব্রাউজারের ইতিহাস মুছে যায়, আর ব্যবহারকারী যে সেবায় সাইন ইন করেছিলেন তা সেশনটিকে এখনও সক্রিয় হিসেবে দেখায়। কিছুই ভাঙেনি; দুটি সিস্টেম কখনও একই লেনদেনে ছিল না।
| Where the effect landed | Who owns undoing it | How you verify it is gone |
|---|---|---|
| Guest virtual disk | The hypervisor, through the checkpoint you restore | The disk state matches the checkpoint's timestamp |
| Guest memory | Only a checkpoint type that saved memory | The guest resumes or cold-boots, as that type dictates |
| Host share or clipboard | The owner of that host path | The copied file is absent at its destination |
| Remote account or session | The service that accepted the action | The session list shows nothing active for that account |
| Mail or message queue | The mail system that delivered it | The message is gone from the recipient's mailbox, not from the guest |
এই অমিলই শিক্ষা। চেকপয়েন্ট তা পুনরুদ্ধার করে যা হাইপারভাইজার ট্র্যাক করে: গেস্টের ভার্চুয়াল হার্ডওয়্যার এবং ধরন অনুযায়ী তার মেমরি। এটি কোনো ওয়েব অ্যাপ্লিকেশনের সেশন টেবিল, মেইল সার্ভারের ডেলিভারি সারি বা সহকর্মীর ডাউনলোড ফোল্ডার ট্র্যাক করে না। রিস্টোরের আগে ধরনটি পড়ুন, কারণ ধরনই ঠিক করে একটি রিস্টোর আদৌ কী ফিরিয়ে আনতে পারে।
হাইপারভাইজার আসলে কী সংরক্ষণ করেছিল
Microsoft-এর Hyper-V ডকুমেন্টেশন স্ট্যান্ডার্ড চেকপয়েন্ট, যা ভার্চুয়াল ডিস্কের সঙ্গে মেমরিও ধরে, আর প্রোডাকশন চেকপয়েন্ট, যা ডেটা-সঙ্গতিপূর্ণ পদ্ধতি ব্যবহার করে মেমরি এড়িয়ে যায়, এই দুটিকে আলাদা করে। স্ট্যান্ডার্ড চেকপয়েন্ট গেস্ট যে নির্দেশটি চালাচ্ছিল সেখান থেকেই আবার শুরু হয়; প্রোডাকশন চেকপয়েন্ট বরং একটি সঙ্গতিপূর্ণ ডিস্ক থেকে বুট হয়। এই পার্থক্যই ঠিক করে রিস্টোর একটি চলমান প্রসেস ফেরাবে না একটি পরিচ্ছন্ন শুরু। এক হাইপারভাইজারের আচরণ অন্যটিতে নেবেন না, কারণ পণ্যভেদে পরিভাষা ও সঙ্গতি-পদ্ধতি বদলে যায়।
Microsoft আরও সতর্ক করে যে চেকপয়েন্ট ব্যাকআপ নয়, আর সেই সতর্কতা গুরুত্বপূর্ণ। একটি ভলিউমে চেকপয়েন্টের শৃঙ্খল সেই ভলিউমের ভাগ্য ভাগ করে, তাই এটি খারাপ পরিবর্তন থেকে রক্ষা করে, হারানো হোস্ট থেকে নয়।
গেস্ট ডিস্কের বাইরে যে ফাইলগুলো থাকে
শেয়ার করা ফোল্ডার হলো গেস্টকে দেখানো হোস্টের ফাইলসিস্টেম, আর গেস্ট ফিরিয়ে নিলে তা ফেরে না। ব্যবহারকারী যদি গেস্টের ভিতরে ফাইল ডাউনলোড করে শেয়ার পথে বাইরে কপি করেন, সেই দ্বিতীয় কপির নিজের জীবনচক্র ও নিজের মালিক আছে। গেস্ট রিস্টোর করলে প্রথম কপিটি সরে যায় আর দ্বিতীয়টি ঠিক যেখানে রাখা হয়েছিল সেখানেই থাকে।
রোলব্যাকের প্রতিশ্রুতি দেওয়ার আগে জিজ্ঞেস করুন প্রতিটি পথের মালিক কে। হোস্ট শেয়ার, ক্লিপবোর্ড স্থানান্তর আর ক্লাউড ড্রাইভে আপলোড — এই তিনটি গন্তব্য, আর কেবল প্রথমটিই হাইপারভাইজারের স্টোরেজের পাশে থাকতে পারে।
যেখানে কোনো কপি সত্যিই সরাতে হবে, তা তার গন্তব্যেই সরান আর সেই ধাপটি আলাদা করে লিখে রাখুন। যে পুনরুদ্ধার পরিকল্পনায় কেবল স্ন্যাপশটের নাম আছে তা এমনভাবে অসম্পূর্ণ যা কপিটি খুঁজে পাওয়ার আগে কেউ টের পায় না। একই সতর্কতা প্রযোজ্য হোস্ট গেস্ট চলাকালীন লেখা লগগুলোর ক্ষেত্রেও।
হাইপারভাইজার যে অ্যাকাউন্ট কখনও দেখেনি
কোনো সেবা গেস্টের কাছ থেকে যা গ্রহণ করেছে তা সেবার রেকর্ড, গেস্টের নয়। হাইপারভাইজার সেই লেনদেন কখনও দেখেনি, তাই তা উল্টে দিতে পারে না। পাসওয়ার্ড পরিবর্তন, কেনাকাটা, পোস্ট করা বার্তা আর API কল — সবই যে সিস্টেম প্রক্রিয়া করেছে সেখানেই থাকে। ডিস্ক ইমেজ রিস্টোর করলে সেই সিস্টেমে পৌঁছায় না।
ব্রাউজার অবস্থা অমিলটিকে বাস্তব করে তোলে। রিস্টোর করা গেস্ট এমন কোনো সেবার পুরোনো কুকি রাখতে পারে যা এর মধ্যে সেশনটি বদলে ফেলেছে, তাই ব্যবহারকারী সাইন ইন করা দেখায় অথচ নীরবে প্রত্যাখ্যাত হন, বা সাইন আউট দেখায় অথচ সেবা সেশনটিকে এখনও বৈধ মনে করে। সেবার কাছে সেশনটি প্রত্যাহার করাই একমাত্র কাজ যা তা শেষ করে।
রিস্টোর যা ফেরাতে পারে না
চেকপয়েন্ট কাজে লাগে অনুমোদিত পরীক্ষায় বা এমন কনফিগারেশন পরীক্ষায় যার পরিধি বোঝা যায়। এটি স্থানীয় অবস্থার জন্য স্থানীয় আনডু, যা শোনার চেয়ে সংকীর্ণ প্রতিশ্রুতি, আর এটি প্রমাণ নয় যে হোস্ট, হাইপারভাইজার বা কোনো বাহ্যিক সিস্টেম নির্মল থেকেছে। VPN প্যাকেট কোন পথে যায় তা বদলায়; গেস্টের ভিতরের সফটওয়্যারকে চালানোর জন্য নিরাপদ কিছুতে বদলায় না। দুটি দাবি আলাদা এবং তার একটিই টানেল নিয়ে।
$cp = Get-VMSnapshot -VMName lab-desktop -Name baseline
Get-VMHardDiskDrive -VMSnapshot $cp | Select-Object ControllerType, ControllerNumber, ControllerLocation, Path
প্রথম লাইন চেকপয়েন্টকে একটি অবজেক্টে পরিণত করে, আর দ্বিতীয়টি এটি যে ডিস্কগুলো ঢাকে তা তালিকাভুক্ত করে, যা পরিধির প্রশ্নের উত্তর দেয় স্মৃতি নয়, প্রমাণ দিয়ে। যে সেবার মালিকানা, সেখানেই প্রকাশিত গোপন তথ্য ঘোরান ও প্রত্যাহার করুন। পরিচিত ক্ষতিকর কোড জড়িত থাকলে অনুমোদিত তদন্ত পরিবেশ ও সংস্থার সাড়াদান প্রক্রিয়া ব্যবহার করুন, স্ন্যাপশট চালানোকে নিরাপদ ধরে নেওয়ার বদলে।
রিস্টোরের আগে তিনটি বিষয় লিখুন: কোন গেস্ট অবস্থা ফিরিয়ে নিচ্ছেন, কোন বাইরের সিস্টেম এখনও প্রভাবটি ধরে আছে, আর এরপর কোন বিন্দুকে ভরসা করবেন। সেই পরিকল্পনা আবার পরিচিত দেখানো একটি মেশিনের চেয়ে শক্তিশালী দাবি। টিকিটের সঙ্গে এটি রাখুন যাতে পরের রিস্টোর একই তালিকা থেকে শুরু হয়।