এনটিএফএস কর্মক্ষমতা এবং ফাইল এবং ডিরেক্টরিগুলির বৃহত পরিমাণে


183

এনটিএফএস সহ উইন্ডোজ কীভাবে ফাইল এবং ডিরেক্টরিগুলির বৃহত পরিমাণে সঞ্চালন করে?

পারফরম্যান্স সমস্যা বা অন্যান্য সমস্যাগুলি চালানোর আগে আপনি কোনও একক ডিরেক্টরিতে রাখতে পারেন এমন কোনও ফাইল বা ডিরেক্টরিগুলির সীমা সম্পর্কে কোন গাইডেন্স রয়েছে?

উদাহরণস্বরূপ, এর ভিতরে 100,000 ফোল্ডার সহ একটি ফোল্ডার রয়েছে কী করা ঠিক আছে?



সম্পর্কিত প্রশ্নের উত্তরগুলি এখানে গৃহীত উত্তরের চেয়ে নিকৃষ্টতম।
এরিক জে।

এই বাস্তবায়নটি কার্যকর হতে পারে: github.com/acrobit/AroroFS
ঘোমিনেজাদ

উত্তর:


271

এমন এক পরিবেশের সাথে কারও কাছ থেকে কিছু পরামর্শ দেওয়া হয়েছে যেখানে আমাদের কয়েক মিলিয়ন ফাইল রয়েছে এমন ফোল্ডার রয়েছে।

  1. একটি ফোল্ডার একটি সূচক ফাইলে সূচক তথ্য (শিশু ফাইল এবং শিশু ফোল্ডারের লিঙ্ক) সঞ্চয় করে। আপনার প্রচুর বাচ্চা পড়লে এই ফাইলটি খুব বড় হবে। মনে রাখবেন যে এটি কোনও ফোল্ডার এবং একটি ফাইল যে শিশু একটি সন্তানের মধ্যে পার্থক্য করে না। কেবলমাত্র পার্থক্য হ'ল সেই সন্তানের সামগ্রীটি হ'ল হয় সন্তানের ফোল্ডার সূচক বা সন্তানের ফাইল ডেটা। দ্রষ্টব্য: আমি এটিকে কিছুটা সহজ করছি তবে এটি পয়েন্টটি পেয়ে যায়।
  2. সূচি ফাইলটি খণ্ডিত হয়ে যাবে। যখন এটি খুব খণ্ডিত হয়ে যায়, আপনি সেই ফোল্ডারে ফাইল যুক্ত করতে পারবেন না। এর কারণ এটি অনুমোদিত যে খণ্ডগুলিতে # এর সীমা রয়েছে। এটি নকশা দ্বারা। আমি একটি সমর্থন ঘটনা কল মাইক্রোসফ্ট সঙ্গে এটি নিশ্চিত করেছি। সুতরাং আপনি যদি একটি ফোল্ডারে ফাইলের সংখ্যার তাত্ত্বিক সীমাটি কয়েক বিলিয়ন হতে পারেন তবে সৌভাগ্য যখন আপনি দশ মিলিয়ন ফাইল হিট শুরু করেন আপনি প্রথমে খণ্ডন সীমাবদ্ধতার সাথে আঘাত হানবেন।
  3. যদিও সব খারাপ হয় না। আপনি এই সূচকটি ডিফ্র্যাগমেন্ট করতে সরঞ্জাম: contig.exe ব্যবহার করতে পারেন । এটি সূচকের আকার হ্রাস করবে না (যা কয়েক মিলিয়ন ফাইলের জন্য কয়েকটি জিগ পর্যন্ত পৌঁছতে পারে) তবে আপনি # খণ্ডের পরিমাণ হ্রাস করতে পারবেন। দ্রষ্টব্য: ডিস্ক ডিফ্র্যাগমেন্ট সরঞ্জাম ফোল্ডারের সূচকে ডিফ্র্যাগ করবে না। এটি ফাইলের ডেটা ডিফ্র্যাগ করবে। কেবল কনটেইগ.এক্সই সরঞ্জাম সূচকে ডিফ্র্যাগ করবে। এফওয়াইআই: আপনি এটি কোনও পৃথক ফাইলের ডেটা ডিগ্র্যাগ করতেও ব্যবহার করতে পারেন।
  4. আপনি যদি ডিফ্র্যাগ করেন, আপনি যতক্ষণ না খণ্ড খণ্ডের সর্বাধিক # টি আঘাত করবেন ততক্ষণ অপেক্ষা করবেন না। আমার একটি ফোল্ডার রয়েছে যেখানে আমি ডিফ্র্যাগ করতে পারি না কারণ আমি অনেক দেরি না হওয়া পর্যন্ত অপেক্ষা করেছি। আমার পরের পরীক্ষাটি হ'ল সেই ফোল্ডারটির বাইরে থেকে কিছু ফাইল অন্য ফোল্ডারে স্থানান্তরিত করার চেষ্টা করা হয় তা দেখার জন্য যদি আমি তখন এটি ডিফ্র্যাগ করতে পারি। যদি এটি ব্যর্থ হয়, তবে আমাকে যা করতে হবে তা হল 1) একটি নতুন ফোল্ডার তৈরি করুন। 2) নতুন ফোল্ডারে ফাইলগুলির একটি ব্যাচ সরান। 3) নতুন ফোল্ডারটি ডিফ্র্যাগ করুন। এটি সম্পন্ন না হওয়া পর্যন্ত # 2 & # 3 পুনরাবৃত্তি করুন এবং তারপরে 4) পুরানো ফোল্ডারটি সরিয়ে পুরানোটির সাথে মেলে নতুন ফোল্ডারটির নামকরণ করুন।

