কীভাবে সাব-ডিরেক্টরিগুলির সংখ্যা লিনাক্সে ড্রাইভ পড়ার / লেখার প্রভাবকে প্রভাবিত করে?


11

আমি একটি লিনাক্স সেন্টস সার্ভারে একটি এক্সটি 3 ফর্ম্যাটযুক্ত ড্রাইভ পেয়েছি। এটি একটি ওয়েব অ্যাপ্লিকেশন ডেটা ড্রাইভ এবং প্রতিটি ব্যবহারকারীর অ্যাকাউন্টের জন্য একটি ডিরেক্টরি রয়েছে (সেখানে 25,000 ব্যবহারকারী রয়েছে)। প্রতিটি ফোল্ডারে এমন ফাইল রয়েছে যা ব্যবহারকারীর দ্বারা আপলোড করা হয়েছে। সামগ্রিকভাবে, এই ড্রাইভে এতে প্রায় 250GB ডেটা রয়েছে।

এই সমস্ত ডিরেক্টরি দিয়ে ড্রাইভের কাঠামো চালনা / লেখার কার্যকারিতা ড্রাইভকে প্রভাবিত করে? এটি সম্পর্কে প্রভাবশালী কিছু অন্যান্য প্রভাব প্রভাবিত করে না?

এভাবে কাঠামোগত করার সাথে অন্তর্নিহিত ভুল বা খারাপ কিছু আছে কি? সম্ভবত কেবল ফাইল সিস্টেমের ভুল পছন্দ?

আমি সম্প্রতি দুটি ডেটা ড্রাইভ মার্জ করার চেষ্টা করেছি এবং বুঝতে পেরেছি যে EXT3 32,000 সাব-ডিরেক্টরিতে সীমাবদ্ধ। এটি আমাকে ভাবছে কেন। এটি নির্বোধ বলে মনে হচ্ছে যে আমি এটি এটি তৈরি করেছি, প্রতিটি ফাইলের একটি অনন্য আইডি রয়েছে যা ডাটাবেসের কোনও আইডির সাথে সম্পর্কিত। হায়রে ...


4
কেন এমন কিছু করতে পারছেন না homes/u/username, homes/j/joeblow,homes/s/somebody,...?
জোরডাচে

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

@ জোরেদাছে এটিকে দরিদ্র মানুষ বি-ট্রি হ্যাশিংয়ের মতো দেখাচ্ছে। তবে এটি ধীর গতির কারণ এটি কার্নেল স্পেসে চলছে না এবং এর জন্য আরও কিছুটা ডিস্ক পড়া দরকার এবং এটি সুষম হতে পারে না। Ext3 এবং ext4 এর এইচটিআর আরও ভাল। আরও দেখুন: ext2.sourceforge.net/2005-ols/paper-html/node3.html
মিরেসিয়া ভুতকোভিচি

আপনার একটি উত্তর চিহ্নিত করা উচিত ...
ew white

উত্তর:


7

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

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


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

6

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

ব্যতীত যখন এটি করে।

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

সংক্ষেপে: আপনি যদি ইতিবাচকভাবে নিশ্চিত হতে পারেন যে কোনও অ্যাপ্লিকেশন (শেল অ্যাক্সেস সহ) কোনও ওয়াইল্ডার্ড ব্যবহার করবে না, তবে আপনি কোনও অনুশোচনা ছাড়াই বিশাল ডিরেক্টরি পেতে পারেন। কোডটিতে লুকিয়ে থাকা যদি কিছু ওয়াইল্ডকার্ড থাকতে পারে তবে প্রতিটি এক হাজারের নীচে ডিরেক্টরি ভাল রাখুন keep

সম্পাদনা করুন :

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

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

উদাহরণস্বরূপ: আসুন আপনার 'foo-000000.txt' নামে একটি মিলিয়ন ফাইলের সাথে 'foo-999999.txt' এবং একটি একক 'নেটালিপোর্টম্যান.জেপিগ' নামে একটি ডিরেক্টরি রয়েছে বলে যাক। এগুলি দ্রুত হবে:

  • ls -l foo-123456.txt
  • open "foo-123456.txt"
  • delete "foo-123456.txt"
  • create "bar-000000.txt"
  • open "natalieportman.jpeg"
  • create "big_report.pdf"

এগুলি ব্যর্থ হবে, তবে দ্রুত ব্যর্থ হবে:

  • ls -l bar-654321.txt
  • open bar-654321.txt
  • delete bar-654321.txt

