ত্রুটিগুলির জন্য কীভাবে বিটিআরএফএস ফাইল সিস্টেম রাইড নিরীক্ষণ করবেন?


11

আমি ডিমনটিতে এমন কিছু ডকুমেন্টেশন দেখেছি যা বিভিন্ন বিটিআরএফএস ইভেন্টের জন্য একটি প্রোগ্রাম / স্ক্রিপ্ট কার্যকর করতে পারে তবে আমি এটি আর খুঁজে পাচ্ছি না।

আমি কীভাবে কোনও বিটিআরএফএস রাইড 1 অ্যারের ড্রাইভ ব্যর্থতায় স্ক্রিপ্ট / প্রোগ্রাম চালানো যেতে পারি? সম্ভাব্য ব্যর্থ ড্রাইভের জন্য প্রাথমিক সতর্কতা হিসাবে কাজ করতে আমি কোনও ত্রুটির উপরে একটি স্ক্রিপ্ট চালাতে চাই, তবে প্রকৃত ড্রাইভ ব্যর্থতা সবচেয়ে গুরুত্বপূর্ণ। আমি সেই সময়ে ফাইল সিস্টেমটি আনমাউন্ট করতে চাই (যদি এটি বিটিআরএফএস যাই হোক না কেন) এবং একটি অ্যালার্ম সেট করে।


1
আপনি কেন ড্রাইভ ব্যর্থতায় সিস্টেমটিকে রেড 1 আনমাউন্ট করতে চান? এই ধরণের মারধর উদ্দেশ্য কি তাই না? আমি বলতে চাইছি এটির জন্য আপনার কোনও কারণ থাকতে পারে, তবে ডিফল্টরূপে এটি করা উচিত নয়
পেট্র

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

@ আইওন: এই কারণেই RAID-5 সর্বদা সুপারিশ করা হয় না এবং পরিবর্তে RAID-6 ব্যবহার করা উচিত। একটি রিসিলভার সমস্ত ড্রাইভে প্রচুর পরিমাণ চাপ দেবে, যার ফলে দ্বিতীয় ড্রাইভ, যা খারাপ হতে পারে, এই প্রক্রিয়া চলাকালীন ব্যর্থ হতে পারে। RAID-5 এর বিপরীতে, RAID-6 হ্যান্ডেল করতে পারে (আপনি এটি কেবল পঠনযোগ্য পুনরায় গণনা করতে পারেন এবং দ্বিতীয় ড্রাইভ প্রতিস্থাপনের আগে আপনার ব্যাকআপ আপডেট করতে পারেন)।
বেসিক 6

উত্তর:


18

নিয়মিত লগিং সিস্টেমের পাশাপাশি বিটিআরএফএসের স্ট্যাটাস কমান্ডও রয়েছে, যা প্রতি ড্রাইভে ত্রুটিগুলি (পড়া, লেখার এবং দুর্নীতি / চেকসাম ত্রুটি সহ) ট্র্যাক করে রাখে:

# btrfs device stats /
[/dev/mapper/luks-123].write_io_errs   0
[/dev/mapper/luks-123].read_io_errs    0
[/dev/mapper/luks-123].flush_io_errs   0
[/dev/mapper/luks-123].corruption_errs 0
[/dev/mapper/luks-123].generation_errs 0

সুতরাং আপনি একটি সহজ রুট ক্রোনজব তৈরি করতে পারেন:

MAILTO=admin@myserver.com
@hourly /sbin/btrfs device stats /data | grep -vE ' 0$'

এটি প্রতি ঘণ্টায় ইতিবাচক ত্রুটির পরিমাণ গণনা করবে এবং আপনাকে একটি ইমেল প্রেরণ করবে। স্পষ্টতই, আপনি ইমেল বিজ্ঞপ্তিটি কাজ করে কিনা তা যাচাই করতে আপনি এই জাতীয় দৃশ্যের (উদাহরণস্বরূপ দুর্নীতি সৃষ্টি বা গ্রেপ অপসারণের মাধ্যমে) পরীক্ষা করবেন।

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

@monthly /sbin/btrfs scrub start -Bq /data

-Bবিকল্প পুরোভূমিতে মাজা রাখা হবে, যাতে আপনি ফলাফল ইমেল ক্রন আপনাকে যা পাঠায় দেখতে পাবে। অন্যথায়, এটি ব্যাকগ্রাউন্ডে চলবে এবং ফলাফলগুলি ইমেলটিতে না থাকায় আপনাকে ম্যানুয়ালি মনে রাখতে হবে।

আপডেট : মাইকেল কেজারলিংয়ের পরামর্শ অনুসারে উন্নত গ্রেপ, ধন্যবাদ।

