লিনাক্সে কোনও প্রক্রিয়া কীভাবে তার মেমরিটিকে ডিস্কে সঞ্চয় করে এবং পরে এটি পুনরুদ্ধার করে "হাইবারনেট" করা যায়?


101

লিনাক্সে কোনও প্রক্রিয়া 'হাইবারনেট' করা কি সম্ভব? ল্যাপটপে 'হাইবারনেট' ঠিক তেমনই আমি ডিস্কে কোনও প্রক্রিয়া দ্বারা ব্যবহৃত সমস্ত স্মৃতি র‌্যাম মুক্ত করে লিখতে চাই। এবং তারপরে, আমি 'প্রক্রিয়াটি আবার শুরু করতে' পারি, অর্থাত, মেমরি থেকে সমস্ত ডেটা পড়ে এবং এটি আবার র‍্যামে রেখে দিতে পারি এবং আমি আমার প্রক্রিয়াটি চালিয়ে যেতে পারি?


8
আকর্ষণীয় প্রশ্ন: ডি
ডাঙ্গারস্ট্যাট

আপনি যা বর্ণনা করেন তা আসলে প্রায়শই 'চেকপয়েন্টিং' হিসাবে অভিহিত হয়, আপনি সেই শব্দটির সাথে আরও ভাল ভাগ্য অনুসন্ধান করতে পারেন।
টিম পোস্ট

এটি অবশ্যই হওয়া উচিত ood ভাল বৈশিষ্ট্য। হাইবারনেট বনাম কাছাকাছি।
ভিটালি ফাদেভ

উত্তর:


54

আমি ক্রিওপিড রক্ষণাবেক্ষণ করতাম , এটি এমন একটি প্রোগ্রাম যা আপনি যা বলছেন ঠিক তা করে। এটি একটি প্রোগ্রামের ঠিকানা স্থানের বিষয়বস্তু, ভিডিএসও, ফাইল বর্ণনাকারী রেফারেন্স লিখে একটি ফাইলকে লিখে দেয় যা পরে পুনর্গঠন করা যায়। ক্রিওপিড শুরু হয়েছিল যখন লিনাক্সে নিজেই ব্যবহারযোগ্য হুক ছিল না এবং ব্যবহারকারী স্থান থেকে সম্পূর্ণ কাজ করেছিল (আসলে এটি আপনার ডিস্ট্রো / কার্নেল / সুরক্ষা সেটিংসের উপর নির্ভর করে কাজ করে)।

সমস্যাগুলি ছিল (প্রকৃতপক্ষে) সকেট, আরটি সিগন্যাল মুলতুবি, অসংখ্য এক্স 11 ইস্যু, গ্লিবসি ক্যাচিং গেটপিড () বাস্তবায়ন অন্যান্য অনেকের মধ্যে। বার্নার্ড এর থেকে দূরে সরে যাওয়ার পরে এলোমেলোকরণ (বিশেষত ভিডিএসও) আমাদের মধ্যে কাজ করা কয়েকজনের পক্ষে তা দুর্গম হতে পারে। তবে এটি মজাদার ছিল এবং বেশ কয়েকটি মাস্টার্স থিসিসের বিষয় হয়ে উঠেছে।

আপনি যদি কেবল এমন কোনও প্রোগ্রামের কথা চিন্তা করছেন যা এটির চলমান অবস্থা সংরক্ষণ করতে পারে এবং সরাসরি সেই রাজ্যে পুনরায় শুরু করতে পারে তবে এর সুদূর .. অনেকটা .. প্রোগ্রামের মধ্যে থেকে কেবল সেই তথ্যটি সংরক্ষণ করা সহজ, সম্ভবত কোনও সংকেত পরিবেশন করার সময়।


