বিটিআরএফএস ভুল সংশোধনযোগ্য ত্রুটিযুক্ত ফাইলগুলি সন্ধান করা


17

আমার একটি বিটিআরএফএস ফাইল সিস্টেমে অপরিবর্তনযোগ্য ত্রুটি সম্পর্কিত একটি প্রশ্ন রয়েছে। বিশেষত, আমার একটি র‌্যাম লাঠি নিয়ে কোনও সমস্যার অভিজ্ঞতা পেয়ে আমি সম্প্রতি একটি বিটিআরএফএস স্ক্রাব চালিয়েছি এবং মনে হয় এটি 4 টি সংশোধনযোগ্য ত্রুটি আবিষ্কার করেছে। এটি আউটপুট:

scrub status for <UUID>
    scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
    total bytes scrubbed: 1.87TiB with 4 errors
    error details: csum=4
    corrected errors: 0, uncorrectable errors: 4, unverified errors: 0

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

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

এটি কীভাবে করবেন সে সম্পর্কে কারও কাছে যদি তথ্য থাকে তবে আমি আপনার কাছ থেকে শুনতে আগ্রহী।

তুমাকে অগ্রিম ধন্যবাদ.

উত্তর:


8

আমি নিম্নলিখিত পদ্ধতিটি দরকারী পেয়েছি ...

btrfs scrub আয়তন.

আপনি উপরে যেমন দেখিয়েছেন তেমন যে কোনও সিউস ত্রুটি উপস্থাপন করা হবে।
আপনার উদাহরণের ত্রুটির বিবরণ ব্যবহার করে : সিএসএম = 4 । নিম্নলিখিত বিবৃতিটির লেজ নির্দেশে সেই নম্বরটি ব্যবহার করুন :

dmesg | grep "checksum error at" | tail -4 | cut -d\  -f24- | sed 's/.$//'

এটি কোনও ফাইলের কাছে পাইপ দেওয়ার সুবিধাজনক (যেমন > csums.txt)

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


আমি যতদূর বুঝতে পেরেছি, আপনি প্রদর্শিত লাইন সংখ্যা সীমাবদ্ধ করতে এবং সদৃশগুলি উপেক্ষা করার জন্য লেজ ব্যবহার করছেন। আমি sort | uniqঅনুরূপ অনুরূপগুলি থেকে মুক্তি পেতে ব্যবহার করার পরামর্শ দেব :dmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
নিক্লাসফি

3

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

 find /mount-point -type f -exec cp {} /dev/null \;

 where mount-point is the ROOT node/mount-point of the affected filesystem

এখনই এটি চালানো, আশা করি এটি কিছু পরিবর্তন করবে। আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ, আমি আপনাকে ফলাফল হিসাবে আপডেট করব।
রেডহ্যাক

1
দুঃখিত বলে এটি কাজ করে না বলে মনে হচ্ছে = / এটি প্রথম ফাইলটি অকার্যকরযোগ্য ত্রুটির কারণ হিসাবে খুঁজে পেয়েছিল তবে এটি বার্তাটি স্প্যাম করে: "বাসি ফাইল হ্যান্ডেল" টার্মিনালে যদি আমি এটি শেষ না করি। অনুমোদিত এটি ফাইলটি খুঁজে পেয়েছে তবে এখন কীভাবে এটি থেকে মুক্তি পাবেন তা আমি বুঝতে পারি না। GTR বিটিআরএফএস মেলিং তালিকার সাথে যোগাযোগ করতে হবে।
রেডহ্যাক

আপনি এটিকে একটি বিশেষ ডিরেক্টরিতে স্থানান্তর করতে পারেন এবং তারপরে এটি আরও অনুসন্ধান থেকে বাদ দিতে পারেন।
এমডিপিসি

1
এটি সরানো বা অনুলিপি করবে না, এটি কেবল আমাকে জানায় যে ফাইল হ্যান্ডেলটি বাসি। আমি এমনকি এলএস করতে পারি না।
রেডহ্যাক

