উত্তর:
তিনটি জিনিস ঘটতে পারে:
তত্ত্বের পক্ষে এখন পর্যন্ত। এখন ব্যবহারিক পরীক্ষার জন্য।
আমি একটি ভিএম এ একটি তাজা উবুন্টু 12.10 ইনস্টল করেছি। (উইন 7-এক্স 64 এ ভিএমওয়্যার ওয়ার্কস্টেশন, ডিফল্ট বিকল্পগুলি এবং একটি 10 জিবি ভার্চুয়াল ডিস্ক ব্যবহার করে)।
ডিডি কমান্ডটি সাফল্যের সাথে সম্পন্ন হয়েছে এবং আমি একটি কার্যপ্রণালী যা বলেছি তা ফিরে পেয়েছিলাম। আমি নতুন কমান্ড লিখতে পারি, যদিও তারা সুস্পষ্ট কারণে ব্যর্থ হয়।
Segmentation fault
এবং আপনি দাবি করেছেন যে এটি সফলভাবে শেষ হয়েছে ...?
দাম স্ক্রিন লিনাক্স ব্যবহার করে ভার্চুয়াল মেশিনে একটি দ্রুত পরীক্ষা-নিরীক্ষার মাধ্যমে dd কমান্ডটি প্রত্যাশিতভাবে সম্পূর্ণ হয়েছে; প্রোগ্রামটি শুরুতে মেমোরিতে চালিত হওয়ার জন্য লোড করা হয় এবং প্রক্রিয়া চলাকালীন পুনরায় এক্সিকিউটেবলকে লোড করা খুব সামান্যই বোধগম্য হয়। শেষ পর্যন্ত, ডিডি প্রস্থান করে এবং 'ডিভাইসে কোনও স্থান অবশিষ্ট থাকবে না' এর প্রতিবেদন করবে।
এরপরে, অপারেটিং সিস্টেমটি প্রথম দর্শনে স্বাভাবিকভাবে কাজ করবে বলে মনে হয়, তবে প্রথম কমান্ডের পরে এটি স্থগিত হয়ে যায় যা স্পষ্ট কারণে এটি আর কার্যকর করতে পারে না এবং প্রতিক্রিয়াহীন হয়ে যায়। হার্ড ড্রাইভের সামগ্রীর একটি সংক্ষিপ্ত পরিদর্শন করে দেখায় যে পার্টিশনটি প্রকৃতপক্ষে শূন্য হয়েছে।
mmap
লিনাক্সের পৃষ্ঠা থেকে :
MAP_SHARED Share this mapping. Updates to the mapping are visible to other processes that map this file,
and are carried through to the underlying file. The file may not actually be updated until
msync(2) or munmap() is called.
MAP_PRIVATE
Create a private copy-on-write mapping. Updates to the mapping are not visible to other pro‐
cesses mapping the same file, and are not carried through to the underlying file. It is
unspecified whether changes made to the file after the mmap() call are visible in mapped
region.
এক্সিকিউটেবলগুলি mmap
ফাংশনটির অভ্যন্তরীণ কলের মাধ্যমে কার্নেল দ্বারা মেমরিতে ম্যাপ করা হয় । একটি MAP_PRIVATE
প্রকারের ম্যাপিংয়ের জন্য অনুরোধ করা হয়েছে ( fs/binfmt_elf.c
কার্নেল উত্স গাছের দিকে দেখুন)।
সুতরাং এটির আচরণে এটি উত্সাহিত হয় mmap
: ফাইলের পরিবর্তনগুলি, বা অন্তর্নিহিত ব্লক ডিভাইসে যেখানে ফাইলটি রেফারেন্স করা হয়েছে, সেগুলি ম্যাপিংয়ের পৃষ্ঠাগুলিতে ফিরে প্রচার করা হয়েছে যা ইতিমধ্যে পৃষ্ঠাযুক্ত এবং উপস্থিত রয়েছে।
সেই পৃষ্ঠাটি কার্নেলের আচরণের পরিবর্তে, এপিআই মানগুলির উপর ভিত্তি করে, তাই "অনির্দিষ্ট"। আসল আচরণটি হ'ল ফাইলটিতে পরিবর্তনগুলি ইতিমধ্যে উপস্থিত পৃষ্ঠায় ফিরে প্রচার করা হয় না। অবশ্যই, যদি প্রোগ্রামটি হঠাৎ এমন কোনও কোডের পৃষ্ঠায় ঝাঁপিয়ে যায় যা ইতিমধ্যে পৃষ্ঠায়িত করা হয়নি এবং মুছে ফেলা ইতিমধ্যে হয়ে গেছে, তবে এটি সমস্ত শূন্যের একটি পৃষ্ঠা পাবে।
তবে, সম্ভবত, dd
নিজেরাই মুছে ফেলার পরে, এটি এররেজ লুপটি চালিয়ে যাওয়ার জন্য কোডের সমস্ত পৃষ্ঠায় এটি পেজড হয়ে গেছে। লুপটি বন্ধ হয়ে যাওয়ার পরে এমন সম্ভাবনা রয়েছে যে এটি কোনও উপস্থিত পাতায় থাকা কিছু কোডকে হিট করতে পারে: যেমন, কোনও পৃষ্ঠার সীমানা জুড়ে একটি ফাংশন স্প্যান করুন, সুতরাং প্রত্যাবর্তনের নির্দেশে পৌঁছানোর জন্য একটি পৃষ্ঠা আনতে হবে।
তবে সেই পৃষ্ঠাটি পূর্বের অনুরোধ থেকেও ক্যাশে করা যেতে পারে dd
।
হ্যাঁ. অবশ্যই এটি আপনার বেশিরভাগ ফাইল সিস্টেমের জন্যও ব্যয় করতে পারে তবে সম্ভবত আপনি এটি ইতিমধ্যে জানেন ...
আমি সম্প্রতি একটি ভুল করেছি। আমি এসডি কার্ডের উপর একটি 2 গিগাবাইট আইএমজি ডিডি করার ইচ্ছা করেছিলাম, তবে ভুল করে এসডিএতে করেছিলাম dd if=rasberrypi.img of=/dev/sda
। আমার ভুল বুঝতে পেরে এবং ডিডি বাতিল করে দিয়েছিল, তবে ততক্ষণে M 600MB (disk 500GB ব্যবহৃত একটি ডিস্কে) লেখা হয়েছিল written পার্টিশন টেবিল নষ্ট হয়ে গেছে।
ডেস্কটপটি (10 গিগাবাইট মেমরি সহ এবং কয়েক সপ্তাহ ধরে) কয়েক ঘন্টা ধরে চলতে থাকে, যদিও কিছুই হয়নি। সম্প্রতি ক্রোমে সাধারণভাবে ব্রাউজ করা গুরুত্বপূর্ণ ফাইলগুলিকে ড্রপবক্সে পরিবর্তিত করার জন্য পরিচালিত। প্রকৃতপক্ষে আমি ডিডিটি এসডি কার্ডে চালাতে পারতাম কারণ আমি মূলত চেয়েছিলাম, ভাল কাজ করেছি।
কয়েক ঘন্টা পরে, আমার ফাইল সিস্টেমটি কেবল পঠন মোডে চলে যায় এবং এলোমেলো প্রোগ্রামগুলি মারা যেতে শুরু করে। আমি অন্যান্য অনেক সিস্টেমে ছিটকে পড়েছি, আমি এই অধিবেশনগুলি ব্যবহার চালিয়ে যেতে পারতাম, তবে নতুন সেশনটি ত্রুটি দিয়েছে যে এটি এসএস প্রোগ্রামটি খুঁজে পাচ্ছে না। এই সময়ে আমি ক্রোমে খোলা ট্যাবগুলি স্যুইচ করতে পারতাম, তবে ট্যাবগুলির বিষয়বস্তুগুলি "স্তব্ধ" হয়েছে বলে মনে হচ্ছে। আমি রিফ্রেশ করলে আমি চিরকালের জন্য সাদা পর্দা পাই get rsyslogd কোনও কারণে 100% সিপিইউ (1 কোর) নিচ্ছিল, সম্ভবত এটি বিভ্রান্ত হয়েছিল যে কেন এটি লগটিকে ডিস্কে ফ্লাশ করতে পারে না ... হতে পারে।
আমার ভিএলসিতে একটি 350 এমবি ভিডিও খোলা (এবং বিরতি দেওয়া) ছিল, আমি এখনও এটি প্লে করতে পারি এবং ভিডিওর কোনও অংশে এড়াতে পারি। সম্ভবত এটি সাম্প্রতিক ডাউনলোডের পর থেকে।
আমি জিইআইআই ব্যবহার করে সিস্টেমটি সাধারণত বন্ধ করে দিতে পারি, কোনও ত্রুটি নেই।
সুতরাং এটি আপনার প্রশ্নের সঠিক উত্তর দিতে পারে না, তবে যদি আপনি ডিস্কটির শুরু শুরু করেন তবে কি হবে তা বলে ..
ডিস্কের বেশিরভাগ জিনিসগুলি এখনও পুনরুদ্ধারযোগ্য হতে পারে তবে আমি পাত্তাই দিচ্ছি না যেহেতু (আশা করি) আমার যত্ন নেওয়া সমস্ত কিছুই ব্যাকআপ হয়ে গেছে।
সম্ভবত এটি সম্পূর্ণ হবে না, যেহেতু অন্য কোনও এক্সিকিউটিভ উপাদান অনুপস্থিত একটি ফাইলের জন্য অনুরোধ করবে এবং কার্নেলটিকে আতঙ্কিত করবে। আপনি যদি সত্যিই ডিস্কটি শূন্য করতে চান তবে একটি লাইভ সিডি ব্যবহার করুন; অন্যথায় আপনি ফলাফল গ্যারান্টি দিতে পারেন না।