জেডএফএস স্ক্রাব * সম্পূর্ণ * হলে কমান্ড কিভাবে চালানো যায়?


11

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

প্রথম অংশটি সহজ: zpool scrub $POOLআমার নির্দিষ্ট পরিস্থিতিতে যেটি বিরতি যুক্তিসঙ্গত হবে তার মূল হিসাবে চালানোর জন্য কেবল একটি ক্রোন জব সেট করুন ।

দ্বিতীয় অংশ, আমি কীভাবে করব তা সম্পর্কে নিশ্চিত নই। zpool scrubতত্ক্ষণাত্ ফিরে আসে এবং তারপরে স্ক্রাবটি সিস্টেমের পটভূমিতে চালিত হয় (এটি অবশ্যই আকাঙ্ক্ষিত আচরণ যদি কোনও টার্মিনাল থেকে প্রশাসক দ্বারা স্ক্রাব শুরু করা হয়)। zpool statusআমাকে একটি স্ট্যাটাস রিপোর্ট দেয় এবং প্রস্থান করে (স্ক্রাব চলাকালীন প্রস্থান কোড 0 সহ; এটি এখনও শেষ হয়নি তাই আমি জানি না প্রস্থান স্থিতিটি শেষ হয়ে গেলে এটি পরিবর্তন হয় কিনা তবে আমি সন্দেহ করি)। Zpool স্ক্রাবের জন্য নথিভুক্ত একমাত্র পরামিতি হ'ল -s"স্ক্রাবিং বন্ধ করুন"।

মূল সমস্যাটি স্ক্রাবিং থেকে সমাপ্ত স্ক্রাবিং-এ স্থিতির পরিবর্তন সনাক্তকরণ । দেওয়া হল, বাকী জায়গা উচিত।

আদর্শভাবে, আমি zpool scrubস্ক্রাব শেষ না হওয়া অবধি ফিরে না আসতে বলতে চাই , তবে এটি করার কোনও উপায় আমি দেখতে পাচ্ছি না। (এটি কেবল ক্রোন করা প্রায় সহজ করে তুলবে zpool scrub --wait-until-done $POOL; zpool status $POOL।)

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

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

উত্তর:


13

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

যে কোনও ফাইলের নামের সাথে শেল স্ক্রিপ্ট তৈরি করুন যা দিয়ে শুরু হয় /etc/zfs/zed.d/scrub.finish(উদাহরণস্বরূপ, scrub.finish-custom.sh)। এই স্ক্রিপ্টটি কোনও উপযুক্ত পদক্ষেপ নিতে পারে যেমন ইমেল প্রেরণ, কোথাও লগ এন্ট্রি লেখা বা সিস্টেমকে গাওয়া এবং নাচ করা (ঠিক আছে, সম্ভবত তা নয়)। উদাহরণগুলি প্রদান করা হয় যা একটি সূচনা পয়েন্ট সরবরাহ করতে পারে।

যদি আপনি চান সমস্ত যদি স্ক্রাবটি সম্পূর্ণ হয় তখন একটি ইমেল গ্রহণ করা হয়, সরবরাহিত scrub.finish-email.shস্ক্রিপ্টটি দুর্দান্তভাবে এটি করবে। ইমেলটি কোথায় প্রেরণ করা উচিত এবং পুলটি যদি কোনও সমস্যায় না পড়ে তবে কোনও ইমেলও প্রেরণ করা উচিত কিনা তা নির্দেশ করতে কেবল /etc/zfs/zed.d/zed.rc সম্পাদনা করুন scrub.finish/ /zfs/zed.d এটির দিকে নিয়ে যায় এবং নিশ্চিত করুন যে বুটটি জেডটি শুরু হয়েছে।



3

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

আপনি syseventadmকার্নেল ইভেন্টগুলি নিবন্ধ করতে ব্যবহার করতে পারেন । সম্পূর্ণ তালিকাটি পাওয়া যাবে /usr/include/sys/sysevent/eventdefs.h(এই ফাইলটিতে কেবল "জেডএফএস" অনুসন্ধান করুন)। ইভেন্টগুলি যুক্ত করার পরে পরিষেবাটি আবার শুরু করতে হবে, উদাহরণস্বরূপ:

syseventadm add -c EC_zfs -s ESC_ZFS_scrub_finish /path/to/script.sh \$pool_name
syseventadm restart

এইভাবে, কোনও পুলের কোনও স্ক্রাবিং শেষ হয়ে গেলে স্ক্রিপ্টটি শুরু হবে - $1আপনার পছন্দসই পুলের নামের সমান হলে আপনাকে স্ক্রিপ্টের ভিতরে পরীক্ষা করতে হবে । এখনও, এটি ভোট দেওয়ার চেয়ে ওভারহেডের চেয়ে কম।


2

আমি ইমেল দ্বারা স্থিতি প্রতিবেদন স্ক্রাবিং জন্য এই সহজ স্ক্রিপ্ট ব্যবহার।

আপনার যদি রূপান্তরটি সনাক্ত scrub runningকরতে হয় তবে scrub finishedআমি আউটপুটের stateক্ষেত্রটি পরীক্ষা করব zpool status। এটার মতো কিছু:

# start scrubbing 
zpool scrub ZPOOL

# wait till scrub is finished
while zpool status ZPOOL | grep 'scan:  *scrub in progress' > /dev/null; do
   echo -n '.'
   sleep 10
done

# send a report
zpool status | mail -s "zpool status: ZPOOL" RECIPIENT

আমি কোডটি দেখেছি, তবে মনে হচ্ছে এটি স্ক্রিপ্টটি চালিত হলেই আপনাকে স্থিতি দেয়। "স্ক্রাবিং" থেকে "সমাপ্ত" এ যাওয়ার পরে এটি কীভাবে আমাকে জানাবে?
একটি সিভিএন

@ মাইকেলKjörling স্ক্রিপ্টটি ততক্ষণ শেষ হবে না যতক্ষণ না while ... doneএই খুব শর্তের জন্য লুপ চেক করার কারণে স্ক্রাবটি চলছে ।
দ্য ওয়াবিট

আমার মনে হয় এরকম কিছু আমি এভাবে যাব। যাইহোক, আপনার grep -qসেই শেল স্ক্রিপ্ট স্নিপেটেও পাশাপাশি কাজ করা উচিত , / dev / null এ পুনঃনির্দেশ করার প্রয়োজনকে উপেক্ষা করে। :)
একটি সিভিএন

হ্যাঁ, আমি এটি পোলিক্স গ্রেপ দিয়ে সোলারিস 10 এ পরীক্ষা করেছি যার এই বিকল্পটির অভাব রয়েছে।
dsmsk80

আহ, ঠিক আছে. যদিও GNU গ্রেপ-এর পছন্দসই শব্দার্থক শব্দ রয়েছে q
একটি সিভিএন

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