জেডএফএস: ড্রাইভ হারানোর পরে আপনি কীভাবে সঠিক সংখ্যাগুলি পুনরুদ্ধার করবেন?


12

জেডএফএস এর সাহায্যে, যদি আপনার copies=2সেই কপিগুলির কিছু রয়েছে এবং আপনি যদি ড্রাইভ হারিয়ে ফেলেন তবে আপনি সিস্টেমটিকে কীভাবে বলবেন যে এটি ক্ষতিগ্রস্থ ফাইলগুলির জন্য ডেটা ব্লকের একটি নতুন অনুলিপি তৈরি করা উচিত? বা zfs খারাপ ডেটা ব্লকগুলি খুঁজে পাওয়ার সাথে সাথে অতিরিক্ত কপির জন্য কেবলমাত্র ডেটা ব্লকগুলি যুক্ত করা শুরু করে?

স্ক্রাব কি এই কাজ করবে?

(v0.6.0.56-rc8, জেডএফএস পুল সংস্করণ 28, জেডএফএস ফাইল সিস্টেম সংস্করণ 5, উবুন্টু ১১.১০)

উত্তর:


10

"অনুলিপিগুলি = 2" (বা 3) অতিরিক্ত রিডানডেনসি (একক ডিস্ক বা স্ট্রাইপ) সহ পুলগুলির সাথে ব্যবহার করার জন্য আরও নকশাকৃত। পুরো ডিভাইস ব্যর্থতা নয়, ছোটখাটো ডিস্ক দুর্নীতি পুনরুদ্ধার করতে সক্ষম হবার লক্ষ্য। পরবর্তী ক্ষেত্রে, পুলটি অমীমাংসিত তাই কোনও ডাইটো ব্লক পুনরুদ্ধার ঘটতে পারে না।

আপনার যদি অপ্রয়োজনীয়তা (মিররিং / রেইডজ / রেইডজ 2 / রেইডজ 3) থাকে তবে ডিটো ব্লকগুলি অন্যগুলির চেয়ে আলাদা নয় এবং স্ক্রাবিং / রিসিলভারিং এগুলি পুনরায় তৈরি করবে।


এটি @ রেডমুম্বা যা বলে তার সাথে সরাসরি বিরোধ হয় - এবং রেডমূবা কোডের লিঙ্ক সরবরাহ করে। আপনি যা বলছেন তার জন্য আপনি কি কিছু উত্স উদ্ধৃত করতে পারেন? বিশেষত, আপনি কেন ভাবেন যে কপি = এন পুরো ডিভাইস ব্যর্থতা মোকাবেলা করছে না - তার জন্য আমি ভাল উদ্ধৃতি দেখতে পছন্দ করব - যা আমি পড়েছি তার সাথে এটি মেলে না।
জেমস মুর

1
@ জেমস মুর পুরো ডিভাইস ব্যর্থতার পরে, সেই ডিস্কে কোনও ডিটকো ব্লক লেখা হবে না। পুল পর্যায়ে কোনও রিডানডেন্সি নেই তাই ত্রুটিযুক্ত ডিস্কটিকে নতুন দ্বারা প্রতিস্থাপনের কোনও উপায় নেই। পরিস্থিতিটি সঠিকভাবে পুনরুদ্ধার করার একমাত্র পদ্ধতি হ'ল পুলে সম্পূর্ণ ব্যাকআপ করা, স্বাস্থ্যকর ডিভাইসগুলি দিয়ে এটি পুনরায় তৈরি করা এবং ব্যাকআপ থেকে পুনরুদ্ধার করার সময় প্রথম ব্যাকআপটি সম্পন্ন হওয়ার আগে কোনও অনিচ্ছাকৃত রিবুট না ঘটে তা নিশ্চিত করা। অন্যথায় পুলটি আমদানিযোগ্য না হতে পারে এবং এর ডেটা হারাতে পারে। অপ্রয়োজনীয় পুলগুলির তুলনায় এটি বেশ বোঝা যেখানে খারাপ ডিস্ক পুনরুদ্ধার অন-লাইনে করা হয় এবং পুনরায় বুট থেকে বেঁচে থাকে।
jlliagre

1
এখানে একটি উল্লেখ রয়েছে: docs.oracle.com/cd/E19082-01/817-2271/gbbvf/… For a device to be replaced, the pool must be in the ONLINE state. The device must be part of a redundant configuration, or it must be healthy (in the ONLINE state). আমি ধরে নিয়েছি অনুলিপি = 2 বা 3 একটি অপ্রয়োজনীয় কনফিগারেশন হিসাবে বিবেচিত হবে না।
jlliagre