এগুলি ধীর হয়ে যাবে, এমনকি যদি তারা খুব কম ফলাফলও দেয়; এমনকি যারা ব্যর্থ হয়, সমস্ত এন্ট্রি স্ক্যান করার পরে ব্যর্থ হয়:

  • ls
  • ls foo-1234*.txt
  • delete *.jpeg
  • move natalie* /home/emptydir/
  • move *.tiff /home/seriousphotos/

5

প্রথমে নিশ্চিত করুন যে ext3 পার্টিশনের dir_indexপতাকা সেট রয়েছে।

sudo dumpe2fs /dev/sdaX |grep --color dir_index

যদি এটি অনুপস্থিত থাকে তবে আপনি এটি সক্ষম করতে পারেন। আপনাকে ফাইল সিস্টেমটি আনমাউন্ট করতে হবে, তারপরে চালনা করুন:

sudo tune2fs -O dir_index /dev/sdaX
sudo e2fsck -Df /dev/sdaX

তারপরে ফাইল সিস্টেমটি মাউন্ট করুন।


2

আপনি ডিরেক্টরি সীমা প্রতি ext3 32,000 নাম পর্যন্ত আঘাত না করা পর্যন্ত এটি কোনও পার্থক্য করে না। Ext4 এ আপগ্রেড করা এটিকে প্রায় পেতে পারে, পাশাপাশি ext4 এর অন্যান্য সুবিধাও পেতে পারে।


2

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

আরও ভাল সমাধান হ'ল ডিরেক্টরি হায়ারার্কি তৈরি করা যেমন:

/users/a/aaron/
/users/a/andrew/
/users/b/betty/
/users/b/brian/

এবং যদি আপনার এখনও আরও ভাল পারফরম্যান্সের প্রয়োজন হয় তবে আপনি একাধিক স্তর বাড়াতে পারেন:

/users/a/a/aaron
/users/a/n/anna
/users/a/n/andrew

বেশিরভাগ মেল সিস্টেমগুলি তাদের মেইল ​​সারি ফাইলগুলির সাথে এই কৌশলটি ব্যবহার করে।

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


2

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

আপনি যখন ডিরেক্টরি প্রতি প্রচুর ফাইল পান, ফাইল খোলার সময় ভোগতে শুরু করে। ফাইল I / O দেয় না। ফাইল মোছার সময়টিও ভোগে। যাইহোক, এটি ext4 এ খুব ধীর নয়। যদিও এটি ext3 এর অধীনে বেশ লক্ষণীয়। এক্সএফএস এবং এক্সট 4 এটিতে বেশ দ্রুত।

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

সুতরাং, পরিচালকের দৃষ্টিভঙ্গি থেকে সহায়তা করবে এমন টিলারেলের পরামর্শ ছাড়াও, আমি আপনাকে এক্সট 4 এ আপগ্রেড করতে পরামর্শ দিই। প্রতি ডিরেক্টরি সীমা ext4 সহ 64000 এন্ট্রি

আর একটি সুবিধা হ'ল fsck সময় যথেষ্ট দ্রুত হয়। দুর্নীতির সাথে আমার কোনও সমস্যা হয়নি।

Ext4 সম্পর্কে দুর্দান্ত জিনিসটি হল আপনি চেষ্টা করার জন্য একটি ext3 ভলিউম মাউন্ট করতে পারেন। দেখুন: ext3 থেকে ext4 ফাইল সিস্টেমে একটি লাইভ সিস্টেম স্থানান্তরিত হচ্ছে

এই লিঙ্ক থেকে একটি উদ্ধৃতি:

আপনি যদি ext3 এর সীমাবদ্ধতা দ্বারা প্রভাবিত না হন এবং ঝুঁকি নিতে ইচ্ছুক না হন তবে এটি উপযুক্ত নয়। অন্যদিকে, মাইগ্রেশন প্রক্রিয়াটির সফল সমাপ্তির পরে আপনার সিস্টেমটি দ্রুত সঞ্চালন করতে পারে, ফাইল সিস্টেম সংক্ষিপ্ত করতে পারে এবং কোনও খারাপ প্রভাব ছাড়াই নির্ভরযোগ্যতা বৃদ্ধি করেছে reli

সুতরাং, এগিয়ে যান এবং এটি চেষ্টা করুন। প্রথমে আপনাকে ব্যাকআপ দেওয়ার পরামর্শ দিন।


1