আপনার প্রশ্নের আরও সরাসরি জবাব দেওয়ার জন্য: আপনি যদি 100 কে এন্ট্রি খুঁজছেন তবে কোনও উদ্বেগ নেই। নিজেকে ছিটকে যাও। আপনি যদি কয়েক মিলিয়ন এন্ট্রি খুঁজছেন, তবে হয়:

ক) এগুলিকে সাব-ফোল্ডারে উপ-বিভক্ত করার পরিকল্পনা করুন (উদাহরণস্বরূপ, আপনার 100M ফাইল রয়েছে বলে ধরুন them তাদের 1000 ফোল্ডারে সংরক্ষণ করা ভাল, যাতে আপনার ফোল্ডারে প্রতি 1 টি বড় ফোল্ডারে সংরক্ষণ করার চেয়ে কেবল 100,000 ফাইল থাকে This এটি একক বড় একের পরিবর্তে 1000 ফোল্ডার সূচক তৈরি করবে যা খণ্ডের সীমাতে সর্বাধিক # হিট হওয়ার সম্ভাবনা বেশি

খ) আপনার বড় ফোল্ডারের সূচককে অস্বীকার করার জন্য নিয়মিত কন্টিগ.এক্সই চালানোর পরিকল্পনা করুন।

বিরক্ত হলেই নীচে পড়ুন।

আসল সীমাটি খণ্ডের # তে নয়, তবে পয়েন্টারগুলিকে খণ্ডটিতে সংরক্ষণ করে এমন ডেটা বিভাগের রেকর্ডের সংখ্যার উপর।

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


5
আমি আরও কোথা থেকে এই তথ্য পেতে পারি contig.exeতা আমার সার্ভারে নেই। একটি গুগল অনুসন্ধান এই টেকনেট পৃষ্ঠাটি ফিরিয়ে দিয়েছে যার সাব-ডিরেক্টরি বা ফোল্ডার সূচক ডিফ্র্যাগমেন্টের কোনও উল্লেখ নেই।
ইভান ক্যারল

