ফাইল সিস্টেমের লেখাগুলি কতক্ষণ এক্সট 4 দিয়ে ক্যাশে যাবে?


14

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

সমস্যাগুলি এমন কোনও প্যাচে স্থির করা হয়েছে যা নির্দিষ্ট পরিস্থিতিতে বরাদ্দকে আটকে রাখে, ফলে ডিফল্টরূপে সর্বাধিক 5 সেকেন্ড পরে ডেটা ডিস্কে চাপিয়ে দেয়।

আমি ভাবছি যখন কোনও অ্যাপ্লিকেশন কোনও ফাইলের বিদ্যমান অংশগুলিকে ওভাররাইট করে, নিজেই ফাইল কেটে ফেলা বা সংযোজন না করে। এটি কি 5 সেকেন্ডের মধ্যেও ডিস্কে বাধ্য হবে?

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

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

আপডেট: আমি জানি যে সঠিক কাজটি করার সময়, এটি fsync () ব্যবহার করার পরে এই সমস্ত অপ্রাসঙ্গিক। (এটি এক্সট 4 এবং ডেটা হ্রাস সম্পর্কে সমস্ত আলোচনার মূল কারণ ছিল - সমস্যাটি কেবলমাত্র সম্পর্কিত অ্যাপ্লিকেশনগুলি fsync () নয়, সঠিক মুহুর্তে নয়)) আমি নিজের আবেদনটি লিখছি না, আমি জিজ্ঞাসা করছি কারণ আমার সমস্ত অ্যাপ্লিকেশন সঠিকভাবে কাজ করে কিনা তা জানি না এবং আমি এই জাতীয় "বিপজ্জনক" লেখার জন্য একটি আনুমানিক সময়সীমা জানতে চাই। জিজ্ঞাসা করার কারণটি হ'ল আমার গ্রাফিক্স ড্রাইভার নিয়মিত কার্নেল প্যানিকগুলি সৃষ্টি করে এবং আমি জানতে চাই যে আমাকে গত 5 সেকেন্ডের ডেটা লেখার চেয়ে বেশি চিন্তা করতে হবে কিনা।

উত্তর:


16

আপনি কমিটের ব্যবধানটি একটি কাস্টম মানেরতে সেট করতে পারেন যা আমি বিশ্বাস করি যা 32-বিট স্বাক্ষরযুক্ত পূর্ণসংখ্যার সেকেন্ডের চেয়ে বেশি হতে পারে; সুতরাং প্রায় 4 বিলিয়ন সেকেন্ড, বা 136 বছর। এটি commitমাউন্ট বিকল্পের মাধ্যমে পাওয়া যায় , যা আপনি নিম্নলিখিত হিসাবে কার্যকর করতে পারেন (এটি নিছক একটি উদাহরণ; আপনি এটি সেটও করতে পারেন fstab):

mount /dev/sda1 -t ext4 -o rw,data=writeback,nobh,commit=12345678

প্রতিশ্রুতি ব্যবধান কোনও ধরণের শর্তের উপর ভিত্তি করে নয় যেমন ডেটা যুক্ত করা হয় বা বিদ্যমান ডেটা ওভাররাইট করা হয় বা যাই হোক না কেন। commitবিকল্প মাউন্ট (যা 5 সেকেন্ড ডিফল্ট যদি আপনি সেই সমস্ত বিকল্প মাউন্ট সরবরাহ করবেন না) একটি ব্যাশ শেল মধ্যে ভালো কিছু করছেন সমতূল্য:

#!/bin/bash
while :
do
    echo "Syncing all uncommitted data and journal to disk"
    sync
    sleep 5
done

বিভ্রান্ত করবেন না data=orderedএবং এই গ্লোবাল ফাইল সিস্টেমের সিঙ্ক ব্যবধান ("কমিট ইন্টারভাল" আমাদের মধ্যে যারা কমান্ড লাইন প্রোগ্রামের কার্যকারিতা বোঝেন তাদের পক্ষে সম্ভবত একটি কম অর্থবোধক শব্দ, এক্ষেত্রে syncএটি "সিঙ্ক ব্যবধান" এর আরও ভাল নাম দেওয়া যেতে পারে)। ডেটা এবং মেটাডেটা আপডেট data=orderedহওয়া ক্রমের বিষয়ে (যেখানে data=writeback"কম নিরাপদ / দ্রুত" এবং data=journal"আরও নিরাপদ / ধীর") রয়েছে। commit=12345678যে ফ্রিকোয়েন্সিটি সম্পর্কে ফাইলসিস্টেম ড্রাইভার নিজেই সমস্ত নোংরা ডেটা / জার্নাল / মেটাডেটা / যা শারীরিক মিডিয়ায় যাই হোক না কেন একটি সম্পূর্ণ সিঙ্ক জোর করে। এবং আপনি চাইলে আপনি অবশ্যই এটি 136 বছর নির্ধারণ করতে পারেন, এবং মাউন্ট করুন data=writeback,nobhএবং এমন প্রোগ্রামগুলি যা কল করে না fsync()বা sync()মলিন পৃষ্ঠাতে র‍্যামে বসে থাকবে ...