1
তবে একটি বিষয় মনে রাখবেন, তা হ'ল যদি আপনার প্রাথমিকভাবে থাকে copies=1এবং আপনি copies=2এটিটি সজ্জিত করে থাকেন তবে আপনি সম্ভবত পরে পুনরায় সংশোধক / উদ্ধারকারক চাইবেন - যা এই দৃষ্টান্তগুলি তৈরি করবে। তবে @ জিলিয়াগ্র্রে সঠিক: ডিট্টো ব্লকগুলি অপ্রয়োজনীয় কনফিগারেশন গঠন করে না। কোনও পুলে একাধিক ডিভাইস থাকা সত্ত্বেও, অন্য ডিভাইসে ব্লকগুলি সেট করা আছে এমন কোনও গ্যারান্টি নেই।
অ্যান্ড্রু এম

1
"অনুলিপিগুলি = এন যেখানে এন> 1" বৈশিষ্ট্যটি অযৌক্তিকতা যুক্ত করার উদ্দেশ্যে নয়। এটি ডেটা দুর্নীতির সমাধান করার উদ্দেশ্যে। জেডএফএস-এ লেখা সমস্ত কিছুই চেকসামড বা হ্যাশ করা হয়। যখন এটি আবার পড়ে, চেকসাম / হ্যাশ যাচাই করা হয়। যদি এন = 1 হয়, তবে একটি চেকসাম / হ্যাশ যাচাইকরণের ব্যর্থতার ফলে অ্যাপ্লিকেশনটিতে ত্রুটি দেখা দেয় in যদি এন> 1, তারপরে অন্য অনুলিপিগুলির একটিতে পরামর্শ নেওয়া যেতে পারে এবং অন্য সমস্ত অনুলিপিগুলি মেরামত করতে ব্যবহার করা যেতে পারে।
দীর্ঘায়ু

9

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