35
আমি মাইক্রোসফ্ট ইঞ্জিনিয়ারের সাথে প্রযুক্তি কল থেকে কন্টিগ এবং ফোল্ডার সূচক বিভাজন সম্পর্কে জানতে পেরেছি। টেক সাপোর্টের 1-3 টি স্তরগুলি তাদের অকেজো স্তরের মধ্য দিয়ে যেতে বাটটিতে এটি একটি বিশাল ব্যথা। (আহ ... আপনি কি chkdsk চালানোর চেষ্টা করেছেন? আপনি উইন্ডোজ এক্সপ্লোরারে ফোল্ডারটি খোলার চেষ্টা করতে পারেন? আপনি ফোল্ডারের অনুমতিগুলি পরীক্ষা করতে পারেন?) ফওল! আমি এখানে 7 দিনের জন্য বসে থাকব না আপনার লক্ষ্মী chkdsk এর জন্য কয়েক মিলিয়ন ফাইল দিয়ে ড্রাইভ স্ক্যান করার অপেক্ষায় !!
MrB

5
@ ss2k - কেবল contig.exeএকটি ডিরেক্টরিতে নির্দেশ করুন , আমি মনে করি এটি কাজটি করবে: contig -a .দেয়:C:\temp\viele-Dateien is in 411 fragments Summary: Number of files processed : 1 Average fragmentation : 411 frags/file
লুমি

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

1
সূচককে অবজ্ঞা করার জন্য কন্টিগ চালানোর ক্ষেত্রে, আমার কি চালানো উচিত c:\my\big\directory, বা c:\my\big\directory\*, বা চলবে $mft? (বা অন্য কিছু?)
স্টিফেন আর

47

সংক্ষিপ্ত ফাইলের নাম তৈরির কাজকে মন্থর করে দেওয়ার ক্ষেত্রেও পারফরম্যান্স সমস্যা রয়েছে। মাইক্রোসফ্ট আপনার একটি ফোল্ডারে 300k এর বেশি ফাইল থাকলে [1] সংক্ষিপ্ত ফাইলের নাম তৈরি বন্ধ করার পরামর্শ দেয়। প্রথম 6 টি অক্ষর যত কম অনন্য হবে, সমস্যাটি তত বেশি।

[1] এনটিএফএস কীভাবে http://technet.microsoft.com থেকে কাজ করে , "300,000" অনুসন্ধান করুন


3
আমি এখানে একটি উদ্ধৃতি যুক্ত করব If you use large numbers of files in an NTFS folder (300,000 or more), disable short-file name generation for better performance, and especially if the first six characters of the long file names are similar.- "300,000" ইঙ্গিতটির সন্ধানে অতিরিক্ত রাখি । বিটিডাব্লু: "300" টাইপিং যথেষ্ট হবে (এখানে ক্লিপবোর্ডিংয়ের প্রয়োজন নেই)
ওল্ফ

32

আমি 2 বিলিয়ন (2 ^ 32) পর্যন্ত ফাইল হোস্ট করার জন্য একটি ফাইল-কাঠামো তৈরি করছি এবং নিম্নলিখিত পরীক্ষাগুলি সম্পাদনা করেছি যা সলিড স্টেট ড্রাইভের জন্য এনটিএফএস ডিরেক্টরিতে প্রায় 250 ফাইল বা 120 ডিরেক্টরিতে নেভিগেট + রিড পারফরমেন্সে তীব্র হ্রাস দেখায় ( এসএসডি):

  • ফাইল পারফরম্যান্স 250 এবং 1000 ফাইলের মধ্যে 50% কমে যায়।
  • ডিরেক্টরি সম্পাদন 120 এবং 1000 ডিরেক্টরিগুলির মধ্যে 60% কমেছে।
  • নম্বরগুলির মান> 1000 অপেক্ষাকৃত স্থিতিশীল থাকে remain

আকর্ষণীয়ভাবে ডিরেক্টরি এবং ফাইলের সংখ্যা উল্লেখযোগ্যভাবে হস্তক্ষেপ করে না।

