ম্যাক ওএস এক্সে ডিরেক্টরিতে অনেক ফাইল থাকার কোনও সীমাবদ্ধতা?


9

আমার ম্যাকোস এক্স-এর একটি ডিরেক্টরিতে আমার কাছে 100,000+ ফাইল রয়েছে এবং আমার স্ক্রিপ্টের মধ্যে সেগুলিতে কোনও ফাইল পড়া ধীর গতিতে দেখায়।

এতগুলি ফাইল থাকার কোনও সীমাবদ্ধতা বা প্রস্তাবনা আছে কি? আমি তাদের কিছু ডিরেক্টরি বিভক্ত করা উচিত?

সীমাবদ্ধতাটি আমি খুঁজে পেয়েছি যে আমি mv * fooসমস্ত 100,000 ফাইলের জন্য পারি না । এটি একটি ত্রুটি দেখায়, "খুব দীর্ঘ যুক্তি" বলে। এটি প্রায় 20,000 এরও কম ফাইলের সাথে কাজ করে।


বর্তমানে আমার কাছে একটি ডিরেক্টরিতে 380,000 ফাইল রয়েছে এবং বুঝতে পারি যে কোনও ফাইল খোলার জন্যও 10+ সেকেন্ড সময় লাগে। আমি এগুলি কিছু ডিরেক্টরিতে আলাদা করার সিদ্ধান্ত নিয়েছি।
দাইসুকি মধু

1
খুব বেশি ঝামেলা ছাড়াই এইচএফএস + ফাইল সিস্টেমের পুরো নাম দিয়ে একটি ডিরেক্টরিতে প্রচুর পরিমাণে ফাইল সংরক্ষণ এবং অ্যাক্সেস করতে সক্ষম হওয়া উচিত। তবে আপনার ওয়াইল্ডকার্ড সহ নজর রাখা দরকার। আপনি যখন কোনও কমান্ডের সাথে যুক্তি *বা ?অংশ হিসাবে ব্যবহার করেন, অপারেটিং সিস্টেম ফাইলগুলি (স্লো) মেলানোর জন্য পুরো ডিরেক্টরিটি অনুসন্ধান করে এবং তারপরে এটি আপনার যুক্তিটির পরিবর্তে প্রতিটি মিলে যাওয়া ফাইল (দীর্ঘ) এর একটি তালিকা দিয়ে প্রতিস্থাপন করে, যা এটি পরে প্রবেশ করে কমান্ড। আপনি একটি লুপ বা বিভিন্ন এমভি কমান্ড, উদাহরণস্বরূপ, দিয়ে আরও ভাল করতে পারেন mv a* foo && mv b* foo
ম্যাথিয়াস ফ্রিপ্প

উত্তর:


1

এই স্ট্যাক ওভারফ্লো উত্তর এবং অ্যাপলের সাইটে নির্দিষ্ট বিবরণ অনুসারে , একটি পৃথক ফোল্ডারে ২.১ বিলিয়ন আইটেম থাকতে পারে।

এটি বলেছিল যে এটি কেবল ২.১ বিলিয়ন আইটেম ধরে রাখতে পারে তার অর্থ এই নয় যে এটি স্তরটিতে পারফরম্যান্স বজায় রাখতে পারে। উইকিপিডিয়া অনুসারে ; জোর আমার:

ক্যাটালগ ফাইল, যা একটি ফাইলের সমস্ত ফাইল এবং ডিরেক্টরি রেকর্ড একক ডেটা কাঠামোয় সংরক্ষণ করে, ফলাফল যখন সিস্টেম মাল্টিটাস্কিংয়ের অনুমতি দেয় তখন কার্যক্ষমতায় সমস্যা দেখা দেয়, কারণ এক সময় কেবলমাত্র একটি প্রোগ্রাম এই কাঠামোটিতে লিখতে পারে, যার অর্থ অনেকগুলি প্রোগ্রাম সারিবদ্ধভাবে অপেক্ষা করতে পারে একটি প্রোগ্রাম সিস্টেম "হগিং" এর কারণে। এটি একটি গুরুতর নির্ভরযোগ্যতা উদ্বেগ, কারণ এই ফাইলটির ক্ষতি পুরো ফাইল সিস্টেমকে ধ্বংস করতে পারে।

সুতরাং ক্যাটালগ ফাইলটি একবারে কেবল একটি প্রোগ্রামের মাধ্যমেই ব্যবহৃত হতে পারে তার জন্য পারফরম্যান্সটি স্বাভাবিকভাবে অবনমিত হয়। এবং যদি ডিরেক্টরিটি আকারে বড় হয় তবে সেই সমস্যাটি দ্বারা সৃষ্ট ঝুঁকি / অবনতি কেবল বাড়বে; আরও ফাইলগুলির অর্থ প্রোগ্রামগুলির সেই এক ডিরেক্টরিতে ফাইল অ্যাক্সেস করার সুযোগের আরও বেশি অর্থ। এখানে এই ধারণার আরও নিশ্চিতকরণ ; আবার জোর আমার:

ক্যাটালগ ফাইলটি একটি জটিল কাঠামো। যেহেতু এটি সমস্ত ফাইল এবং ডিরেক্টরি সম্পর্কিত তথ্য রাখে, এটি ফাইল সিস্টেমের সিরিয়ালাইজেশনকে বাধ্য করে — যখন একটি বড় সংখ্যক থ্রেড থাকে যখন I / O ফাইল সম্পাদন করতে চায়। এইচএফএসে, যে কোনও অপারেশন যা কোনও ফাইল তৈরি করে বা কোনওভাবেই কোনও ফাইল সংশোধন করে তা ক্যাটালগ ফাইলটি লক করতে হয়, যা অন্যান্য থ্রেডগুলি এমনকি ক্যাটালগ ফাইলটিতে কেবল পঠনযোগ্য অ্যাক্সেস থেকে বাধা দেয়। ক্যাটালগ ফাইলে অ্যাক্সেস অবশ্যই একক লেখক / মাল্টিড্রেডার হতে হবে।