আপডেট 2 : স্ক্রাবিং সম্পর্কিত বনাম নিয়মিত পড়ার ক্রিয়াকলাপে অতিরিক্ত নোট (এটি কেবলমাত্র বিটিআরএফএসের ক্ষেত্রে প্রযোজ্য নয়):
Ioan দ্বারা নির্দেশিত হিসাবে, একটি স্ক্রাব বেশিরভাগ সময় নিতে পারে, অ্যারের আকার এবং ধরণের উপর নির্ভর করে (এবং অন্যান্য কারণগুলি), কিছু ক্ষেত্রে এমনকি এক দিনেরও বেশি। এবং এটি একটি সক্রিয় স্ক্যান, এটি ভবিষ্যতের ত্রুটিগুলি সনাক্ত করতে পারে না - একটি স্ক্রাবের লক্ষ্য হ'ল সময়টিতে আপনার ড্রাইভে ত্রুটিগুলি সন্ধান করা এবং সংশোধন করা। তবে অন্যান্য RAID সিস্টেমের মতো, পর্যায়ক্রমিক স্ক্রাবগুলি নির্ধারণ করার প্রস্তাব দেওয়া হয়। এটি সত্য যে কোনও ফাইল পড়ার মতো একটি সাধারণ i / o অপারেশন, যা পড়েছিল তা আসলেই সঠিক কিনা তা পরীক্ষা করে। তবে একটি সহজ আয়না বিবেচনা করুন - যদি ফাইলটির প্রথম অনুলিপিটি ক্ষতিগ্রস্থ হয়, সম্ভবত এমন কোনও ড্রাইভ দ্বারা মারা যেতে পারে যা দ্বিতীয়টি অনুলিপিটি সঠিকভাবে বিটিআরএফএস দ্বারা পড়েছে, তবে বিটিআরএফএস জানতে পারবে না যে দুর্নীতি রয়েছে একটি ড্রাইভে। এটি কেবলমাত্র অনুরোধ করা ডেটা প্রাপ্ত হওয়ার কারণে,এর অর্থ হ'ল আপনি যদি এমন কোনও ফাইল বিশেষভাবে পড়েন যা আপনি জানেন যে একটি ড্রাইভে দূষিত হয়েছে, তবুও কোনও গ্যারান্টি নেই যে এই রিড অপারেশন দ্বারা দুর্নীতি সনাক্ত করা হবে।
এখন, ধরে নেওয়া যাক বিটিআরএফএস কেবল কখনওই ভাল ড্রাইভ থেকে পড়ে, কোনও স্ক্রাব চালিত হয় না যা খারাপ ড্রাইভের ক্ষতি সনাক্ত করতে পারে, এবং ভাল ড্রাইভটিও খারাপ হয় - ফলাফলটি ডেটা ক্ষতি হতে পারে (কমপক্ষে বিটিআরএফএস জানত) কোন ফাইলগুলি এখনও সঠিক এবং এখনও সেগুলি পড়ার অনুমতি দেবে)। অবশ্যই এটি একটি সরল উদাহরণ; বাস্তবে, বিটিআরএফএস সর্বদা একটি ড্রাইভ থেকে পড়বে না এবং অন্যটিকে উপেক্ষা করবে না।
তবে মূল বিষয়টি হ'ল পর্যায়ক্রমিক স্ক্রাবগুলি গুরুত্বপূর্ণ কারণ তারা নিয়মিত পড়ার ক্রিয়াকলাপগুলি প্রয়োজনীয়ভাবে সনাক্ত করতে পারে না এমন ত্রুটিগুলি খুঁজে পাবেন (এবং ঠিক করুন)।

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

অন্যদিকে, যদি কোনও ড্রাইভ হঠাৎ করে চলে যায় (মারা যায় এবং ত্রুটি তৈরির তুলনায় সংযোগ বিচ্ছিন্ন বা সম্পূর্ণ মৃত), এটি একটি ত্রুটিযুক্ত ড্রাইভ হবে (জেডএফএস এ জাতীয় ড্রাইভকে ফল্ট হিসাবে চিহ্নিত করবে)। দুর্ভাগ্যক্রমে, বিটিআরএফএস বুঝতে পারে না যে ফাইল সিস্টেমটি মাউন্ট করার সময় একটি ড্রাইভ চলে গেছে, যেমন 09/2015 থেকে এই মেইলিং তালিকা এন্ট্রিতে উল্লেখ করা হয়েছে (এটি সম্ভবত প্যাচ করা হয়েছে):

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

https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg46598.html

ততক্ষণে ডেমসগে অনেকগুলি ত্রুটি বার্তা উপস্থিত থাকবে, তাই ডেমসেগ গ্রেপিং নির্ভরযোগ্য নাও হতে পারে।
বিটিআরএসএফ ব্যবহার করে এমন কোনও সার্ভারের জন্য, ক্রেডিট চেক (ক্রোন জব) থাকা একটি ধারণা হতে পারে যা RAID অ্যারেতে অন্তত একটি ড্রাইভ চলে গেছে, অর্থাৎ আর অ্যাক্সেসযোগ্য না হলে সতর্কতা পাঠায় ...


