বিটিআরএফএস ব্যালেন্সও কি ফাইলকে ডিফ্র্যাগমেন্ট করে?


9

আমি যখন রান করি তখন btrfs filesystem balanceকি এই স্পষ্টতই ফাইলগুলি ডিফ্র্যাগমেন্ট করে? আমি কল্পনা করতে পারি যে ভারসাম্য কেবলমাত্র বিদ্যমান খণ্ডগুলি সংরক্ষণ করে প্রতিটি ফাইলের পরিমাণ পৃথক করে পুনরায় স্থানান্তর করে।

একটি FAQ এন্ট্রি রয়েছে, '"ভারসাম্য" কী করে?' যা এই বিষয়ে অস্পষ্ট:

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

ভারসাম্য যেভাবে কাজ করে তার কারণে এর কিছু কার্যকর পার্শ্ব-প্রতিক্রিয়াও রয়েছে:

  • যদি প্রচুর বরাদ্দযুক্ত কিন্তু অব্যবহৃত ডেটা বা মেটাডেটা খণ্ডগুলি থাকে তবে ভারসাম্য সেই বরাদ্দ স্থানের কিছুটা দাবি করতে পারে। এটি একটি একক-ডিভাইস ফাইল সিস্টেমে ভারসাম্য চালানোর মূল কারণ।
  • ক্ষতিগ্রস্থ প্রতিলিপি সহ একটি ফাইল সিস্টেমে (উদাহরণস্বরূপ একটি মৃত এবং সরানো ডিস্ক সহ একটি RAID-1 FS), এটি বর্তমানে সক্রিয় ডিভাইসের একটিতে থাকা ডিএডি-র অনুলিপিটি পুনর্নির্মাণের জন্য এফএসকে জোর করে, RAID-1 ক্ষমতা পুনরুদ্ধার করে নথি ব্যবস্থা.

উত্তর:


10

টি এল; ডিআর

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

নীচে ভার্বোজ উত্তর। অবশ্যই দ্রষ্টব্য যে আমার দীর্ঘ উত্তরটি এই প্রত্যাশায় রয়েছে যে এটি অন্যদের সহায়তা করবে যাঁদের সমস্যার মুখোমুখি হওয়ার সম্পূর্ণ প্রসঙ্গ নেই।


অংশ বরাদ্দ

বিটিআরএফএসের সাথে একটি গুরুত্বপূর্ণ ধারণা হ'ল খণ্ড বরাদ্দ। আপনি যখন বিটিআরএফএসে ডেটা লেখেন, এটি সেই তথ্যটিকে "বর্তমান" অংশে লেখেন, সাধারণত আকার 1 জিবি । "বর্তমান" অংশটি পূর্ণ হয়ে গেলে এটি একটি নতুন অংশ বরাদ্দ করে। যদি বিদ্যমান অংশটিকে খালি করা হয়, নতুন স্ট্রাকের প্রয়োজন হলে পুনরায় বরাদ্দকরণের জন্য এর স্টোরেজ স্পেসটি উপলব্ধ করা হয়।

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


কিভাবে ভারসাম্য তার কাজ করে

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

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

ব্যালেন্স অংশটি কোথায় আসে ?

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

সাধারণ ভারসাম্য পরিস্থিতি:

আমার 2x 500 গিগাবাইট ড্রাইভ রয়েছে যা প্রতিটিতে 240 জিবি ব্যবহৃত হয়; আমি আরও 500 গিগাবাইট ড্রাইভ যুক্ত করি। আমার সাধারণত:

  • ড্রাইভ একটি: 240 গিগাবাইট ব্যবহৃত
  • ড্রাইভ বি: 240 জিবি ব্যবহৃত হয়েছে
  • ড্রাইভ সি: 0 জিবি ব্যবহৃত হয়েছে

আমি সমস্ত তথ্য একটি ভারসাম্য শুরু। ভারসাম্যের প্রায় এক চতুর্থাংশ, আমি নিম্নলিখিতগুলির মতো একটি পরিস্থিতি দেখতে পাব:

  • ড্রাইভ একটি: 180 গিগাবাইট ব্যবহৃত
  • ড্রাইভ বি: 180 জিবি ব্যবহৃত হয়েছে
  • ড্রাইভ সি: 120 জিবি ব্যবহৃত হয়েছে

প্রায় এক তৃতীয়াংশ চিহ্নটি, এটি ভারসাম্যপূর্ণ বলে মনে হয়:

  • ড্রাইভ এ: 160 জিবি ব্যবহৃত হয়েছে
  • ড্রাইভ বি: 160 জিবি ব্যবহৃত হয়েছে
  • ড্রাইভ সি: 160 জিবি ব্যবহৃত হয়েছে

আপনি অবশ্যই এই মুহুর্তে ভারসাম্য পরিচালনা বন্ধ করতে পারেন, যদিও এর কারণগুলি (ভাল এবং খারাপ) কেন আপনি এটি 3 টি শেষ করতে চাইতে পারেন ।


বিভাজনে বিভাজন কীভাবে হয়

