{"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\/sv\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","title":{"rendered":"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Id\u00e9n till artikeln f\u00f6ddes spontant ur en diskussion i kommentarerna till en artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462849\/\">\u00bbN\u00e5got om inode\u00ab<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/e488f5985cfb0b3274f57f6baeeedf01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProblemet \u00e4r att den interna specifikationen f\u00f6r v\u00e5ra tj\u00e4nsters arbete inneb\u00e4r att vi lagrar ett enormt antal sm\u00e5 filer. F\u00f6r n\u00e4rvarande har vi cirka hundratals terabyte av s\u00e5dana data. Och vi har st\u00f6tt p\u00e5 vissa uppenbara och mindre uppenbara fallgropar och har framg\u00e5ngsrikt tagit oss f\u00f6rbi dem.<\/p>\n<p>D\u00e4rf\u00f6r delar jag med mig av v\u00e5r erfarenhet, kanske det kan vara till nytta f\u00f6r n\u00e5gon.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Problem ett: \u00bbInte tillr\u00e4ckligt med utrymme p\u00e5 enheten\u00ab<\/h2>\n<p>\nSom n\u00e4mnts i den ovan n\u00e4mnda artikeln \u00e4r problemet att det finns lediga block p\u00e5 filsystemet, men inoderna \u00e4r slut.<\/p>\n<p>Antalet anv\u00e4nda och lediga inoder kan kontrolleras med kommandot <code>df -ih<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/ceb86a22562aa08c8ffbbde2c2618545.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJag t\u00e4nker inte sammanfatta artikeln, men kort sagt, p\u00e5 disken finns det b\u00e5de block direkt f\u00f6r data och block f\u00f6r meta-information, som ocks\u00e5 kallas inoder (index-nod). Deras antal anges vid initiering av filsystemet (det handlar om ext2 och dess efterf\u00f6ljare) och \u00e4ndras inte efter det. Balansen mellan datablock och inoder ber\u00e4knas utifr\u00e5n genomsnittliga data; i v\u00e5rt fall, n\u00e4r det finns m\u00e5nga sm\u00e5 filer, b\u00f6r balansen luta mer \u00e5t antalet inoder\u2014de b\u00f6r vara fler.<\/p>\n<p>I Linux finns redan alternativ med olika balans, och alla dessa f\u00f6rber\u00e4knade konfigurationer finns i filen <code>\/etc\/mke2fs.conf<\/code>.<br \/>\nD\u00e4rf\u00f6r kan r\u00e4tt profil anges vid den f\u00f6rsta initialiseringen av filsystemet genom mke2fs.<\/p>\n<p>H\u00e4r \u00e4r n\u00e5gra exempel fr\u00e5n filen:<\/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>\n\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0446\u0438\u0435\u0439 &#171;-T&#187; \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 mke2fs. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>Mer information finns i manualerna f\u00f6r <code>mke2fs.conf<\/code> och <code>mke2fs<\/code>.<\/p>\n<p>En s\u00e4rskild egenskap som inte ber\u00f6rdes i den ovan n\u00e4mnda artikeln \u00e4r att blockstorlek f\u00f6r data kan anges. Uppenbarligen finns det f\u00f6r stora filer en f\u00f6rdel med en st\u00f6rre blockstorlek, f\u00f6r sm\u00e5filer en mindre. <\/p>\n<p>Det \u00e4r dock v\u00e4rt att ta h\u00e4nsyn till en intressant funktion, n\u00e4mligen processorarkitekturen.<br \/>\nJag funderade en g\u00e5ng p\u00e5 att jag beh\u00f6vde en st\u00f6rre blockstorlek f\u00f6r stora fotofiler. Det var under hemaf\u00f6rh\u00e5llanden, p\u00e5 en hemlagringsl\u00f6sning av WD byggd p\u00e5 ARM-arkitektur. Utan att t\u00e4nka f\u00f6r mycket, st\u00e4llde jag blockstorleken till antingen 8k eller 16k ist\u00e4llet f\u00f6r standard 4k, efter att ha m\u00e4tt f\u00f6rdelen. Och allt var utm\u00e4rkt precis tills lagringsl\u00f6sningen gick s\u00f6nder, samtidigt som disken var intakt. N\u00e4r jag satte disken i en vanlig dator med en vanlig Intel-processor fick jag en \u00f6verraskning: en icke-st\u00f6dd blockstorlek. Vilken \u00f6verraskning. Data fanns, allt var bra, men det gick inte att l\u00e4sa. i386-processorer och liknande klarar inte av blockstorlekar som inte motsvarar minnessidans storlek, som \u00e4r exakt 4k. I allm\u00e4nhet slutade det med att vi anv\u00e4nde verktyg fr\u00e5n anv\u00e4ndarrummet, allt var l\u00e5ngsamt och sorgligt, men vi r\u00e4ddade data. F\u00f6r den som \u00e4r intresserad - googla namnet p\u00e5 verktyget. <code>fuseext2<\/code>. Moralen: antingen t\u00e4nker man igenom alla scenarier p\u00e5 f\u00f6rhand, eller s\u00e5 f\u00f6rs\u00f6ker man inte vara en superhj\u00e4lte och anv\u00e4nder standardinst\u00e4llningar f\u00f6r hush\u00e5ll.<\/p>\n<p>UPD. P\u00e5 anv\u00e4ndarens anm\u00e4rkning <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> f\u00f6rtydligar jag att f\u00f6r i386 f\u00e5r blockstorleken inte \u00f6verstiga 4k, men den beh\u00f6ver inte n\u00f6dv\u00e4ndigtvis vara exakt 4k, s\u00e5 1k och 2k \u00e4r godk\u00e4nda.<\/p>\n<p>S\u00e5 h\u00e4r l\u00f6ste vi problemen.<\/p>\n<p>F\u00f6r det f\u00f6rsta st\u00f6tte vi p\u00e5 problemet n\u00e4r den multiterabyte disken var full av data och vi inte kunde \u00e4ndra konfigurationen av filsystemet.<\/p>\n<p>F\u00f6r det andra beh\u00f6vdes en snabb l\u00f6sning.<\/p>\n<p>Till slut kom vi fram till att vi var tvungna att \u00e4ndra balansen och minska antalet filer.<br \/>\nF\u00f6r att minska antalet filer beslutade vi att packa filerna i ett gemensamt arkiv. Med tanke p\u00e5 v\u00e5r specifik profil packade vi alla filer fr\u00e5n en viss tidsperiod i ett arkiv och genomf\u00f6rde arkivering med en cron-jobb varje natt.<\/p>\n<p>Vi valde zip-arkivet. I kommentarerna till den tidigare artikeln f\u00f6reslogs tar, men det finns en sv\u00e5righet: det har ingen katalog, och filerna i det \u00e4r sekventiella (inte f\u00f6r inte som \"tar\" \u00e4r en f\u00f6rkortning av \"Tape Archive\", ett arv fr\u00e5n bandlagring), dvs. om du beh\u00f6ver l\u00e4sa en fil i slutet av arkivet - m\u00e5ste du l\u00e4sa hela arkivet, eftersom det inte finns n\u00e5gra f\u00f6rskjutningar f\u00f6r varje fil i f\u00f6rh\u00e5llande till b\u00f6rjan av arkivet. D\u00e4rf\u00f6r \u00e4r det en l\u00e5ngsam operation. Med zip \u00e4r allt mycket b\u00e4ttre: det har just den katalogen och filernas f\u00f6rskjutningar inuti arkivet, och \u00e5tkomsttiden till varje fil beror inte p\u00e5 dess placering. I v\u00e5rt fall kunde vi st\u00e4lla in komprimeringsalternativet \"0\" eftersom alla filer redan var komprimerade i gzip.<\/p>\n<p>Kunder h\u00e4mtar filer via nginx, och enligt det gamla API:t anges bara filnamnet, till exempel s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"plaintext\">http:\/\/www.server.com\/hydra\/20170416\/0453\/3bd24ae7-1df4-4d76-9d28-5b7fcb7fd8e5\n<\/code><\/pre>\n<p>\nF\u00f6r att i realtid packa upp filer, hittade och kopplade vi modulen nginx-unzip-module (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/youzee\/nginx-unzip-module\">https:\/\/github.com\/youzee\/nginx-unzip-module<\/a><\/noindex>) och konfigurerade tv\u00e5 upstreams.<\/p>\n<p>Resultatet blev en s\u00e5dan konfiguration:<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/56f5210669fecfe194ac5907d563aa1d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe tv\u00e5 v\u00e4rdarna i inst\u00e4llningarna s\u00e5g ut s\u00e5 h\u00e4r:<\/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>\nOch upstream-konfigurationen p\u00e5 den \u00f6verordnade 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>\nHur det fungerar:<\/p>\n<ul>\n<li>Klienten g\u00e5r till front nginx<\/li>\n<li>Front nginx f\u00f6rs\u00f6ker ge filen fr\u00e5n den f\u00f6rsta upstreamen, dvs. direkt fr\u00e5n filsystemet<\/li>\n<li>Om filen inte finns - f\u00f6rs\u00f6ker den ge fr\u00e5n den andra upstreamen, som f\u00f6rs\u00f6ker hitta filen inuti arkivet<\/li>\n<\/ul>\n<p><\/p>\n<h2>Det andra problemet: \u00e5terigen \"No space left on device\"<\/h2>\n<p>\nDetta \u00e4r det andra problemet vi st\u00f6tte p\u00e5 n\u00e4r det finns m\u00e5nga filer i katalogen.<br \/>\nVi f\u00f6rs\u00f6ker skapa en fil, systemet klagar p\u00e5 att det inte finns n\u00e5got utrymme kvar. Vi \u00e4ndrar filnamnet och f\u00f6rs\u00f6ker skapa den igen.<\/p>\n<p>Det fungerar.<\/p>\n<p>Det ser ut ungef\u00e4r s\u00e5 h\u00e4r:<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/f365358b59bf81d450a236dfb58e4874.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKontroll av inodes gav inget resultat - det finns m\u00e5nga lediga. <br \/>\nKontroll av utrymmet - samma sak.<br \/>\nVi t\u00e4nkte att det kanske \u00e4r f\u00f6r m\u00e5nga filer i katalogen, och det finns en begr\u00e4nsning f\u00f6r detta, men \u00e5terigen nej: Maximum number of files per directory: ~1.3 \u00d7 10^20<\/p>\n<p>Och man kan skapa en fil, om man \u00e4ndrar namnet.<br \/>\nSlutsatsen - problemet ligger i filnamnet.<\/p>\n<p>Ytterligare unders\u00f6kningar visade att problemet ligger i hash-algoritmen vid konstruktion av katalogindexet, med ett stort antal filer f\u00f6rekommer kollisioner med alla f\u00f6ljande konsekvenser. Du kan l\u00e4sa mer om detta h\u00e4r: <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>Du kan st\u00e4nga av det h\u00e4r alternativet, men... att s\u00f6ka efter filer med namn kan bli of\u00f6ruts\u00e4gbart l\u00e5ngsamt n\u00e4r man g\u00e5r igenom alla filer. <\/p>\n<pre><code class=\"bash\"> tune2fs -O \"^dir_index\" \/dev\/sdb3\n<\/code><\/pre>\n<p>\n\u00d6verlag kan det fungera som en tillf\u00e4llig l\u00f6sning.<\/p>\n<p>Moral: M\u00e5nga filer i en katalog \u00e4r vanligtvis d\u00e5ligt. S\u00e5 g\u00f6r man inte.<\/p>\n<p>I s\u00e5dana fall skapar man vanligtvis underkataloger, antingen efter de f\u00f6rsta bokst\u00e4verna i filnamnet eller efter n\u00e5got annat kriterium, till exempel datum. I de flesta fall r\u00e4ddar det situationen.<br \/>\nMen det totala antalet sm\u00e5 filer \u00e4r fortfarande d\u00e5ligt, \u00e4ven om man delar upp dem i kataloger \u2013 d\u00e5 h\u00e4nvisar vi till det f\u00f6rsta problemet.<\/p>\n<h2>Problem tre: Hur ser man en lista med filer om det finns m\u00e5nga?<\/h2>\n<p>\nI v\u00e5r situation, d\u00e4r vi har m\u00e5nga filer, har vi hur som helst st\u00f6tt p\u00e5 problemet att se inneh\u00e5llet i katalogen.<\/p>\n<p>Den standardl\u00f6sning som anv\u00e4nds \u00e4r kommandot <code>ls<\/code>.<br \/>\nOkej, l\u00e5t oss se vad som h\u00e4nder med 4772098 filer:<\/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 sekunder... det \u00e4r lite f\u00f6r mycket. Huvudtiden g\u00e5r \u00e5t till att bearbeta filer i anv\u00e4ndarrummet, snarare \u00e4n att k\u00e4rnan arbetar.<\/p>\n<p>Men det finns en l\u00f6sning:<\/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 sekunder. 10 g\u00e5nger snabbare.<br \/>\nHurra!<\/p>\n<p><b>UPD.<\/b><\/p>\n<p>\u00c4nnu en snabbare l\u00f6sning fr\u00e5n en anv\u00e4ndare <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> \u2013 st\u00e4ng av sortering f\u00f6r <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>Problem fyra: h\u00f6g LA n\u00e4r man arbetar med filer<\/h2>\n<p>\nDet uppst\u00e5r ibland situationer d\u00e4r man beh\u00f6ver kopiera m\u00e5nga filer fr\u00e5n en maskin till en annan. I dessa fall kan LA \u00f6ka dramatiskt, eftersom det beror p\u00e5 prestandan hos sj\u00e4lva diskarna.<\/p>\n<p>Det mest rationella vore att anv\u00e4nda SSD. Verkligen fantastiskt. Fr\u00e5gan \u00e4r bara kostnaden f\u00f6r flera terabyte SSD.<\/p>\n<p>Men om diskarna \u00e4r vanliga, m\u00e5ste man kopiera filer, och det h\u00e4r \u00e4r dessutom ett produktsystem d\u00e4r \u00f6verbelastning leder till missn\u00f6je fr\u00e5n kunderna? Det finns \u00e5tminstone tv\u00e5 anv\u00e4ndbara verktyg: <code>trevlig<\/code> och <code>ionice<\/code>.<\/p>\n<p><code>trevlig<\/code> \u2013 minskar processens prioritet, vilket g\u00f6r att schemal\u00e4ggaren ger mer tid till andra, mer prioriterade processer.<br \/>\nI v\u00e5r praktik har det hj\u00e4lpt att st\u00e4lla in nice till max (19 \u2013 detta \u00e4r minimi-prioritet, -20 (minus 20) \u2013 max).<\/p>\n<p><code>ionice<\/code> \u2013 justerar prioriteten f\u00f6r in- och utdata (I\/O-schemal\u00e4ggning)<\/p>\n<p>Om du anv\u00e4nder RAID och det pl\u00f6tsligt beh\u00f6ver synkroniseras (efter en misslyckad omstart eller f\u00f6r att \u00e5terst\u00e4lla RAID-arrayen efter diskbyte), kan det i vissa situationer vara meningsfullt att minska synkroniseringshastigheten s\u00e5 att andra processer kan fungera mer eller mindre adekvat. F\u00f6r detta kan f\u00f6ljande kommando hj\u00e4lpa:<\/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 fem: Hur man synkroniserar filer i realtid<\/h2>\n<p>\nVi har alla dessa enorma m\u00e4ngder filer som m\u00e5ste s\u00e4kerhetskopieras till en andra server f\u00f6r att undvika\u2026 Filer skrivs st\u00e4ndigt, d\u00e4rf\u00f6r, f\u00f6r att minimera f\u00f6rluster, m\u00e5ste de kopieras s\u00e5 snabbt som m\u00f6jligt.<\/p>\n<p>Standardl\u00f6sning: Rsync \u00f6ver SSH.<\/p>\n<p>Det \u00e4r ett bra alternativ om det inte beh\u00f6ver g\u00f6ras var n\u00e5gra sekunder. Det finns m\u00e5nga filer. \u00c4ven om vi inte kopierar dem - m\u00e5ste vi fortfarande p\u00e5 n\u00e5got s\u00e4tt f\u00f6rst\u00e5 vad som har \u00e4ndrats, och att j\u00e4mf\u00f6ra flera miljoner filer tar tid och belastning p\u00e5 diskarna.<\/p>\n<p>Det vill s\u00e4ga, vi m\u00e5ste veta direkt vad som ska kopieras, utan att starta en j\u00e4mf\u00f6relse varje g\u00e5ng.<\/p>\n<p>L\u00f6sningen \u00e4r - <code>lsyncd<\/code>. <code>Lsyncd<\/code> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/axkibe.github.io\/lsyncd\/\">Live Syncing (Mirror) Daemon<\/a><\/noindex>. Det fungerar ocks\u00e5 via rsync, men monitorerar dessutom filsystemet f\u00f6r f\u00f6r\u00e4ndringar med hj\u00e4lp av inotify och fsevents och startar kopiering bara f\u00f6r de filer som har tillkommit eller \u00e4ndrats.<\/p>\n<h2>Problem sex: hur man f\u00f6rst\u00e5r vem som belastar diskarna<\/h2>\n<p>\nDet vet nog alla, men f\u00f6r fullst\u00e4ndighetens skull: f\u00f6r att \u00f6vervaka diskundersystemet finns det kommandot <code>iotop<\/code> \u2013 liknande <code>top<\/code>, men visar de processer som mest aktivt anv\u00e4nder diskarna.<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/56612c618469ef340a31ae446d65ed4e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r \u00f6vrigt kan den gamla hederliga top ocks\u00e5 hj\u00e4lpa till att f\u00f6rst\u00e5 om det finns problem med diskarna eller inte. F\u00f6r detta finns tv\u00e5 s\u00e4rskilt l\u00e4mpliga parametrar: <b>Load Average<\/b> och <b>IOwait<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Tricks f\u00f6r att hantera ett stort antal sm\u00e5 filer\" src=\"\/wp-content\/uploads\/2019\/08\/01a0565947de65d13b0045f7180caf5d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen f\u00f6rsta visar hur m\u00e5nga processer som st\u00e5r i k\u00f6 f\u00f6r service, vanligtvis mer \u00e4n 2 - n\u00e5got g\u00e5r redan fel. Vid aktiv kopiering till backupservrar till\u00e5ter vi upp till 6-8, efter detta anses situationen vara onormal.<\/p>\n<p>Den andra - hur mycket processorn \u00e4r upptagen med diskoperationer. IOwait &gt;10% - orsaken till oro, \u00e4ven om vi p\u00e5 servrar med specifik belastningsprofil har stabilt 40-50%, och det \u00e4r faktiskt normen.<\/p>\n<p>Jag avslutar h\u00e4r, \u00e4ven om det s\u00e4kert finns m\u00e5nga moment som vi inte har st\u00f6tt p\u00e5, ser jag fram emot kommentarer och beskrivningar av intressanta verkliga fall.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Tips f\u00f6r arbete med ett stort antal sm\u00e5 filer | ProHoster","description":"Id\u00e9n till artikeln f\u00f6ddes spontant ur en diskussion i kommentarerna till artikeln \"N\u00e5got om inode\".","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/36999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=36999"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/36999\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27728"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=36999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=36999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=36999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}