1
grep -vE ' 0$'ভালো কিছু হবে না ?
একটি সিভিএন

@ মাইকেলKjörling: ভাল ধারণা, আমি আমার উত্তর আপডেট করেছি, আপনাকে ধন্যবাদ!
বেসিক 6

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

@ লান: আপনি সঠিক, একটি স্ক্রাব অনেক ঘন্টা চালাতে পারে, তাই এটি ড্রাইভগুলিতে স্পষ্টতই প্রচুর চাপ ফেলে। তবে এটি নিঃশব্দ দুর্নীতি শনাক্ত করার জন্য করা হয়েছে, যাতে অন্য কোনওটি খারাপ হওয়ার আগে আপনি একটি খারাপ ড্রাইভ প্রতিস্থাপন করতে পারেন। নীরব দুর্নীতি স্বাভাবিক fs অপারেশনের সময় ঘটে না, তাই আপনাকে স্বয়ংক্রিয়ভাবে জানানো হবে না।
বেসিক 6

@ বেসিক 6: অবশ্যই এবং এটি এটির জন্য দুর্দান্ত। তবে এটি স্বাভাবিক অপারেশনের সময় ত্রুটিগুলি সনাক্ত করার জন্য কিছুই করে না, যেমন পরের স্ক্রাব পর্যন্ত অবনমিত বিটিআরএফএস অ্যারে। দক্ষতার জন্য মাসিক স্ক্রাব ব্যবহার করে নিরব দুর্নীতি মোকাবেলা করা যেতে পারে, তবে অন্যান্য ত্রুটিগুলির জন্য এটি অনেক দীর্ঘ।
ইয়োয়ান

4

বিটিআরএফএস-প্রগস হিসাবে ভি 4.11.1 এর পরিসংখ্যানগুলিতে --check বিকল্প রয়েছে যা মানগুলির কোনও শূন্য না হলে রেজিক্সের প্রয়োজনীয়তা অপসারণ করে নন-শূন্য ফিরে আসবে।

ডিভাইসের পরিসংখ্যান -c /


3

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

btrfs device stats /

পুনরায় বুট করার পরে, বিটিআরএফএসগুলি নিখোঁজ ড্রাইভগুলি দেখায় তবে এটি খুব দেরী হতে পারে।

btrfs fi show

2

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

http://marc.merlins.org/perso/btrfs/post_2014-03-19_Btrfs-Tips_-Btrfs-Scrub-and-Btrfs-Filesystem-Repair.html

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

বিটিআরএফএস ফাইল সিস্টেম ত্রুটি বা সতর্কতাগুলির প্রতিবেদন করতে কীভাবে সেকেন্ড, ইভেন্ট সম্পর্কিত সংযোগকারী কনফিগার করবেন

Sec.pl ইনস্টল করার পরে (ডেবিয়ান বা http://simple-evcorr.sourceforge.net/ এ অ্যাপ্লিকেশন-ইনস্টল সেকেন্ড ) নীচের 2 টি কনফিগারেশন ফাইল ইনস্টল করুন।

এটি নির্বোধ নয়, এটি পরিচিত বার্তাগুলির একটি রেজেক্সের উপর নির্ভর করে যা ঠিক আছে, এবং সমস্ত অজানা প্রতিবেদন করে। আপনি প্রয়োজন অনুসারে এগিয়ে খুঁজছেন নেতিবাচক রেজেক্স প্রসারিত করতে পারেন।

polgara:~\# cat /etc/default/sec  
\#Defaults for sec  
RUN_DAEMON="yes"  
DAEMON_ARGS="-conf=/etc/sec.conf -input=/var/log/syslog -pid=/var/run/sec.pid -detach -log=/var/log/sec.log"

polgara:~# cat /etc/sec.conf  
\# http://simple-evcorr.sourceforge.net/man.html  
\# http://sixshooter.v6.thrupoint.net/SEC-examples/article.html  
\# http://sixshooter.v6.thrupoint.net/SEC-examples/article-part2.html  
type=SingleWithSuppress  
ptype=RegExp  
pattern=(?i)kernel.*btrfs: (?!disk space caching is enabled|use ssd allocation|use .* compression|unlinked .* orphans|turning on discard|device label .* devid .* transid|detected SSD devices, enabling SSD mode|has skinny extents|device label|creating UUID tree|checking UUID tree|setting .* feature flag|bdev.* flush 0, corrupt 0, gen 0)  
window=60  
desc=Btrfs unexpected log  
action=pipe '%t: $0' /usr/bin/mail -s "sec: %s" root

1

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

PS: প্লাগইনটি ডেবিয়ায় প্যাকেজ করা আছে: মনিটরিং-প্লাগইনস-বিটিআরএফএস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.