অনেক ধন্যবাদ. আমি বুঝতে পারি ক্যাটালগ ফাইলটিতে অ্যাক্সেস বাধা হয়ে দাঁড়াবে এবং এটি বিশেষত মাল্টিটাস্কিংয়ের জন্য গুরুতর পারফরম্যান্স সমস্যার কারণ হতে পারে।
ডাইসুকি মধু

@ ডাইসুকিহানী আপনাকে স্বাগতম! সুতরাং আপনি যদি আমার উত্তরটি সহায়ক বলে মনে করেন তবে দয়া করে এটির জন্য ভোট দিন। এবং যদি এটি উত্তর হয়ে থাকে যা আপনার সমস্যার সমাধান করেছে তবে দয়া করে এটিকে পরীক্ষা করে দেখুন।
জ্যাকগল্ড

হ্যাঁ, অবশ্যই আমি আপনার উত্তরটি ভোট দিচ্ছি এবং এটি বন্ধ করে দেব। আবার, অনেক ধন্যবাদ।
ডাইসুকি হানি

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

@ পুলি প্রশ্নটি একটি ফাইল সিস্টেমের মধ্যে উপস্থিত প্রতিটি ডিরেক্টরি সম্পর্কে। ফাইল সিস্টেম প্রতি ক্যাটালগ ফাইল বিদ্যমান তবে ডিরেক্টরি নিজেই একই ফাইল সিস্টেমে বিদ্যমান। এটি একটি একক ফাইল সিস্টেমে বিদ্যমান একটি ডিরেক্টরিতে 10,000+ ফাইলের সাথে সম্পর্কিত একটি প্রশ্নের সাথে সম্পর্কিত। তবে এই প্রশ্নটি 2+ বছর পুরানো, সুতরাং উইকি লিঙ্কটির জন্য আপনাকে ধন্যবাদ। আমি নতুন উত্তরটি পাশাপাশি প্রশ্নের মধ্যে একটি সরাসরি লিঙ্ক অন্তর্ভুক্ত করার জন্য আমার উত্তর আপডেট করেছি।
জ্যাকগল্ড

4

সংক্ষিপ্ত উত্তর: আচ্ছা, আপনি যদি ১০০,০০০ ফাইল পড়ছেন তবে আমি স্ক্রিপ্টটি ধীর হবে বলে আশা করতে পারি।

দীর্ঘ উত্তর: এই প্রশ্নের আরও ভালভাবে উত্তর দেওয়ার জন্য আপনাকে একটি ম্যাকের ফাইল সিস্টেমটি দেখতে হবে। ম্যাক্স এইচএফএস + ( হাইয়ারালিকাল ফাইল সিস্টেম প্লাস ) ব্যবহার করে যা একটি আধুনিক ফাইল সিস্টেম যার সীমাবদ্ধতা রয়েছে তবে কেবলমাত্র চরম পরিস্থিতিতে।

আমার অভিজ্ঞতা থেকে, এটি অনেকটা লিনাক্স এক্সটি জার্নালিং ফাইল সিস্টেমের মতো। এটি মাউন্টিং ডিরেক্টরিগুলি, ইউনিক্স-মতো অনুমতি ইত্যাদিকে সমর্থন করে It এটি 32-বিট ফর্ম্যাটে ফাইলগুলিকে সম্বোধন করে, এই উত্স অনুসারে সর্বাধিক সংখ্যক ফাইল যা 4,294,967,295 খণ্ডে সংরক্ষণ করা যায় ।

ফাইল সিস্টেমটি আধুনিক সিস্টেমে 8 ইবির চেয়ে বড় ফাইল এবং 2.1 বিলিয়ন পর্যন্ত ফাইল এবং ফোল্ডারগুলির এক জায়গায় যেমন এখানে উল্লেখ করা হয়েছে তার সাথে ফাইল ভাঙ্গতে শুরু করে ।

এইচএফএস + — বা সত্যিই যে কোনও ফাইল সিস্টেম সে ক্ষেত্রে সেটআপ করা হচ্ছে Give ফোল্ডারে প্রচুর ফাইল থাকার ফলে 'অদ্ভুত' কিছু করা উচিত নয়।

সত্যিই, আমি মনে করি না যে আরও জটিল ফোল্ডার স্তরক্রম জুড়ে ফাইলগুলি বিতরণ করার কোনও পারফরম্যান্স উন্নতি হবে। প্রকৃতপক্ষে, এই কৌশলটি কম দক্ষ হতে পারে কারণ আপনার স্ক্রিপ্টে ডিরেক্টরিগুলি মিড-প্রক্রিয়া পরিবর্তনের জন্য কল করতে হবে।


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

@ ডাইসুকিহোনি আপনি যদি অনেকগুলি ফাইল নিয়ে কাজ করছেন তবে আপনি ডিরেক্টরিগুলিতে জিনিসগুলি বিভক্ত করতে পারবেন কিনা তা দেখার পক্ষে উপযুক্ত হবে। এই পর্যায়ে করা কঠিন হতে পারে তবে সামনের দিকে কিছুটা স্থিতিশীল করে তুলতে পারে।
জ্যাকগল্ড

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