5
জুলাই ২০১৪ পর্যন্ত, দুর্ভাগ্যক্রমে, ক্রিওপিড আর মেন্টেনড নয় এবং সাম্প্রতিক কার্নেলগুলিতে চালিত হয় না। তবে এরই মধ্যে নতুন প্রকল্পগুলির জন্ম হয় (টিসিপি সংযোগ "হাইবারনেশন" তেও কিছু পদক্ষেপ নেওয়া হয়েছে)। আমি আপডেট করা তথ্য সহ নীচে একটি উত্তর রেখেছি । এটা দেখ! ;)
দপ্পিও

4
@ ডাপ্পিউ এটি দুর্দান্ত - তবে ক্রিওপিড এই উত্তরের একটি উদাহরণ মাত্র এটি উদাহরণস্বরূপ ছিল যে এটি কীভাবে জটিল হতে পারে, যেখানে আমি প্রস্তাব দিয়েছিলাম যে তারা প্রোগ্রামের মধ্যেই রাষ্ট্রকে রক্ষা করতে পরিচালিত করবে, যাতে সহজেই আবার শুরু করা যায়। ক্রিওপিড স্থির হয়ে উত্তর কম প্রাসঙ্গিক করে তোলে না।
টিম পোস্ট

: Cryopid2 আরো সম্প্রতি সক্রিয় (2013) হয় sourceforge.net/projects/cryopid2
Leopd

32

২০১৪ সালের মতো আমি এখানে একটি স্থিতি আপডেট রাখতে চাই।

গৃহীত উত্তর ক্রিওপিডকে চেকপয়েন্ট / পুনরুদ্ধার সম্পাদন করার সরঞ্জাম হিসাবে পরামর্শ দেয় তবে আমি প্রকল্পটি নিরবচ্ছিন্ন এবং সাম্প্রতিক কার্নেলের সাথে সংকলন করা অসম্ভব বলে মনে করেছি। এখন, আমি দুটি সক্রিয়ভাবে মন্ত্রযুক্ত প্রকল্প পেয়েছি যা অ্যাপ্লিকেশন চেকপয়েন্টের বৈশিষ্ট্য সরবরাহ করে।

প্রথমটি, আমি যার প্রস্তাব দিয়েছি 'এটির জন্য আমার ভাগ্য ভাল হওয়ার কারণ হ'ল সিআরআইইউ যা মূলত ব্যবহারকারী স্পেসে চেকপয়েন্টটি পুনরুদ্ধার করে / পুনরুদ্ধার করে, এবং কাজ করার জন্য সক্ষম কর্নেল বিকল্প CONFIG_CHECKPOINT_RESTORE প্রয়োজন।

চেকপয়েন্ট / ইউজারস্পেসে পুনরুদ্ধার করুন, বা সিআরআইইউ (উচ্চারিত ক্রি-oo, আইপিএ: / krɪʊ /, রাশিয়ান: криу), লিনাক্স অপারেটিং সিস্টেমের জন্য একটি সফ্টওয়্যার সরঞ্জাম। এই সরঞ্জামটি ব্যবহার করে, আপনি একটি চলমান অ্যাপ্লিকেশন (বা এর অংশ) হিমশীতল করতে এবং ফাইলের সংগ্রহ হিসাবে এটি হার্ড ড্রাইভে চেকপয়েন্টে রাখতে পারেন। তারপরে আপনি অ্যাপ্লিকেশনটি হিমশীতল হওয়া থেকে পুনরুদ্ধার করতে এবং চালানোর জন্য ফাইলগুলি ব্যবহার করতে পারেন। সিআরআইইউ প্রকল্পের স্বতন্ত্র বৈশিষ্ট্যটি হ'ল এটি মূলত ব্যবহারকারীর জায়গায় প্রয়োগ করা হয়।

পরেরটি ডিএমটিসিপি ; তাদের প্রধান পৃষ্ঠা থেকে উদ্ধৃতি:

ডিএমটিসিপি (ডিস্ট্রিবিউটড মাল্টিথ্রেডড চেকপয়েন্টিং) হল একাধিক যুগপত অ্যাপ্লিকেশনগুলির অবস্থা, স্বতন্ত্রভাবে মাল্টি-থ্রেডেড এবং বিতরণ অ্যাপ্লিকেশনগুলির সাথে চেকপয়েন্ট করার একটি সরঞ্জাম। এটি কোনও লিনাক্স কার্নেল মডিউল বা অন্যান্য কার্নেল পরিবর্তন ছাড়াই সরাসরি ব্যবহারকারী বাইনারি কার্যকর করতে সক্ষম হয়।

যুক্তিটিতে একটি দুর্দান্ত উইকিপিডিয়া পৃষ্ঠাও রয়েছে: অ্যাপ্লিকেশন_চেকপয়েন্টিং


21

উল্লিখিত উত্তরগুলি ctrl-zসত্যই এই ক্ষেত্রে একটি সংকেত দিয়ে প্রক্রিয়াটি বন্ধ করার বিষয়ে কথা বলছে SIGTSTP। আপনি এটির সাথে একটি স্টপ সিগন্যাল জারি করতে পারেন kill:

kill -STOP <pid>

এটি প্রক্রিয়া সম্পাদন স্থগিত করবে। এটি তত্ক্ষণাত এটির দ্বারা ব্যবহৃত স্মৃতি মুক্ত করবে না, তবে অন্যান্য প্রক্রিয়াগুলির জন্য মেমরির প্রয়োজনীয়তা হিসাবে বন্ধ হওয়া প্রক্রিয়া দ্বারা ব্যবহৃত মেমরিটি ধীরে ধীরে বদলে যাবে।

আপনি যখন এটি আবার জাগাতে চান, ব্যবহার করুন

kill -CONT <pid>

ক্রিওপিডের মতো আরও জটিল সমাধানগুলি কেবল তখনই প্রয়োজন হয় যদি আপনি চান যে থামানো প্রক্রিয়া কোনও সিস্টেম শাটডাউন / পুনঃসূচনাটি টিকে থাকতে সক্ষম হয় - এটি আপনার প্রয়োজনের মতো শোনাচ্ছে না।


14

সমস্যাটি স্ট্রিমগুলি - ফাইল এবং সকেটগুলিকে পুনঃস্থাপন করছে - যা প্রোগ্রামটি খোলে।

যখন আপনার পুরো ওএস হাইবারনেট হয়, স্থানীয় ফাইলগুলি এবং এ জাতীয় স্পষ্টতই পুনরুদ্ধার করা যায়। নেটওয়ার্ক সংযোগগুলি হয় না, তবে তারপরে ইন্টারনেটে অ্যাক্সেস করা কোডটি সাধারণত আরও ত্রুটি পরীক্ষা করা এবং এ জাতীয় ত্রুটি শর্ত থেকে বেঁচে থাকে (বা হওয়া উচিত)।

আপনি যদি প্রতি-প্রোগ্রাম হাইবারনেশন করেন (অ্যাপ্লিকেশন সমর্থন ছাড়াই), আপনি কীভাবে খোলা ফাইলগুলি পরিচালনা করবেন? যদি অন্য কোনও প্রক্রিয়া অন্তর্বর্তী সময়ে সেই ফাইলগুলিতে অ্যাক্সেস করে? ইত্যাদি?

প্রোগ্রামটি লোড না করা অবস্থায় রাষ্ট্র বজায় রাখা কঠিন হতে চলেছে।

কেবল থ্রেডগুলিকে স্থগিত করা এবং এটিকে ডিস্কে সরিয়ে দেওয়া দেওয়া কী একই প্রভাব ফেলবে?

বা ভার্চুয়াল মেশিনে প্রোগ্রামটি চালনা করুন এবং ভিএম হ্যান্ডেল স্থগিত করুন।


13

লিনাক্স কার্নেল এখন আংশিকভাবে চেকপয়েন্ট / রিস্টার্ট ফিউচারগুলি বাস্তবায়ন করেছে: https://ckpt.wiki.kernel.org/ , স্থিতিটি এখানে

কিছু দরকারী তথ্য lwn (লিনাক্স সাপ্তাহিক নেট): http://lwn.net/Articles/375855/ http://lwn.net/Articles/412749/ ...... এ রয়েছে

