{"id":36999,"date":"2019-10-31T22:15:13","date_gmt":"2019-10-31T19:15:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov\/"},"modified":"2019-10-31T22:15:13","modified_gmt":"2019-10-31T19:15:13","slug":"haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","title":{"rendered":"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Idee f\u00fcr den Artikel entstand spontan aus einer Diskussion in den Kommentaren zu einem Artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462849\/\">\u201eEinige Informationen zu inode\u201c<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/e488f5985cfb0b3274f57f6baeeedf01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Problem liegt darin, dass die interne Spezifikation unserer Dienste die Speicherung einer enormen Anzahl kleiner Dateien umfasst. Aktuell haben wir etwa mehrere Hundert Terabyte solcher Daten. Und wir sind auf einige offensichtliche und weniger offensichtliche Stolpersteine gesto\u00dfen und haben sie erfolgreich \u00fcberwunden.<\/p>\n<p>Deshalb teile ich unsere Erfahrungen, vielleicht kann ihnen jemand n\u00fctzlich sein.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Erstes Problem: \u201eKein Speicherplatz mehr auf dem Ger\u00e4t\u201c<\/h2>\n<p>\nWie im oben genannten Artikel erw\u00e4hnt, besteht das Problem darin, dass es freie Bl\u00f6cke im Dateisystem gibt, aber die inodes aufgebraucht sind.<\/p>\n<p>Die Zahl der verwendeten und freien inodes kann mit dem Befehl \u00fcberpr\u00fcft werden <code>df -ih<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/ceb86a22562aa08c8ffbbde2c2618545.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch werde den Artikel nicht zusammenfassen, kurz gesagt, auf der Festplatte gibt es sowohl Bl\u00f6cke direkt f\u00fcr Daten als auch Bl\u00f6cke f\u00fcr Metainformationen, die inodes (Indexknoten) sind. Ihre Anzahl wird bei der Initialisierung des Dateisystems festgelegt (hier geht es um ext2 und seine Nachfolger) und \u00e4ndert sich danach nicht. Das Verh\u00e4ltnis von Datenbl\u00f6cken zu inodes wird aus statistischen Daten berechnet, in unserem Fall, bei vielen kleinen Dateien, sollte sich das Verh\u00e4ltnis zugunsten der Anzahl der inodes verschieben \u2013 es sollten mehr von ihnen vorhanden sein.<\/p>\n<p>In Linux gibt es bereits Optionen mit unterschiedlichem Verh\u00e4ltnis, und all diese vordefinierten Konfigurationen befinden sich in der Datei <code>\/etc\/mke2fs.conf<\/code>.<br \/>\nDaher kann beim ersten Initialisieren des Dateisystems \u00fcber mke2fs das entsprechende Profil angegeben werden.<\/p>\n<p>Hier sind einige Beispiele aus der Datei:<\/p>\n<pre><code class=\"json\">    small = {\n        blocksize = 1024\n        inode_size = 128\n        inode_ratio = 4096\n    }\n\n    big = {\n        inode_ratio = 32768\n    }\n\n    largefile = {\n        inode_ratio = 1048576\n        blocksize = -1\n    }\n<\/code><\/pre>\n<p>\nDen gew\u00fcnschten Anwendungsfall kann man mit der Option &#171;-T&#187; beim Aufruf von mke2fs ausw\u00e4hlen. Es ist auch m\u00f6glich, die ben\u00f6tigten Parameter manuell festzulegen, wenn es keine fertige L\u00f6sung gibt.<\/p>\n<p>Weitere Einzelheiten sind in den Handb\u00fcchern f\u00fcr <code>mke2fs.conf<\/code> und <code>mke2fs<\/code>.<\/p>\n<p>Ein Punkt, der im oben genannten Artikel nicht behandelt wird, ist die M\u00f6glichkeit, die Blockgr\u00f6\u00dfe f\u00fcr Daten festzulegen. Offensichtlich macht es f\u00fcr gro\u00dfe Dateien Sinn, eine gr\u00f6\u00dfere Blockgr\u00f6\u00dfe zu w\u00e4hlen, w\u00e4hrend es f\u00fcr kleine Dateien sinnvoll ist, eine kleinere zu w\u00e4hlen. <\/p>\n<p>Es ist jedoch eine interessante Eigenschaft zu beachten, wie die Architektur des Prozessors.<br \/>\nIch habe mir irgendwann einmal \u00fcberlegt, dass ich f\u00fcr gro\u00dfe Bilddateien eine gr\u00f6\u00dfere Blockgr\u00f6\u00dfe ben\u00f6tige. Das Ganze geschah unter h\u00e4uslichen Bedingungen, auf einer Heimdateispeicherl\u00f6sung von WD auf ARM-Architektur. Ohne lange nachzudenken stellte ich die Blockgr\u00f6\u00dfe auf 8K oder 16K anstelle der standardm\u00e4\u00dfigen 4K ein, nachdem ich die Einsparungen gemessen hatte. Und alles war wunderbar, bis damaliger der Speicher ausfiel, w\u00e4hrend die Festplatte intakt war. Steckte ich die Festplatte in einen normalen Computer mit einem gew\u00f6hnlichen Intel-Prozessor, erhielt ich die \u00dcberraschung: unsupported block size. Es war unsch\u00f6n. Die Daten sind vorhanden, alles gut, aber sie konnten nicht gelesen werden. Prozessoren wie i386 und \u00e4hnliche k\u00f6nnen nicht mit Blockgr\u00f6\u00dfen arbeiten, die nicht der Seitenformatgr\u00f6\u00dfe des Speichers entsprechen, und diese betr\u00e4gt genau 4K. Letztlich endete es damit, dass wir Programme aus dem User-Space verwendeten, alles war langsam und tr\u00fcbselig, aber wir haben die Daten gerettet. Wer interessiert ist, kann nach dem Namen des Programms googeln. <code>fuseext2<\/code>. Moral der Geschichte: Entweder man denkt alle F\u00e4lle im Voraus durch, oder man gibt sich nicht als Superheld aus und verwendet die Standardkonfigurationen f\u00fcr Haushaltsbenutzer.<\/p>\n<p>UPD. Laut der Anmerkung eines Nutzers <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> stelle ich klar, dass die Blockgr\u00f6\u00dfe f\u00fcr i386 4K nicht \u00fcberschreiten sollte, aber sie muss nicht unbedingt genau 4K betragen, d.h. 1K und 2K sind zul\u00e4ssig.<\/p>\n<p>Also, so haben wir die Probleme gel\u00f6st.<\/p>\n<p>Zun\u00e4chst sind wir auf das Problem gesto\u00dfen, als die mehrterabyte gro\u00dfe Festplatte mit Daten \u00fcberf\u00fcllt war und wir die Konfiguration des Dateisystems nicht \u00e4ndern konnten.<\/p>\n<p>Zweitens musste eine schnelle L\u00f6sung her.<\/p>\n<p>Schlie\u00dflich kamen wir zu dem Schluss, dass wir das Gleichgewicht \u00e4ndern m\u00fcssen, indem wir die Anzahl der Dateien reduzieren.<br \/>\nUm die Anzahl der Dateien zu verringern, wurde beschlossen, die Dateien in ein gemeinsames Archiv zu packen. Angesichts unserer Spezifikationen haben wir alle Dateien \u00fcber einen bestimmten Zeitraum in ein Archiv gepackt und die Archivierung wurde t\u00e4glich nachts mit einem Cron-Job durchgef\u00fchrt.<\/p>\n<p>Wir haben das Zip-Archiv ausgew\u00e4hlt. In den Kommentaren zum vorherigen Artikel wurde Tar vorgeschlagen, aber damit gibt es eine Schwierigkeit: Es hat kein Inhaltsverzeichnis, und die Dateien liegen hintereinander (nicht von ungef\u00e4hr, dass \u201etar\u201c eine Abk\u00fcrzung f\u00fcr \u201eTape Archive\u201c ist, ein Erbe der Bandlaufwerke), d.h. wenn man eine Datei am Ende des Archivs lesen m\u00f6chte, muss man das gesamte Archiv lesen, da es keine Verschiebungen f\u00fcr jede Datei relativ zum Anfang des Archivs gibt. Das ist also ein langwieriger Vorgang. Bei Zip ist alles viel besser: Es hat eben dieses Inhaltsverzeichnis und die Verschiebungen der Dateien innerhalb des Archivs, und die Zugriffszeit f\u00fcr jede Datei h\u00e4ngt nicht von ihrer Position ab. Au\u00dferdem konnte in unserem Fall die Komprimierungsoption \u201e0\u201c festgelegt werden, da alle Dateien bereits im Voraus in gzip komprimiert waren.<\/p>\n<p>Die Clients holen die Dateien \u00fcber Nginx ab, und laut der alten API wird einfach der Dateiname angegeben, zum Beispiel so:<\/p>\n<pre><code class=\"plaintext\">http:\/\/www.server.com\/hydra\/20170416\/0453\/3bd24ae7-1df4-4d76-9d28-5b7fcb7fd8e5\n<\/code><\/pre>\n<p>\nUm die Dateien on-the-fly zu entpacken, haben wir das Modul nginx-unzip-module gefunden und eingebunden (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/youzee\/nginx-unzip-module\">https:\/\/github.com\/youzee\/nginx-unzip-module<\/a><\/noindex>), und zwei Upstreams konfiguriert.<\/p>\n<p>Das Ergebnis war diese Konfiguration:<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/56f5210669fecfe194ac5907d563aa1d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie zwei Hosts in den Einstellungen sahen so aus:<\/p>\n<pre><code class=\"json\">server {\n  listen *:8081;\n\n  location \/ {\n    root      \/home\/filestorage;\n  }\n}<\/code><\/pre>\n<p><\/p>\n<pre><code class=\"json\">server {\n  listen *:8082;\n\n  location ~ ^\/hydra\/(\\d+)\/(\\d+)\/(.*)$ {\n    root      \/home\/filestorage;\n    file_in_unzip_archivefile \"\/home\/filestorage\/hydra\/$1\/$2.zip\";\n    file_in_unzip_extract \"$2\/$3\";\n    file_in_unzip;\n  }\n}\n<\/code><\/pre>\n<p>\nUnd die Konfiguration der Upstreams auf dem \u00fcbergeordneten Nginx:<\/p>\n<pre><code class=\"json\">upstream storage {\n  server server.com:8081;\n  server server.com:8082;\n}\n<\/code><\/pre>\n<p>\nSo funktioniert es:<\/p>\n<ul>\n<li>Der Client geht zu front nginx<\/li>\n<li>Front nginx versucht, die Datei vom ersten Upstream zu liefern, d.h. direkt vom Dateisystem<\/li>\n<li>Wenn die Datei nicht vorhanden ist, versucht er es mit dem zweiten Upstream, der versucht, die Datei im Archiv zu finden<\/li>\n<\/ul>\n<p><\/p>\n<h2>Das zweite Problem: wieder \u201eNo space left on device\u201c<\/h2>\n<p>\nDas ist das zweite Problem, mit dem wir konfrontiert wurden, wenn im Verzeichnis viele Dateien sind.<br \/>\nWir versuchen, eine Datei zu erstellen, das System beschwert sich, dass kein Platz vorhanden ist. Wir \u00e4ndern den Dateinamen und versuchen es erneut.<\/p>\n<p>Es funktioniert.<\/p>\n<p>Es sieht ungef\u00e4hr so aus:<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/f365358b59bf81d450a236dfb58e4874.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie \u00dcberpr\u00fcfung der Inodes hat nichts ergeben \u2013 es sind viele frei. <br \/>\nDie \u00dcberpr\u00fcfung des Platzes \u2013 das Gleiche.<br \/>\nWir dachten, dass vielleicht zu viele Dateien im Verzeichnis sind und es daf\u00fcr eine Begrenzung gibt, aber das ist nicht der Fall: Maximale Anzahl der Dateien pro Verzeichnis: ~1.3 \u00d7 10^20<\/p>\n<p>Und eine Datei kann erstellt werden, wenn man den Namen \u00e4ndert.<br \/>\nFazit \u2013 das Problem liegt im Dateinamen.<\/p>\n<p>Weitere Nachforschungen ergaben, dass das Problem im Hashierungsalgorithmus beim Erstellen des Verzeichnisindexes liegt. Bei einer gro\u00dfen Anzahl von Dateien treten Kollisionen auf, mit allen daraus resultierenden Folgen. Weiterf\u00fchrende Informationen findet man hier: <noindex><a rel=\"nofollow\" href=\"https:\/\/ext4.wiki.kernel.org\/index.php\/Ext4_Disk_Layout#Hash_Tree_Directories\">https:\/\/ext4.wiki.kernel.org\/index.php\/Ext4_Disk_Layout#Hash_Tree_Directories<\/a><\/noindex><\/p>\n<p>Diese Option kann deaktiviert werden, aber\u2026 die Dateisuche nach Namen kann unvorhersehbar lange dauern, wenn alle Dateien durchgesehen werden. <\/p>\n<pre><code class=\"bash\"> tune2fs -O \"^dir_index\" \/dev\/sdb3\n<\/code><\/pre>\n<p>\nIm Gro\u00dfen und Ganzen kann es als vor\u00fcbergehende L\u00f6sung funktionieren.<\/p>\n<p>Moral: Viele Dateien in einem Verzeichnis \u2013 das ist normalerweise schlecht. So sollte man es nicht machen.<\/p>\n<p>In solchen F\u00e4llen werden normalerweise verschachtelte Verzeichnisse erstellt, entweder nach den ersten Buchstaben des Dateinamens oder nach anderen Parametern, zum Beispiel nach Daten, das rettet in den meisten F\u00e4llen.<br \/>\nAber die Gesamtanzahl kleiner Dateien ist immer noch schlecht, selbst wenn sie in Verzeichnisse aufgeteilt werden \u2013 dann siehe das erste Problem.<\/p>\n<h2>Drittes Problem: Wie sieht man die Liste der Dateien, wenn es viele sind<\/h2>\n<p>\nIn unserer Situation, in der wir viele Dateien haben, hatten wir irgendwie das Problem, wie man den Inhalt des Verzeichnisses anzeigen kann.<\/p>\n<p>Die standardm\u00e4\u00dfige L\u00f6sung ist der Befehl <code>ls<\/code>.<br \/>\nOkay, schauen wir mal, was mit 4772098 Dateien passiert:<\/p>\n<pre><code class=\"bash\">\n$ time ls \/home\/app\/express.repository\/offercache\/ &gt;\/dev\/null\n\nreal\t0m30.203s\nuser\t0m28.327s\nsys\t0m1.876s\n<\/code><\/pre>\n<p>\n30 Sekunden\u2026 das ist zu viel. Dabei wird die meiste Zeit mit der Verarbeitung der Dateien im Benutzerspeicher verbracht und nicht mit der Arbeit des Kernels.<\/p>\n<p>Aber es gibt eine L\u00f6sung:<\/p>\n<pre><code class=\"bash\">\n$ time find \/home\/app\/express.repository\/offercache\/ &gt;\/dev\/null\n\nreal\t0m3.714s\nuser\t0m1.998s\nsys\t0m1.717s\n<\/code><\/pre>\n<p>\n3 Sekunden. Zehnmal schneller.<br \/>\nHurra!<\/p>\n<p><b>UPD.<\/b><\/p>\n<p>Eine noch schnellere L\u00f6sung vom Benutzer <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> \u2013 Deaktivierung der Sortierung bei <code>ls<\/code><\/p>\n<pre><code class=\"bash\">\ntime ls -U \/home\/app\/express.repository\/offercache\/ &gt;\/dev\/null\nreal\t0m2.985s\nuser\t0m1.377s\nsys\t0m1.608s\n<\/code><\/pre>\n<h2>Viertes Problem: hoher LA beim Arbeiten mit Dateien<\/h2>\n<p>\nEs kommt gelegentlich vor, dass man eine Menge Dateien von einer Maschine auf eine andere kopieren muss. Dabei steigt oft der LA enorm, da alles von der Leistung der Festplatten abh\u00e4ngt.<\/p>\n<p>Am sinnvollsten w\u00e4re es, SSDs zu verwenden. Echt cool. Die Frage ist nur der Preis f\u00fcr mehrere Terabyte SSDs.<\/p>\n<p>Aber wenn die Festplatten gew\u00f6hnlich sind, m\u00fcssen Dateien kopiert werden, und dies ist auch noch ein Produktionssystem, wo \u00dcberlastungen zu unzufriedenen Kundenreaktionen f\u00fchren? Es gibt mindestens zwei n\u00fctzliche Werkzeuge: <code>nice<\/code> und <code>ionice<\/code>.<\/p>\n<p><code>nice<\/code> \u2013 verringert die Priorit\u00e4t des Prozesses, sodass der Scheduler mehr Zeitschlitze an anderen, h\u00f6herpriorisierten Prozessen vergibt.<br \/>\nIn unserer Praxis hat es geholfen, den nice-Wert auf maximal zu setzen (19 \u2013 das ist die minimale Priorit\u00e4t, -20 (minus 20) \u2013 die maximale).<\/p>\n<p><code>ionice<\/code> \u2013 korrigiert entsprechend die Eingabe-\/Ausgabepriorit\u00e4t (I\/O Scheduling)<\/p>\n<p>Wenn Sie RAID verwenden und es pl\u00f6tzlich synchronisiert werden muss (nach einem fehlgeschlagenen Neustart oder wenn das RAID-Array nach dem Austausch einer Festplatte wiederhergestellt werden muss), macht es in bestimmten Situationen Sinn, die Synchronisationsgeschwindigkeit zu reduzieren, damit die anderen Prozesse mehr oder weniger angemessen arbeiten k\u00f6nnen. Dabei hilft der folgende Befehl:<\/p>\n<pre><code class=\"bash\">\necho 1000 &gt; \/proc\/sys\/dev\/raid\/speed_limit_max\n<\/code><\/pre>\n<p><\/p>\n<h2>Problem f\u00fcnf: Wie synchronisiert man Dateien in Echtzeit<\/h2>\n<p>\nWir haben all die gleichen riesigen Mengen an Dateien, die auf einen zweiten Server gesichert werden m\u00fcssen, um\u2026 Dateien werden st\u00e4ndig geschrieben, daher muss man sie m\u00f6glichst schnell kopieren, um mindestens Verluste zu vermeiden.<\/p>\n<p>Standardl\u00f6sung: Rsync \u00fcber SSH.<\/p>\n<p>Es ist eine gute Option, es sei denn, es muss alle paar Sekunden erfolgen. Und es gibt viele Dateien. Selbst wenn sie nicht kopiert werden, muss man irgendwie verstehen, was sich ge\u00e4ndert hat, und das Vergleichen von mehreren Millionen Dateien ist zeitaufw\u00e4ndig und belastet die Festplatten.<\/p>\n<p>Das hei\u00dft, wir m\u00fcssen sofort wissen, was kopiert werden muss, ohne jedes Mal einen Vergleich zu starten.<\/p>\n<p>Die Rettung ist \u2014 <code>lsyncd<\/code>. <code>Lsyncd<\/code> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/axkibe.github.io\/lsyncd\/\">Live Syncing (Mirror) Daemon<\/a><\/noindex>. Es funktioniert ebenfalls \u00fcber rsync, \u00fcberwacht aber zus\u00e4tzlich das Dateisystem auf \u00c4nderungen mithilfe von inotify und fsevents und startet die Kopie nur f\u00fcr die Dateien, die hinzugekommen oder ver\u00e4ndert wurden.<\/p>\n<h2>Problem sechs: Wie versteht man, wer die Festplatten belastet<\/h2>\n<p>\nDas wissen wahrscheinlich alle, trotzdem zur Vollst\u00e4ndigkeit: F\u00fcr die \u00dcberwachung des Datentr\u00e4ger-Subsystems gibt es den Befehl <code>iotop<\/code> \u2014 \u00e4hnlich wie <code>top<\/code>, aber er zeigt die Prozesse an, die die Festplatten am aktivsten nutzen.<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/56612c618469ef340a31ae446d65ed4e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dcbrigens, das gute alte top hilft auch zu verstehen, ob es Probleme mit den Festplatten gibt oder nicht. Daf\u00fcr gibt es zwei am besten geeignete Parameter: <b>Load Average<\/b> und <b>IOwait<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Tipps f\u00fcr den Umgang mit einer gro\u00dfen Anzahl kleiner Dateien\" src=\"\/wp-content\/uploads\/2019\/08\/01a0565947de65d13b0045f7180caf5d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer erste zeigt, wie viele Prozesse in der Warteschlange auf Bearbeitung warten; \u00fcblicherweise ist alles \u00fcber 2 schon ein Zeichen daf\u00fcr, dass etwas nicht stimmt. Bei aktivem Kopieren auf Backup-Server erlauben wir bis zu 6-8, danach wird die Situation als abnormal angesehen.<\/p>\n<p>Der zweite zeigt, wie besch\u00e4ftigt die CPU mit Festplattenoperationen ist. IOwait &gt;10% ist ein Grund zur Besorgnis, obwohl wir auf Servern mit spezifischem Belastungsprofil stabil 40-50% haben, und das ist tats\u00e4chlich normal.<\/p>\n<p>Damit schlie\u00dfe ich, obwohl es sicherlich viele Aspekte gibt, mit denen wir nicht konfrontiert wurden; ich freue mich auf Kommentare und interessante praktische F\u00e4lle.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/srg\/blog\/462967\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u0438\u0437 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab\u041a\u043e\u0435-\u0447\u0442\u043e \u043e\u0431 inode\u00bb. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0433\u0440\u043e\u043c\u0430\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043c\u0435\u043b\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043e\u0442\u0435\u043d \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442 \u0442\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418 \u043c\u044b \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0430\u0431\u0435\u043b\u044c\u043a\u0438 \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u043e \u043d\u0438\u043c \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u043b\u044e\u0441\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27728,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36999","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u0438\u0437 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab\u041a\u043e\u0435-\u0447\u0442\u043e \u043e\u0431 inode\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0425\u0430\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043c\u0435\u043b\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u0438\u0437 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab\u041a\u043e\u0435-\u0447\u0442\u043e \u043e\u0431 inode\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tipps f\u00fcr die Arbeit mit einer gro\u00dfen Anzahl kleiner Dateien | ProHoster","description":"Die Idee f\u00fcr den Artikel entstand spontan aus einer Diskussion in den Kommentaren zu dem Artikel \u201eEinige Informationen \u00fcber inodes\u201c.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0425\u0430\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043c\u0435\u043b\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 | ProHoster","og:description":"\u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u0438\u0437 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab\u041a\u043e\u0435-\u0447\u0442\u043e \u043e\u0431 inode\u00bb.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:13+00:00","article:modified_time":"2019-10-31T19:15:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36999","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 05:41:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:35:26","updated":"2026-01-22 05:41:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=36999"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36999\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27728"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}