বিটিআরএফস একটি কোউ (লিখিত অনুলিপি ) ফাইল সিস্টেম, যার অর্থ ডেটা কখনও ওভার-লিখিত হয় না 4 । আপনার যদি বিদ্যমান 100MB ফাইল থাকে এবং ফাইলটির 1MB অংশ ওভার-লিখন করেন, তবে 1MB অংশটি ড্রাইভের বিদ্যমান ডেটার উপরে লেখা হয় না। পরিবর্তে এটি "বর্তমান" খণ্ডে অন্য কোথাও লেখা আছে। বিটিআরএফস নতুন ডেটার এই "টুকরা" কোথায় সংরক্ষণ করে তা ট্র্যাক করে। এটি ডেটার স্ন্যাপশট বজায় রাখার জন্য সবচেয়ে দরকারী কারণ এর অর্থ পুরানো ডেটা ডিফল্টরূপে সংরক্ষিত। যেহেতু এসএসডি, খুব অনুরূপভাবে, ডেটাও কখনই ওভাররাইট করে না, এই CoW প্রক্রিয়াটি এসএসডিগুলিকে তাদের জীবনকাল এবং কর্মক্ষমতা বজায় রাখতে মঞ্জুরি দেয় itself

যেখানে ডিফ্রেগ আসে

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

অবশ্যই একটি সমাধান বিটিআরএফএসের ডিফ্রেগ বৈশিষ্ট্যটি ব্যবহার করা। ডিফ্রেগ অপারেশন ফাইলটির বিষয়বস্তুটিকে তার বর্তমান অবস্থার যৌক্তিক ক্রমে পুনরায় লেখায় এর ফলে খণ্ডগুলি হ'ল অসংখ্য পৃথক টুকরো পরিবর্তে এক বিশাল 100 এমবি ডেটা সেট করে ফেলে।

একটি বিকল্প সমাধান হ'ল বিশেষত এই জাতীয় ফাইলগুলির জন্য "নোকা" বৈশিষ্ট্যটি ব্যবহার করা। এনকো বৈশিষ্ট্যটির কারণে ফাইলটি জায়গায় ওভাররাইট হয়ে যায়। সাবধান হোন যে এখানে 5 5 র নিবন্ধ করার জন্য সতর্কতা রয়েছে ।


সংক্ষিপ্তসার আবার

  • ভারসাম্যটি খণ্ডগুলি এবং স্ট্রাইপগুলির দিকে নজর রাখে - এবং সেই অংশগুলির ডেটা এখনও প্রাসঙ্গিক কিনা তা ব্যতীত ফাইলের সামগ্রী সম্পর্কে সচেতন নয়।

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


মন্তব্য:

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

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

  3. এই মুহুর্তে, ধরে নেওয়া যায় যে স্টোরেজটি সাধারণ "একক" প্রোফাইল 7 ব্যবহার করছে , প্রথম 160GB ভারসাম্যযুক্ত সমস্তই নতুন ড্রাইভে স্থানান্তরিত হবে - তবে এই সময়েও এটি এখনও প্রায় 320 গিগাবাইটের ভারসাম্য রেখে গেছে। বাকিগুলি ড্রাইভগুলিতে সমানভাবে ভারসাম্যপূর্ণ হবে। স্পিন্ডল সহ, আদর্শভাবে আপনি ডেটা আরও ভাল "স্প্রেড" করার জন্য বিটিআরএফএস 3 টি ড্রাইভের পুনরায় ভারসাম্য বজায় রাখার আগে কেবল 160 টি খণ্ডে ভারসাম্য বজায় রাখতে চান। এসএসডি সহ, ডেটার একটি এমনকি "স্প্রেড" বজায় রাখার চেষ্টা করা খুব জটিল, সম্ভবত অর্থহীন, এবং এসএসডি আজীবনের পক্ষে খুব খারাপ হয়ে যায়।

  4. ব্যতিক্রমটি "নোকা" বৈশিষ্ট্য।

  5. যদি স্ন্যাপশট থাকে তবে "লাইভ" ফাইলটি ডিফ্র্যাগমেন্ট করার ফলে স্ন্যাপশট এবং "লাইভ" ফাইলটি ডিস্কের ডাইভারজেন্ট ডেটা লোকেশনগুলিকে উল্লেখ করে এবং ডেটাটি নকল হয়ে যায় এবং এইভাবে অতিরিক্ত ডিস্কস্পেস গ্রহণ করে। যখন কোনও সাধারণ-উদ্দেশ্যে ডি-সদৃশ বৈশিষ্ট্যটি উপলভ্য হয়, তখন এটি ততটা সমস্যা হবে না।

  6. নোকোর অর্থ বিটিআরএফএস ফাইল-সামগ্রীর জন্য চেকসাম বজায় রাখে না।

  7. বেশিরভাগ রাইডের ধরণের (রেইড 1 ব্যতিক্রম), ড্রাইভগুলি জুড়ে "স্প্রেড" বিচ্ছিন্ন হয় কারণ স্ট্রিপগুলি সাধারণত সমস্ত ড্রাইভে জুড়েই লেখা হয় ।


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