অবশ্যই এটি করার কিছু পরিণতি হতে চলেছে। প্রাথমিকটি আইও পড়তে / লিখতে চলেছে। এর বাইরে, এই ধরণের ডেটা (সেই স্কেল) সাথে ডিল করার এটি কেবল খুব ভয়ঙ্কর একটি উপায়।


একটি কম ভীতিজনক উপায় কি একই ডিরেক্টরিতে সমস্ত ফাইল স্থাপন করা হবে?
টি। ব্রায়ান জোন্স

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

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

আমি যে সমস্যার মুখোমুখি হয়েছি তার বেশিরভাগই দুর্ভাগ্যক্রমে EXT3 ব্যবহার করছে না। আমি মনে করি এটি আপনার প্রথম বাধা হতে পারে।
16:38

ত্রুটিপূর্ণ. একবার একটি ফাইল খোলার পরে এবং একটি ওপেন হ্যান্ডেল ফাইলের I / O প্রাপ্ত করলে কোনও প্রভাব পড়বে না। তবে ফাইল ওপেন টাইম আইএস প্রভাবিত করে।
ম্যাট

1

অতীতে, আমি সাফল্যের সাথে এক্সট 3 এর সীমাটি পেতে এক্সএফএস ব্যবহার করেছি।

ফাইল সিস্টেম সামগ্রীর প্রথম তালিকাটিতে সিস্টেমটি সমস্ত ডিরেক্টরি / ফাইলের তথ্য না পড়ার সময় নেবে। পরিপূরক ক্রিয়াকলাপগুলি দ্রুত হবে কারণ কার্নেলের কাছে এখন তথ্য ক্যাশে রয়েছে।

ক্যাশে সচল রাখতে নিয়মিতভাবে ক্রোনগুলিতে অ্যাডমিনরা 'ফাইন্ড / সাম্পাথ 2> & 1> / dev / নাল' চালিত দেখেছি, যার ফলে আরও ভাল পারফরম্যান্স হতে পারে।


1

আমার কিছু প্রশ্ন এবং কিছু সম্ভাব্য বাধা আবিষ্কার রয়েছে।

প্রথমত, এটি কি সেন্টোস 5 বা 6 সিস্টেম? কারণ 6-এ, আমাদের কাছে ব্লকট্রেস নামে একটি অবিশ্বাস্য সরঞ্জাম রয়েছে যা এই ধরণের পরিস্থিতিতে প্রভাব পরিমাপের জন্য আদর্শ।

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/ch06s03.html

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

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

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

একটি বাস্তব বিশ্বের উদাহরণের কথা বলতে গিয়ে আমি সম্প্রতি দেখেছি যে খুব নেস্টেড এক্সট্রিশিয়াল এফএসে প্রথমবারের জন্য একটি সাবডির তৈরি করতে প্রায় 20 সেকেন্ড সময় লাগছে যখন এক্সট 4 এ এটি প্রায় 4 সেকেন্ড সময় নিচ্ছে। এটি কারণ যেভাবে ব্লক বরাদ্দটি বিভিন্ন ফাইল সিস্টেমে কাঠামোগত হয়। আপনি যদি এক্সএফএস বা এক্সট 4 ব্যবহার করেন তবে এটি কিছুটা বলাই বাহুল্য যে আপনি কিছুটা পারফরম্যান্সের উত্সাহ পাবেন, তবে এটি ন্যূনতম হতে পারে।

সুতরাং, আপনি যদি কেবল ফাইলসিস্টেমের সঠিক পছন্দটি জিজ্ঞাসা করছেন তবে ext3 কিছুটা পুরানো। কেবলমাত্র আমি ডেটা এবং বেঞ্চমার্ক ছাড়াই অফার করতে পারি।


0

এটি CentOS 5 এ বিকল্প নয়, এবং এটি CentOS 6 এ কতটা বিকল্প তা নিশ্চিত নয়, তবে আমার মনে মনে মনে হয় যে একটি বি ট্রি বা বি * ট্রি ভিত্তিক সমাধান যেমন বিটিআরএফএস আপনার সামঞ্জস্যপূর্ণরূপে আরও ভাল পারফরম্যান্স না দিলে সামঞ্জস্যতা সরবরাহ করবে would দৃশ্যাবলী, যদি কেবলমাত্র কেউই এর মূল্যবান ডেটা স্পষ্ট বিবেক দ্বারা অর্পণ করতে পারে (আমি এখনও তা করব না)।

আপনি যদি সামর্থ্য করতে পারেন, আপনি এটি পরীক্ষা করতে পারে।

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