তাই উত্তর হবে হ্যাঁ"


4
ইউজারস্পেস প্রোগ্রামকে ব্ল্যাকার বলা হয়।
বেহরোজ

12

সংক্ষিপ্ত উত্তর "হ্যাঁ, তবে সবসময় নির্ভরযোগ্যভাবে হয় না"। ক্রিওপিড পরীক্ষা করে দেখুন:

http://cryopid.berlios.de/

খোলা ফাইলগুলি প্রকৃতপক্ষে সবচেয়ে সাধারণ সমস্যা হবে। ক্রিওপিড স্পষ্টভাবে বলে:

খোলা ফাইল এবং অফসেটগুলি পুনরুদ্ধার করা হয়েছে। অস্থায়ী ফাইলগুলি যা আনলিঙ্ক করা হয়েছে এবং ফাইল সিস্টেমে অ্যাক্সেসযোগ্য নয় সেগুলি সর্বদা চিত্রে সংরক্ষণ করা হয়। পুনরায় শুরুতে উপস্থিত না থাকা অন্যান্য ফাইলগুলি পুনরুদ্ধার করা হয়নি। এই জাতীয় পরিস্থিতিতে ফাইলের বিষয়বস্তু সংরক্ষণের জন্য সমর্থন পরিকল্পনা করা হয়েছে।

একই সমস্যাগুলি টিসিপি সংযোগগুলিতেও প্রভাব ফেলবে, যদিও ক্রিওপিড সংযোগ পুনরায় শুরু করার জন্য tcpcp সমর্থন করে।


4
সাবমিট বাটনটি আঘাত করার পরে আমি এখন বুঝতে পারি এটি ক্রিওপিডের জন্য অনেক স্প্যাম / বিজ্ঞাপনের মতো পড়ে। এটি নয় - আমি কেবল ইউটিলিটির একটি সন্তুষ্ট ব্যবহারকারী।
মন্টিনিগ্রো

6

সংক্ষিপ্ত উত্তর হল হ্যাঁ." আপনি কিছু ধারণার জন্য এটি দেখে শুরু করতে পারেন: একটি মূল চিত্র থেকে ELF এক্সিকিউটেবল পুনর্গঠন ( http://vx.netlux.org/lib/vsc03.html )


4
আকর্ষণীয় লিঙ্ক; তবে লিঙ্কটি উল্লেখ করে যে এটি নির্ভরযোগ্যভাবে কাজ করে না
উইল

6

আমি ক্রেওপিডকে ক্রোপিড 2 নামে একটি প্যাকেজ উত্পাদন করতে প্রসারিত করেছি সোর্সফর্স থেকে উপলব্ধ। এটি কোনও প্রক্রিয়া স্থানান্তর করতে পাশাপাশি হাইবারনেট করতে পারে (কোনও উন্মুক্ত ফাইল এবং সকেট সহ - সকেট / পাইপগুলিতে থাকা ডেটা হাইবারনেশনের প্রক্রিয়াতে চুষে ফেলা হয় এবং প্রক্রিয়া পুনরায় শুরু হওয়ার পরে এগুলিতে ফিরে আসে)।

আমি এই প্রকল্পে সক্রিয় না হওয়ার কারণটি হ'ল আমি কার্নেল বিকাশকারী নই - এই (এবং / অথবা মূল ক্রিওপিড) উভয়কেই বোর্ডে এমন কাউকে পাওয়া দরকার যারা এগুলি সর্বশেষতম কার্নেলের সাথে চালিত করতে পারে (যেমন লিনাক্স 3.x) ।

ক্রিওপিড পদ্ধতিটি কাজ করে - এবং সম্ভবত লিনাক্সের সাধারণ উদ্দেশ্য প্রক্রিয়া হাইবারনেশন / মাইগ্রেশনটির সর্বোত্তম সমাধান।


3