1
ধন্যবাদ! আমার সত্যিই সেখানে আরও কিছু আপ-টু ডেট সামগ্রী আনতে হবে। : - | সময় খুব ঘাটতিয়ে
zaTricky

6

হয়তো এ খুঁজছেন কমান্ডের সোর্স কোড যথাসাধ্য সাহায্যের

পছন্দ btrfs balance start

'বিটিআরএফএস ফাইলসীমা ভারসাম্য' কমান্ডটি অবচয় করা হয়েছে, দয়া করে পরিবর্তে 'বিটিআরএফএস ব্যালান্স স্টার্ট' কমান্ডটি ব্যবহার করুন।

এবং তারপর কমান্ড স্ট্রিং এ

"btrfs [filesystem] balance start [options] <path>",
"Balance chunks across the devices",
"Balance and/or convert (change allocation profile of) chunks that",
"passed all filters in a comma-separated list of filters for a",
"particular chunk type.  If filter list is not given balance all",
"chunks of that type.  In case none of the -d, -m or -s options is",
"given balance all chunks in a filesystem."

আমি এটি দ্বিতীয় চেহারা দিতে পারি তবে আমি স্ট্রাক্টস বা আইওসিটিএল () কলগুলিতে ডিফ্র্যাগের কোনও রেফারেন্স দেখতে পাচ্ছি না। সুতরাং কোন সুস্পষ্ট defrag আছে।

এটি যা করে তা হ'ল এক জায়গা থেকে অন্য জায়গায় অনুলিপি করা এবং প্রক্রিয়াটিতে ডিফল্ট বরাদ্দকারী ব্যবহার করা। এখান থেকে নেওয়া হয়েছে

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

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

আছে HTH


3

ভারসাম্য খণ্ড স্তরে কাজ করে; খণ্ডগুলি হ'ল বিটিআরএফএস কীভাবে রেইড রিডানডেন্সি প্রয়োগ করে। এটি বিটিরি স্তরে কিছু করে না এবং মানহানিও করে না।


0

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


3
আপনি যদি এসএসডি ড্রাইভ থেকে ডেটা অ্যাক্সেস না করেন তবে এর অর্থ কিছু নেই।
ম্যাট

1
যে প্রশ্নের উত্তর দেয় না।
কার্ল রিখটার

-2

ডিফ্র্যাগমেন্টেশন ওভাররেটেড হয়। অবশ্যই, একটি FAT16 এ, এটি সত্যই পার্থক্য করে তবে বেশিরভাগ ক্ষেত্রে আধুনিক কিছু নয়। কার্যকরভাবে, পুনরায় ভারসাম্য আপনার ফাইল সিস্টেমের সংস্থার উন্নতি করবে এবং ফাইলগুলি কম খণ্ডিত হবে।


6
ফ্র্যাগমেন্টেশন আসলে 2/3/4, এক্সএফএস, জেএফএস ইত্যাদির জন্য সমস্যা নয়, তবে বিটিআরএফএসের ক্ষেত্রে এটি একটি উল্লেখযোগ্য সমস্যা হতে পারে। Btrfs.wiki.kernel.org/index.php/ গোটাসগুলি দেখুন যা বলেছে "প্রচুর এলোমেলো লেখার ফাইলগুলি এইচডিডিগুলিতে ট্র্যাশ হয়ে যাওয়ার ফলে এবং সিস্টেমে অতিরিক্ত সিপিইউ লোডের অতিরিক্ত মাল্টি-সেকেন্ড স্পাইকের কারণ হতে পারে" 10000+ এক্সটেন্টস "হতে পারে এসএসডি বা বড় পরিমাণে একটি র‍্যাম "" এটি অতিরঞ্জিত নয়, এমনকি সাধারণ ব্যবহারের ক্ষেত্রেও (ফাইলগুলি বিটোরেন্ট, স্ক্লাইট ডাটাবেস ইত্যাদিতে ডাউনলোড করা)।
nemequ

2
ডিফ্র্যাগমেন্টেশন আরও বেশি আধুনিক ফাইল সিস্টেমের সাথে এমনকি বিশেষত ড্রাইভ যখন প্রচলিত এইচডিডি পূর্ণ হতে শুরু করে তবে এটি আরও বড় আকার ধারণ করতে পারে। কিছু ফাইল সিস্টেম এগুলি অন্যের চেয়ে ভাল পরিচালনা করে এবং কিছু ধরণের ফাইল অন্যদের চেয়ে খারাপ হয়। স্ল্যাক স্পেস, পরিস্থিতি অনুকূল করতে অসম্ভব, পড়া / লিখতে ক্যাশে, রিডহেড, অ্যাপ্লিকেশন অপ্টিমাইজেশন এবং এর অনেক কিছুই এটিকে লুকিয়ে রাখে। বেশিরভাগ অংশের জন্য লোকেদের এটি নিয়ে মাথা ঘামানোর দরকার নেই এবং কেবল তাদের যদি চিন্তাভাবনা করা উচিত তবে তাদের যদি বাস্তবে কোনও ভয়াবহ সমস্যা দেখা দেয় যা ভগ্নাংশের কারণে ঘটতে পারে।
jgmjgm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.