সুতরাং পাঠগুলি হ'ল:

  • ফাইলের সংখ্যা 250 এর উপরের জন্য 2 এর ফ্যাক্টর লাগবে
  • 120 এর উপরে ডিরেক্টরিগুলি 2.5 এর একটি ফ্যাক্টর খরচ করে
  • উইন্ডোজ 7-এ ফাইল-এক্সপ্লোরার বড় বড় # ফাইল বা # ডায়ার পরিচালনা করতে পারে তবে ব্যবহারযোগ্যতা এখনও খারাপ।
  • উপ-ডিরেক্টরিগুলি উপস্থাপন করা ব্যয়বহুল নয়

এটি ডেটা (প্রতিটি ফাইল এবং ডিরেক্টরিগুলির জন্য 2 পরিমাপ):

(FOPS = File Operations per Second)
(DOPS = Directory Operations per Second)

#Files  lg(#)   FOPS    FOPS2   DOPS    DOPS2
   10   1.00    16692   16692   16421   16312
  100   2.00    16425   15943   15738   16031
  120   2.08    15716   16024   15878   16122
  130   2.11    15883   16124   14328   14347
  160   2.20    15978   16184   11325   11128
  200   2.30    16364   16052   9866    9678
  210   2.32    16143   15977   9348    9547
  220   2.34    16290   15909   9094    9038
  230   2.36    16048   15930   9010    9094
  240   2.38    15096   15725   8654    9143
  250   2.40    15453   15548   8872    8472
  260   2.41    14454   15053   8577    8720
  300   2.48    12565   13245   8368    8361
  400   2.60    11159   11462   7671    7574
  500   2.70    10536   10560   7149    7331
 1000   3.00    9092    9509    6569    6693
 2000   3.30    8797    8810    6375    6292
10000   4.00    8084    8228    6210    6194
20000   4.30    8049    8343    5536    6100
50000   4.70    7468    7607    5364    5365

এবং এটি টেস্ট কোড:

[TestCase(50000, false, Result = 50000)]
[TestCase(50000, true, Result = 50000)]
public static int TestDirPerformance(int numFilesInDir, bool testDirs) {
    var files = new List<string>();
    var dir = Path.GetTempPath() + "\\Sub\\" + Guid.NewGuid() + "\\";
    Directory.CreateDirectory(dir);
    Console.WriteLine("prepare...");
    const string FILE_NAME = "\\file.txt";
    for (int i = 0; i < numFilesInDir; i++) {
        string filename = dir + Guid.NewGuid();
        if (testDirs) {
            var dirName = filename + "D";
            Directory.CreateDirectory(dirName);
            using (File.Create(dirName + FILE_NAME)) { }
        } else {
            using (File.Create(filename)) { }
        }
        files.Add(filename);
    }
    //Adding 1000 Directories didn't change File Performance
    /*for (int i = 0; i < 1000; i++) {
        string filename = dir + Guid.NewGuid();
        Directory.CreateDirectory(filename + "D");
    }*/
    Console.WriteLine("measure...");
    var r = new Random();
    var sw = new Stopwatch();
    sw.Start();
    int len = 0;
    int count = 0;
    while (sw.ElapsedMilliseconds < 5000) {
        string filename = files[r.Next(files.Count)];
        string text = File.ReadAllText(testDirs ? filename + "D" + FILE_NAME : filename);
        len += text.Length;
        count++;
    }
    Console.WriteLine("{0} File Ops/sec ", count / 5);
    return numFilesInDir; 
}

2
আপনি 2 ^ 8 ফাইলের পরে কর্মক্ষমতা হারাতে দেখছেন কারণ আপনাকে সংক্ষিপ্ত নাম তৈরি করতে হবে (8 অক্ষরের নাম উত্পাদন) generation দেখুন technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
কাইলি Falconer