অন্যরা যেমন উল্লেখ করেছে, ওএসের পক্ষে এই কার্যকারিতা সরবরাহ করা কঠিন, কারণ ভাঙা স্ট্রিমগুলি পরিচালনা করতে অ্যাপ্লিকেশনটির বিল্ট ইন পরীক্ষা করতে কিছু ত্রুটি থাকা দরকার।

তবে, একটি পাশের নোটে, কিছু প্রোগ্রামিং ভাষা এবং সরঞ্জামগুলি যা ভার্চুয়াল মেশিনগুলি ব্যবহার করে স্পষ্টভাবে এই কার্যকারিতা সমর্থন করে, যেমন স্ব প্রোগ্রামিং ভাষা


0

Ctrl-Z প্রক্রিয়াটির পৃষ্ঠাগুলি অদলবদল হওয়ার সম্ভাবনা বাড়িয়ে দেয়, তবে এটি প্রক্রিয়াটির সংস্থানগুলি পুরোপুরি মুক্ত করে না। কোনও প্রক্রিয়ার সংস্থান সম্পূর্ণরূপে মুক্ত করার সমস্যা হ'ল ফাইল হ্যান্ডলগুলি, সকেটগুলির মতো প্রক্রিয়াটি প্রক্রিয়াটি ব্যবহার করতে পারা কার্নাল সংস্থান, তবে কীভাবে নিজের নিজের উপর অবিচল থাকতে হয় তা জানে না। সুতরাং Ctrl-Z এটি হিসাবে হিসাবে ভাল হয়।


0

লিনাক্সের জন্য ২.২ এবং ২.৪ দিনের মধ্যে চেকপয়েন্ট / পুনরুদ্ধার নিয়ে কিছু গবেষণা হয়েছিল, তবে এটি এটিকে আগের প্রোটোটাইপ হিসাবে তৈরি করে নি। এটি সম্ভব (অন্যান্য উত্তরে বর্ণিত ক্যাভ্যাটস সহ) সম্ভাব্য কয়েকটি মূল্যবোধের জন্য - এটি করার জন্য আপনি একটি কার্নেল মডিউল লিখতে পারেন, এটি সম্ভব। তবে সম্ভাব্যতার সাধারণ মানের জন্য (আমি কি এটি বাণিজ্যিক লিনাক্স বিতরণের শেল থেকে করতে পারি), এটি এখনও সম্ভব নয়।


0

এটি ক্লাস্টার্ড অপারেটিং সিস্টেমের চূড়ান্ত লক্ষ্য অনুসারে। ম্যাথিউ ডিলন তার ড্রাগনফ্লাই বিএসডি প্রকল্পে এরকম কিছু বাস্তবায়নের জন্য প্রচুর প্রচেষ্টা করে ।


ড্রাগনফ্লাই বিএসডি-তে এই বৈশিষ্ট্যটি কি পুরোপুরি প্রয়োগ করা হয়েছে?
অর্জুন জে রাও

0

আরেকটি কার্যকারিতা যুক্ত করা: আপনি ভার্চুয়ালবক্স ব্যবহার করতে পারেন। আপনার অ্যাপ্লিকেশনগুলি একটি নিয়মিত ভার্চুয়াল মেশিনে চালান এবং যখনই আপনি চান "মেশিনের অবস্থা সংরক্ষণ করুন"। আমি জানি এটি কোনও উত্তর নয়, তবে আমি ভেবেছিলাম যখন কোনও সত্যিকারের বিকল্প নেই তখন এটি কার্যকর হতে পারে।

যদি কোনও কারণে আপনি ভার্চুয়ালবক্স পছন্দ করেন না, ভিএমওয়্যার এবং কিমু তত ভাল।


-2

আছে ctrl+zলিনাক্সে, কিন্তু আমি নই নিশ্চিত করুন যে এটি আপনার নির্দিষ্ট করা অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে উপলব্ধ করা হয়। আমি সন্দেহ করি যেহেতু আপনি এই প্রশ্নটি জিজ্ঞাসা করেছেন তাই না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.