প্রথমত, কিছু পরিভাষা। ডিট্টো ব্লক (যা মিররগুলির বিপরীতে এই অনুলিপিগুলি হ'ল) ​​স্বয়ংক্রিয়ভাবে কোনও রচনায় তৈরি করা হয়েছে তবে মূল অনুলিপি হিসাবে একই ভার্চুয়াল ডিভাইসে (ভিডিভি) থাকতে পারে বা নাও থাকতে পারে। অন্যদিকে, মিররড ব্লকগুলি সর্বদা অন্য ভার্চুয়াল ডিভাইসে প্রতিবিম্বিত হয়।

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

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

  • আপনি ডেটা পড়ার চেষ্টা করার সময় অপ্রত্যাশিত ত্রুটিগুলি,
  • আপনি পুনর্নির্মাণ, বা
  • আপনি ঝাঁকুনি দিচ্ছেন।

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


1
সমস্যাটি @ জেলিগ্রে এর উত্তরে রয়েছে - পুলটি কোনও ডিভাইস হারিয়ে ফেললে মারা গেছে। পুলটিতে এখনও যথেষ্ট পরিমাণে ডিটকো ব্লক রয়েছে বলে মনে হয় না। কোন পথে?
জেমস মুর

4
@ জেমসমুর, আপনার যদি ডিভাইসের প্রথম 1MB ব্যর্থ হয় তবে আপনি ডিগ্রিযুক্ত অবস্থায় অনলাইনে অ্যারেটিকে বাধ্য করতে পারেন। সম্ভবত ব্যর্থ ডিভাইস থেকে আপনার কেবল মেটাটাটা দরকার। আমি এটি একটি জেবিড-স্টাইলের zpool দিয়ে পরীক্ষা করেছি এবং এটি কাজ করে: রাইডজ ভাঙা লেবেল পুনরুদ্ধার করে । আমি জপুলটি ভেঙে যাওয়ার আগে এবং তার পরে একটি এমডি 5সাম করেছি এবং আমদানির পরে কেবলমাত্র অনুলিপি = 1 ফাইল সিস্টেমটি ভেঙে গেছে। অনুলিপি = 2 এবং অনুলিপি = 3 ফাইল সিস্টেমগুলি পুরোপুরি মিলেছে।
Jodie সি

2

@ জেলিয়াগ্রে এবং অন্যান্য যারা মনে করেন যে পুরো জপুলটি মারা যায় যদি এটির কোনও ডিস্কের একটি (ভিডিভি) মারা যায় তবে পুলটি অতিরিক্ত কাজ নয় (আয়না / রেইডজ) হয় না। এটি সত্য নয়; কোনও মিরর বা রেডজ না হলেও মাল্টি-ডিস্ক পুলটি সর্বদা একক সম্পূর্ণ ডিস্ক ব্যর্থতা থেকে বাঁচতে পারে।

জেডএফএস মেটাডেটা সর্বদা কমপক্ষে 2 বার অনুলিপি করা হয় সুতরাং সম্পূর্ণ ডিস্কের মোট ব্যর্থতা (বা এর কোনও অংশ) ফাইল সিস্টেমটি নেবে না। তদুপরি, অনেকগুলি ফাইল, বিশেষত ছোট ফাইলগুলি সমস্ত ডিস্কে ছড়িয়ে দেওয়া হবে না এবং তাই ডিস্ক ব্যর্থতার কারণে অগত্যা ত্রুটিযুক্ত হবে না । ওপি ডিটো ব্লক (ব্যবহারকারীর ডেটা অনুলিপি> 1) ব্যবহার করে একটি মাল্টি-ডিস্ক পুলের ক্ষেত্রে জিজ্ঞাসা করছে । এখানে, একটি একক সম্পূর্ণ ডিস্ক ব্যর্থতা উচিত না কোনো ডেটা ক্ষতি হতে।জেডএফএস সর্বদা মূল ব্লক থেকে ডিট্টো ব্লকগুলি দূরে রাখার চেষ্টা করবে এবং একাধিক ভিদেব সহ পুলগুলির জন্য সর্বদা অন্য ভিদেবকে বোঝায় (একটি ব্যতিক্রম হতে পারে যেখানে পুলের ৫০% থাকে, যা খুব অস্বাভাবিক হবে) । ফাইল সিস্টেমের মেটা ডেটা ডাইটো স্তরের চেয়ে সর্বদা +1 বা +২ গুণ বেশি অনুলিপি করা হয় , তাই এটি সর্বদা ডিস্ক ব্যর্থতা থেকে বাঁচতে পারে। তদ্ব্যতীত, যদি আপনার কাছে তিনটি ডিস্কেরও বেশি পুল থাকে তবে কোনও ডেটা ক্ষতি ছাড়াই আপনি তার অর্ধেক পর্যন্ত হারাতে সক্ষম হবেন; জেডএফএস পরের ডিস্কে ডিটো ব্লকগুলি সংরক্ষণ করে রাখে যতক্ষণ না আপনি কখনই দুটি সংযুক্ত ডিস্ক হারাবেন না, আপনার কখনও ডেটা ক্ষতি হবে না। (ডিট্টো = 2 এর জন্য তিনটি অ্যাডজেন্ট ডিস্ক ব্যর্থতা)।

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

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

সম্পাদনা: পরীক্ষার পরে, দেখে মনে হচ্ছে zfs পুলটি ব্যর্থ হবে যদি অনুলিপি> = 2 সহ কোনও ডিস্ক একটি মাল্টি-ডিস্ক নন-রিন্ডানড পুলে ব্যর্থ হয়। এক বা একাধিক ডিস্কে প্যারিটাল ডেটা দুর্নীতি বেঁচে থাকা উচিত এবং কোনও স্ক্রাব দ্বারা স্থির করা উচিত।


এই ধরণের পরীক্ষাগুলির সম্পর্কে ভীতিকর বিষয়টি হ'ল তারা আমাকে সেটআপ বলার জন্য দুর্দান্ত যে অবিলম্বে বা কমপক্ষে দ্রুত ব্যর্থ হবে। তারা আমাকে বলার জন্য এত দুর্দান্ত নয় যে একটি সেটআপ মাঝে মাঝে ব্যর্থ হবে। যাই হোক না কেন, এটি পরিষ্কার নয় যে আপনি কীভাবে একটি পুলটি ফিরিয়ে আনতে পারেন যাতে ব্যর্থতা রয়েছে; আমি তিনটি স্পার্স ফাইলের সাথে এর মতো একটি পুল স্থাপনের চেষ্টা করেছি এবং একটি স্পারস ফাইল অপসারণ পুরো পুলের জন্য মারাত্মক বলে মনে হচ্ছে। zpool প্রতিস্থাপন ব্যর্থ ফাইল প্রতিস্থাপন করবে না, zpool স্ক্রাব স্টল 5% (এবং এগুলি খুব ছোট পুল), এবং Illumos.org/msg/ZFS-8000-5E এ ত্রুটি পৃষ্ঠাটি আশাবাদী নয়।
জেমস মুর

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