একটি বিশাল ডিরেক্টরি গাছে একটি rm -rf করতে কয়েক ঘন্টা সময় লাগে


20

আমরা ব্যাকআপগুলির জন্য আরএসএন্যাপশট ব্যবহার করছি। এটি ব্যাকআপ আপ ফাইলটির প্রচুর স্ন্যাপশট রাখে তবে এটি পুরানোগুলি মুছবে। এটা ভাল. তবে এটি rm -rfএকটি বিশাল ডিরেক্টরি গাছের জন্য প্রায় 7 ঘন্টা সময় নেয় । ফাইল সিস্টেমটি এক্সএফএস। আমি নিশ্চিত না যে সেখানে কতগুলি ফাইল রয়েছে তবে সম্ভবত এটি মিলিয়নে সংখ্যা।

এটির গতি বাড়ানোর উপায় আছে কি? এমন কোনও আদেশ আছে যা rm -rfঘন্টার পর ঘন্টা সময় নেয় না?


1
আমি ব্যবহার করেছি find . -delete -name directoryএবং এটি এর চেয়ে অনেক বেশি দ্রুত rm -rf
পাওলো

উত্তর:


38

না।

rm -rfunlink()প্রতিটি ফাইলকে কল করে আপনার ফাইল সিস্টেমের পুনরাবৃত্তির গভীরতা-প্রথম ট্র্যাভারসাল করে। প্রক্রিয়াটি ধীরে ধীরে যেতে পারে এমন দুটি অপারেশন হ'ল opendir()/ readdir()এবং unlink()opendir()এবং readdir()ডিরেক্টরি ফাইলের সংখ্যা উপর নির্ভরশীল। unlink()ফাইলটি মোছার আকারের উপর নির্ভরশীল। এটিকে দ্রুত করার একমাত্র উপায় হ'ল হয় ফাইলের আকার এবং সংখ্যা হ্রাস করা (যা আমার সন্দেহ হয় যে সম্ভবত না) বা সেই অপারেশনগুলির জন্য আরও ভাল বৈশিষ্ট্যযুক্ত ফাইল সিস্টেমটিকে একটিতে পরিবর্তন করা। আমি বিশ্বাস করি যে বড় ফাইলগুলিতে আনইলিংক () এর জন্য এক্সএফএস ভাল তবে বড় ডিরেক্টরি স্ট্রাকচারের পক্ষে তেমন ভাল নয়। আপনি খুঁজে পেতে পারেন যে ext3 + dirindex বা পুনরায় অসম্পূর্ণতা দ্রুত। আমি জেএফএসের ভাড়া কতটা ঠিক তা নিশ্চিত নই, তবে আমি নিশ্চিত যে বিভিন্ন ফাইল সিস্টেমের পারফরম্যান্সের প্রচুর মানদণ্ড রয়েছে।

সম্পাদনা: মনে হচ্ছে গাছগুলি মুছে ফেলার ক্ষেত্রে এক্সএফএস ভয়ঙ্কর , তাই অবশ্যই আপনার ফাইল সিস্টেমটি পরিবর্তন করুন।


1
কিছু বছর আগে আমি একই ব্যবহারের ক্ষেত্রে রিসফারফ ব্যবহার করে ভয়ানক পারফরম্যান্স লক্ষ্য করেছি।
নভে

1
দুর্দান্ত পোস্ট!
wzzrd

2
এটি প্রায় ঠিক "না" বলেছিল :)
ডেভিড প্যাশলে

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

@ কামিলকিসিল আপনি সঠিকভাবে বলছেন unlinkযে প্রকৃত বিষয়বস্তুতে কিছুই করতে হবে না কেবল একটি unlinkসিস্টেম কল করার জন্য, ফাইল সিস্টেমের কোডটি সত্ত্বেও যদি সরানো লিঙ্কটি ফাইলটির শেষটি হয় এবং এটি বর্তমানে খোলা না থাকে তবে আরও কাজ করতে হবে। এটি অবশ্যই ফাইল সিস্টেম নির্ভর করে তবে মুছে ফেলা ফাইলটি বিশাল হলে তখন খুব স্পষ্টতই পার্থক্য হতে পারে।
jlliagre