আপনি ব্যবহার করেন তাহলে cp -v, এছাড়াও আপনি উন্নতি নিরীক্ষণ করতে পারেন: find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt। তবে /proc/kcoreফাইলটি বিশাল হতে পারে (খনিটি ছিল 128TB) সুতরাং অনুলিপিটির অপারেশনটি সম্ভবত স্তব্ধ হয়ে যাবে। /procডিরেক্টরিতে যেহেতু বিশেষ জাদুকরী ফাইল রয়েছে, আমাদের সেগুলি পরীক্ষা করার দরকার নেই। বাদ দিন /procডিরেক্টরি:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
ceremcem

2

dmesgসংশোধনযোগ্য চেকসাম ত্রুটির সাথে জড়িত ফাইলগুলি সম্পর্কে বিশদ আপনাকে দেবে। বার্তাগুলি সাধারণত এইরকম দেখায়: "বিটিআরএফএস: দেবের উপর [...] যৌক্তিকভাবে চেকসাম ত্রুটি [...], সেক্টর [...], মূল [...], ইনোড [...], অফসেট [ ...], দৈর্ঘ্য [...], লিঙ্কগুলি [...] (পথ: [...]) "; তথ্যের শেষ অংশটি হ'ল ফাইলটির দুর্গন্ধযুক্ত পথের পরম পথ।


1

আমি এখানে বিটিআরএফএস থেকেও "ভুল সংশোধনযোগ্য ত্রুটি" খুঁজছিলাম। উপরের গ্রেপটি আমার পক্ষে কাজ করেনি; পরিবর্তে আমাকে ব্যবহার করতে হয়েছিল:

$ dmesg | sed -n -r 's#.*BTRFS.*i/o error.*path: (.*)\)#\1#p' | sort -u
somepath/somefile.txt

সাব-ভলিউমের সূচনার সাথে পাথটি কীভাবে আপেক্ষিক তা লক্ষ করুন - এটি কোন সাবভলিউমের মধ্যে রয়েছে তার কোনও ইঙ্গিত নেই This ভাগ্যক্রমে আমার পক্ষে সমস্যা ছিল না।


কী somepath/somefile.txt? দেখে মনে হচ্ছে আপনি এটি একটি পৃথক কমান্ড হিসাবে টাইপ করছেন - বা এটি আপনি যে কমান্ডটি টাইপ করেছেন তা থেকে আউটপুট হয়? যদি এটি সমস্তই একটি কমান্ড লাইন হওয়ার কথা, তবে দয়া করে প্রদর্শনের উদ্দেশ্যে পৃথক কমান্ড লাইনগুলি ভাঙবেন না - কেবল উত্তরটিকে একটি দীর্ঘ লাইন হিসাবে রেখে দিন। কিন্তু এটা কী? আপনি কি দুটি ইনপুট সরবরাহ করছেন sort(একটি পাইপ এবং একটি ফাইল)? বা somepath/somefile.txtএকটি আউটপুট ফাইল হতে বোঝানো হয়? (আউটপুট ফাইলগুলি উল্লেখ করা খুব বেশি সহায়ক নয়, যদি না আপনি যদি আবার ব্যবহার করেন তবে মধ্যবর্তী ফাইল না হয় People লোকেরা কীভাবে ফলাফলগুলি পরিচালনা করতে জানে; উদাহরণস্বরূপ, পাইপ দিয়ে))
স্কট

এটি কি মূল প্রশ্নের উত্তর দেয়? আমি বলতে পারি না।
আমি বলছি মনিকা পুনরায় ইনস্টল করুন

@ তিস্টিআইম্পারসনেটর ওয়েল, এটির (আইএমও) স্পষ্টরূপে মার্কের উত্তরের বিকল্প হিসাবে বোঝানো হয়েছিল এবং এটি আটটি ভোট পেয়েছে (এবং এটি আরারের উত্তরটির সম্প্রসারণ )।
স্কট

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