আপডেট: আপনার প্রশ্ন সম্পাদনার ক্ষেত্রে আপনার প্রসঙ্গের ভিত্তিতে, আমি বলব যে আপনার গ্রাফিক্স ড্রাইভার কার্নেল প্যানিকগুলি সমাধান করতে না পারলে আপনার নিজের ফাইল সিস্টেমটি মাউন্ট বিকল্পগুলি data=journal,commit=1বা মাউন্ট বিকল্পের সাথে চালানো উচিত sync। এটি সর্বোচ্চ ডেটা অখণ্ডতা বজায় রাখবে তবে কার্য সম্পাদনের ব্যয়ে the আপনি এটি করতে চাইবেন যদি আপনি প্রায়শই ডিস্কে ডেটা লিখে যাচ্ছেন যা আপনি হারাতে পারবেন না এবং আপনি যে অ্যাপ্লিকেশনগুলি fsync()যথাযথভাবে নিয়োগের জন্য ব্যবহার করছেন তার "বিশ্বাস" না রাখলে এটি দ্বিগুণ গুরুত্বপূর্ণ ।

সূত্র: এখানে এবং ব্যক্তিগত অভিজ্ঞতা


1
ধন্যবাদ, "সমস্ত নোংরা ডেটা" অংশটি হ'ল আমি যা উদ্বিগ্ন ছিলাম! আমি উদ্বিগ্ন ছিলাম যে বিলম্বিত বরাদ্দের পাশাপাশি আরও ব্যতিক্রম ছিল (যা কমিটের ব্যবধানের পরেও নতুন ডেটা লেখার ক্যাশে থাকতে পারে)।
lxgr

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

1
সত্যি? ইন bugs.launchpad.net/ubuntu/+source/linux/+bug/317781/comments/45 এটা বিশেষভাবে উল্লেখ করা হয় যে অব্যবহৃত পৃষ্ঠাগুলি একটি কমিট উপর ডিস্কে লেখা হবে (কিন্তু একটি fsync উপর অবশ্যই ())। প্যাচ কিছু সাধারণ কেস স্থির করে যেখানে বরাদ্দ জোর করে আচরণটি সমস্যাযুক্ত; তবে ওভাররাইটিং ডেটা সম্পর্কে কিছুই বলা হয়নি।
lxgr

1
আহ, তাই commit=...এবং syncসমতুল্য না? বা টাইটসো এমন কি বোঝানো হয়েছে যে এটির সাথেও এটি নির্ধারিত syncপৃষ্ঠাগুলি প্রতিশ্রুতি দেয় না? আমি ঘটনাক্রমে ভাবতে পারি না যেহেতু এটি পসিক্সের নির্দিষ্টকরণের লঙ্ঘন করবে। আরও ভাল ডেটা সুরক্ষার জন্য আপনি যে বাশ স্ক্রিপ্টটি দিয়েছিলেন তা আপনি ব্যবহার করতে পারেন: পি
অ্যালিকুইসটিক

1
আমি দৃ sure়ভাবে নিশ্চিত যে তিনি প্রাক্তনটিকে বোঝালেন, আধুনিকটি লিনাক্সে এক্সট 4 তৈরি করতে একটি দুর্দান্ত বিপজ্জনক ফাইল সিস্টেম ব্যবহার করবে;) স্ক্রিপ্টটি দেখতে খুব সুন্দর কাজ করেছে; আমি এটি দিয়ে চেষ্টা করব এবং সম্ভবত স্ট্রেসের সাথে আমার কয়েকটি গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির মূল্যায়ন করব - সম্ভবত তারা সবাই fsync () ব্যবহার করছে এবং আমি খুব বেশি উদ্বেগ করছি ...
lxgr

1

আপনার প্রশ্নের উত্তর যাই হোক না কেন, তাতে কিছু আসে যায় না।

নিশ্চিত উদ্ভাসিত ext4 ফাইল-সিস্টেমটি আচরণকে বলেছেন, "তথ্য একটি সফল পর ডিস্ক হবে sync/ fsyncকল"। সুতরাং, আপনার যদি এমন একটি অ্যাপ্লিকেশন থাকে যা আপনাকে এই প্রশ্নটি জিজ্ঞাসা করে তোলে, আপনার সমালোচনামূলক কলগুলি এমন সমালোচনামূলক পয়েন্টগুলিতে সন্নিবেশ করা উচিত যেখানে ডেটা অখণ্ডতা নিশ্চিত করা দরকার। আপনি যদি একই সমস্যা নিয়ে চিন্তিত কোনও ব্যবহারকারী হন তবে যে syncকোনও বিপজ্জনক আচরণ অশুচি বন্ধের কারণ হতে পারে তা করার আগে আপনি কমান্ড-লাইন ইউটিলিটিতে কল করতে পারেন ।


আমি fsync () সম্পর্কে জানি; আমি এমন অ্যাপ্লিকেশনগুলির ব্যবহারকারী হিসাবে জিজ্ঞাসা করছি যা এটি ব্যবহার করতে পারে বা নাও পারে। আমি আমার প্রশ্ন আপডেট করেছি।
lxgr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.