22

বিকল্প হিসাবে ডিরেক্টরিটি অন্যদিকে সরিয়ে নিয়ে যান, একই নাম, অনুমতি এবং মালিকানা দিয়ে এটি পুনরায় তৈরি করুন এবং যে ডিরেক্টরি অ্যাপ্লিকেশন / পরিষেবাদিগুলি সেই ডিরেক্টরি সম্পর্কে যত্নবান তা পুনরায় চালু করুন।

তারপরে আপনি প্রসারিত আউটেজ সম্পর্কে চিন্তা না করে পটভূমিতে মূল ডিরেক্টরিটি "দুর্দান্ত আরএম" করতে পারেন।


এটি কাজ করতে পারে, যেহেতু এমভি খুব দ্রুত হয়।
রোরি

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

7

আপনার কাছে এক্সএফএসের জন্য সঠিক মাউন্ট অপশন সেট রয়েছে তা নিশ্চিত করুন।

-Ologbufs = 8 ব্যবহার করে, এক্সএফএসের সাহায্যে লগবাইজ = 256k সম্ভবত আপনার মোছার কার্যকারিতা ত্রিগুণ করবে।


2
এই টিপটির জন্য +1 ... অন্যরকম পারফরম্যান্স বৃদ্ধির জন্য অলস কাউন্টারগুলিও সক্ষম করা উচিত।
হুরিখান 77

1
এই সেটিংস সম্পর্কে কিছু ব্যাখ্যা ভবিষ্যতের পাঠকদের জন্য সহায়ক হবে।
অ্যারন রট্টিভেল

5

আপনি যদি ফাইল পর্যায়ে কার্যকরভাবে আরএম করে থাকেন তবে এটি একটি দীর্ঘ সময় নিতে পারে। এই কারণেই ব্লক ভিত্তিক স্ন্যাপশটগুলি এত ভাল :)।

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


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

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

টিপটি ওয়ার্ক লোডকে বিভক্ত করতে ও সমান্তরাল করার জন্য +1: এক্সএফএস সমান্তরাল কাজের চাপের উপর তার শক্তি খেলায়।
হুরিখান 77

5

আইও-নিবিড় ক্রিয়াকলাপগুলির জন্য আইওনিস ব্যবহার করা ভাল যেমন ফাইল সিস্টেম ব্যবহার ছাড়াই।
আমি এই আদেশটি সুপারিশ করছি:

ionice -n7 সুন্দর আরএম -fr dir_name

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


2

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

জার্গসের জায়গায় http://savannah.nongnu.org/ প্রকল্পগুলি / সমান্তরাল / সমান্তরাল ব্যবহার করা যেতে পারে

সুতরাং যদি আপনার সমস্ত ফাইলটি ডেলটেডির মধ্যে মুছে ফেলা হয়

find -t f deletedir | parallel -j 10 rm

এটি আপনাকে মুছে ফেলার জন্য কেবল খালি ডিরেক্টরি কাঠামো রেখে দেয়।

দ্রষ্টব্য: আপনি সম্ভবত উপরে উল্লিখিত হিসাবে ফাইল সিস্টেমের সীমাবদ্ধতাকে আঘাত করবেন।


সমান্তরাল ওভার xargs ব্যবহারের সুবিধা কী?
রোরি

1

এখানে বিকল্প বিকল্পটি কি এমনভাবে ডেটা আলাদা করতে হবে যাতে আপনি আরএম করার পরিবর্তে প্রকৃত ফাইল সিস্টেমটি জঞ্জাল এবং পুনর্নির্মাণ করতে পারেন?


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

0

কমান্ডের কমনীয়তা হ্রাস সম্পর্কে? ভালো লেগেছে:

nice -20 rm -rf /path/to/dir/

5
আমি বলব যে বাধাটি সময়সূচী নয়, এটি ফাইল সিস্টেম।
ম্যানুয়েল ফক্স

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