প্রথমে কিছু কল্পকাহিনী দূর করা যাক।
এটি পারমাণবিক তাই অসঙ্গতি ঘটতে পারে না
একই ফাইল সিস্টেমের (যেমন rename) সিস্টেম কলের মধ্যে একটি ফাইল সরিয়ে নেওয়া সফ্টওয়্যার পরিবেশের ক্ষেত্রে পারমাণবিক। পারমাণবিকতার অর্থ ফাইলটির সন্ধানকারী যে কোনও প্রক্রিয়া তা পুরানো স্থানে বা তার নতুন স্থানে দেখতে পাবে; কোনও প্রক্রিয়া ফাইলটির আলাদা লিঙ্ক গণনা আছে বা ফাইলটি গন্তব্য ডিরেক্টরিতে উপস্থিত হওয়ার পরে উত্স ডিরেক্টরিতে উপস্থিত রয়েছে বা উত্সটিতে অনুপস্থিত থাকার পরে লক্ষ্য ডিরেক্টরি থেকে অনুপস্থিত রয়েছে তা পর্যবেক্ষণ করতে সক্ষম হবে না ডিরেক্টরি।
তবুও, যদি বাগ, ডিস্ক ত্রুটি বা বিদ্যুৎ হ্রাসের কারণে সিস্টেমটি ক্র্যাশ হয়ে যায়, তবে ফাইল সিস্টেমটি একটি সামঞ্জস্যপূর্ণ অবস্থায় রয়েছে কিনা তার কোনও গ্যারান্টি নেই, তবে চলুন যে পদক্ষেপটি অর্ধ-সম্পন্ন হয়নি। লিনাক্স সাধারণত হার্ডওয়্যার ইভেন্টের ক্ষেত্রে পারমাণবিকতার গ্যারান্টি দেয় না।
প্রথমে আপনি নতুন dir এ dir এন্ট্রিটি অনুলিপি করুন এবং তারপরে আগের dir এন্ট্রি মুছুন, যাতে আপনার কাছে দুবার একটি ফাইল রেফারেন্সের অসঙ্গতি থাকতে পারে তবে রেফ গণনাটি 1
এটি একটি নির্দিষ্ট বাস্তবায়ন কৌশল বোঝায়। অন্যরাও আছেন।
এটি লিনাক্সের ext2 (কার্নেল 3.16 হিসাবে) এই বিশেষ কৌশলটি ব্যবহার করে happens তবে, এটি বোঝায় না যে ডিস্কের সামগ্রীটি [পুরানো অবস্থান] sequ [উভয় অবস্থান] → [নতুন অবস্থান] অনুসারে চলেছে, কারণ দুটি ক্রিয়াকলাপ (নতুন এন্ট্রি যুক্ত করুন, পুরাতন এন্ট্রি সরান) হার্ডওয়্যার স্তরেও পারমাণবিক নয় : ফাইল সিস্টেমটিকে একটি অসামঞ্জস্য অবস্থায় রেখে, তার মধ্যে একটির বাধা দেওয়া সম্ভব। (আশা করি fsck এটি মেরামত করবে)) তদতিরিক্ত ব্লক স্তরটি পুনরায় অর্ডার করতে পারে লেখাগুলি, সুতরাং প্রথমার্ধটি ক্র্যাশের ঠিক আগে ডিস্কে প্রতিশ্রুতিবদ্ধ হতে পারে এবং দ্বিতীয়ার্ধটি তখন সম্পাদন করা হত না।
যতক্ষণ সিস্টেম ক্রাশ না হয় (উপরে দেখুন) ততক্ষণ রেফারেন্স গণনাটি 1 টির থেকে পৃথক হতে পারে না তবে এই গ্যারান্টিটি সিস্টেম ক্র্যাশ পর্যন্ত প্রসারিত হয় না।
এটি প্রথমে পয়েন্টারটি মুছে দেয় এবং তারপরে পয়েন্টারটি অনুলিপি করে যাতে অসঙ্গতিটি ফাইলটিতে রেফারেন্স 0 থাকে
আবার, এটি একটি নির্দিষ্ট বাস্তবায়ন কৌশল বোঝায়। সিস্টেমটি ক্র্যাশ না হলে একটি ঝোলা ফাইল পর্যবেক্ষণ করা যায় না, তবে এটি কোনও সিস্টেমের ক্রাশের সম্ভাব্য পরিণতি, কমপক্ষে কিছু কনফিগারেশনে in
আলেকজান্ডার লারসনের একটি ব্লগ পোস্ট অনুসারে , ext2 কোনও সিস্টেম ক্র্যাশের ক্ষেত্রে ধারাবাহিকতার কোনও গ্যারান্টি দেয় না, তবে ext3 data=orderedমোডে দেয়। (দ্রষ্টব্য যে এই ব্লগ পোস্টটি নিজের সম্পর্কে renameনয়, তবে কোনও ফাইলে লেখার এবং renameসেই ফাইলটিতে কল করার সংমিশ্রণ সম্পর্কে ))
Ext2, ext3 এবং ext4 ফাইল সিস্টেমের প্রধান লেখক থিওডোর সো'ও একই ইস্যুতে একটি ব্লগ পোস্ট লিখেছিলেন । এই ব্লগ পোস্টে পারমাণবিকতা (কেবলমাত্র সফ্টওয়্যার পরিবেশের সাথে সম্মানজনক) এবং স্থায়িত্ব (যা ক্র্যাশগুলির সাথে সম্মতিযুক্ত পারমাণবিকতা এবং প্রতিশ্রুতির গ্যারান্টি, অর্থাৎ অপারেশনটি সম্পন্ন হয়েছে তা জেনেও) আলোচনা করে। দুর্ভাগ্যক্রমে আমি একাই ক্র্যাশ করার বিষয়ে পারমাণবিকতার তথ্য খুঁজে পাই না। যাইহোক, ext4 এর জন্য দেওয়া স্থায়িত্ব গ্যারান্টির জন্য এটি renameঅবশ্যই পারমাণবিক। Ext4- র জন্য কার্নেল ডকুমেন্টেশন সূচিত করে যে auto_da_allocবিকল্পটি সহ ext4 (যা আধুনিক কার্নেলগুলির মধ্যে পূর্বনির্ধারিত), পাশাপাশি ext4, একটি writeঅনুসরণ করার জন্য একটি স্থায়িত্ব গ্যারান্টি সরবরাহ করেrename, যা বোঝায় যে renameহার্ডওয়্যার ক্র্যাশগুলির ক্ষেত্রে এটি পারমাণবিক।
Btrfs জন্য, একটি renameএকটি বিদ্যমান ফাইল মুছে ফেলা হয় ক্র্যাশ থেকে সম্মান সঙ্গে পারমাণবিক হতে নিশ্চিত করা হয়, কিন্তু একটি renameকরে একটি ফাইলটি প্রতিস্থাপন না তন্ন তন্ন ফাইল বা বিদ্যমান উভয় ফাইল হতে পারে।
সংক্ষেপে বলা যায়, আপনার প্রশ্নের উত্তর যে না শুধুমাত্র একটি ফাইল চলন্ত দ্বারা ext2 উপর ক্র্যাশ থেকে সম্মান সঙ্গে পারমাণবিক নয়, কিন্তু এটা এমনকি একটি সামঞ্জস্যপূর্ণ রাজ্যের ফাইল ত্যাগ করার নিশ্চিত করা হয় না (যদিও ব্যর্থতা যে fsckকরতে পারবেন মেরামতি বিরল) - সুন্দর কিছুই কিছুই না, তাই ভাল ফাইল সিস্টেম উদ্ভাবিত হয়েছে। Ext3, ext4 এবং btrfs সীমিত গ্যারান্টি সরবরাহ করে।
renameপারমাণবিক, তবে বিটিআরএফএস উইকি অনুসারে হয় না (আমার উত্তর দেখুন)। জার্নাল ছাড়া পারমাণবিকতার গ্যারান্টি দেওয়াও সম্ভব (লিনাক্সের উদাহরণগুলি আমি জানি না তবে কিছু থাকতে পারে)। আপনার এক্সট 2 সম্পর্কে নির্ভরযোগ্য তথ্য আছে?