1
হাই, আমি চেষ্টা করেছি যে এই কমান্ড লাইনটি ব্যবহার করে: fsutil.exe আচরণ সেট অক্ষম করুন 8 ডট 3 1 পুনরায় বুট করার পরে ফলাফলগুলি প্রায় 10000 ফাইল / ডায়ারের চেয়ে কম ছিল। নিবন্ধটি বলেছে এটি কেবল উচ্চ সংখ্যার জন্য গুরুত্বপূর্ণ। আমি যা দেখেছি তা সাধারণ পারফেক্ট ছিল। অবনতি সম্ভবত আমার এসএসডি-তে বেশি লোড ফ্যাক্টরের কারণে (এটি এখন 45% এর পরিবর্তে 80% পূর্ণ)
স্পোক করুন

খুব দরকারী, ধন্যবাদ। অন্যান্য ব্যবহারকারীদের দ্বারা মিলিয়ন মিলিয়ন অনুমান এই সংখ্যাগত মান থেকে অনেক দূরে।
অ্যাড্রিয়ান মাইয়ার

2
এমনকি নিষ্ক্রিয় 8.3 নাম প্রজন্ম পরেও আপনি প্রয়োজন স্ট্রিপ , বিদ্যমান 8.3 নাম বা বিদ্যমান ফাইল শুমার সামান্য উন্নতি থাকবে।
স্টিফেন আর


15

100,000 জরিমানা করা উচিত।

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

আপনি যদি ভাবছেন তবে প্রযুক্তিগত (এবং আমি তাত্ত্বিক আশা করি ) সর্বাধিক সংখ্যক ফাইল হ'ল: 4,294,967,295


5
অবিচ্ছিন্নতার জন্য, সেই বৃহত সংখ্যাটি (2 ^ 32 - 1) ফাইল।
মিটস্পেস

8

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


4
আপনি কি নিশ্চিত যে এটি এনটিএফএস (সার্ভারে ডিস্ক প্রোটোকল), এবং এসএমবি নয় (নেটওয়ার্ক স্তর)?
এমসাল্টাররা

নাহ, কারণটি সঙ্কীর্ণ করার জন্য আমি আর কোনও গবেষণা করিনি। আমার কাছে কেবলমাত্র তথ্য উপরে বর্ণিত।
ব্রায়ান নোব্লাচ

2

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

কেবলমাত্র পঠনযোগ্য পরিস্থিতিতে আমি বিপুল সংখ্যক এন্ট্রি সহ ডিরেক্টরিতে কর্মক্ষমতা হ্রাসের কোনও কারণ কল্পনা করতে পারি না।


1

একটি অনলাইন লাইব্রেরি অনুলিপি করার সময় এনটিএফএসে প্রায় 100,000 ফাইল (প্রতিটি বেশ কয়েকটি এমবি) নিয়ে আমার আসল অভিজ্ঞতা হয়েছিল।

এক্সপ্লোরার বা 7-জিপ সহ ডিরেক্টরিটি খুলতে প্রায় 15 মিনিট সময় লাগে।

সাইটের কপি সহ লেখার বিষয়টি winhttrackকিছু সময়ের পরে সর্বদা আটকে যাবে। এটি প্রায় 1,000 000 ফাইলযুক্ত ডিরেক্টরিতেও কাজ করে। আমি মনে করি সবচেয়ে খারাপটি হ'ল এমএফটি কেবল অনুক্রমিকভাবে অনুসরণ করতে পারে।

Ext3 এ ext2fsd এর অধীনে একই খোলার ফলে প্রায় একই সময় দেওয়া হয়েছিল। সম্ভবত রিসারফগুলিতে সরে যাওয়া (রিসার 4fs নয়) সাহায্য করতে পারে।

এই পরিস্থিতি এড়াতে চেষ্টা করা সম্ভবত সেরা।

আপনার নিজের প্রোগ্রামগুলির জন্য ব্লগ ডাব্লু / ও ব্যবহার করে কোনও এফএস উপকারী হতে পারে। ফেসবুক ফটোগুলি সংরক্ষণের জন্য এটিই করে।


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