{"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\/sq\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","title":{"rendered":"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ideja e artikullit lindi spontanisht nga diskutimi n\u00eb komentet e artikullit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462849\/\">\u00abDisa fjal\u00eb rreth inode\u00bb<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/e488f5985cfb0b3274f57f6baeeedf01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE v\u00ebrteta \u00ebsht\u00eb se specifikimi i brendsh\u00ebm i funksionimit t\u00eb sh\u00ebrbimeve tona \u00ebsht\u00eb ruajtja e nj\u00eb numri t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl. Aktualisht kemi rreth qindra terabajt t\u00eb till\u00eb t\u00eb dh\u00ebnash. Dhe kemi hasur n\u00eb disa pengesa t\u00eb qarta dhe jo shum\u00eb t\u00eb qarta dhe i kemi kaluar ato me sukses.<\/p>\n<p>Prandaj po ndaj p\u00ebrvoj\u00ebn ton\u00eb, ndoshta do t'i sh\u00ebrbej\u00eb dikujt.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Problemi i par\u00eb: \u00abNuk ka hap\u00ebsir\u00eb t\u00eb mbetur n\u00eb pajisje\u00bb<\/h2>\n<p>\nSi\u00e7 u p\u00ebrmend n\u00eb artikullin e m\u00ebsip\u00ebrm, problemi \u00ebsht\u00eb se ka blloqe t\u00eb lira n\u00eb sistemin e dosjeve, por inode-\u00ebt jan\u00eb ezauruar.<\/p>\n<p>Numrin e inode-ve t\u00eb p\u00ebrdorura dhe t\u00eb lira mund ta kontrolloni me komand\u00ebn <code>df -ih<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/ceb86a22562aa08c8ffbbde2c2618545.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNuk do ta p\u00ebrs\u00ebris artikullin, n\u00ebse e shohim shkurt, n\u00eb disk ka blloqe t\u00eb drejta p\u00ebr t\u00eb dh\u00ebnat, si dhe blloqe p\u00ebr metainformacionin, t\u00eb njohura si inode (indeks i nyj\u00ebs). Numri i tyre p\u00ebrcaktohet gjat\u00eb inicializimit t\u00eb sistemit t\u00eb dosjeve (flasim p\u00ebr ext2 dhe pasardh\u00ebsit e saj) dhe m\u00eb tej nuk ndryshohet. Balancimi i blloqeve t\u00eb t\u00eb dh\u00ebnave dhe inode-ve llogaritet nga t\u00eb dh\u00ebnat mesatare, nd\u00ebrsa n\u00eb rastin ton\u00eb, ku ka shum\u00eb skedar\u00eb t\u00eb vegj\u00ebl, balancimi duhet t\u00eb zhvendoset n\u00eb an\u00ebn e numrit t\u00eb inode-ve \u2014 duhet t\u00eb jen\u00eb m\u00eb shum\u00eb.<\/p>\n<p>N\u00eb Linux gjithashtu jan\u00eb parashikuar variante me nj\u00eb balancim t\u00eb ndrysh\u00ebm, dhe t\u00eb gjitha k\u00ebto konfiguracione t\u00eb paracaktuara ndodhen n\u00eb skedarin <code>\/etc\/mke2fs.conf<\/code>.<br \/>\nPrandaj, gjat\u00eb inicializimit t\u00eb par\u00eb t\u00eb sistemit t\u00eb dosjeve p\u00ebrmes mke2fs, mund t\u00eb specifikoni profilin e nevojsh\u00ebm.<\/p>\n<p>Ja disa shembuj nga skedari:<\/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>\nMund t\u00eb zgjidhni variantin e duhur t\u00eb p\u00ebrdorimit me opsionin &#171;-T&#187; gjat\u00eb thirrjes s\u00eb mke2fs. Gjithashtu, mund t\u00eb caktoni manualisht parametrat e nevojsh\u00ebm n\u00ebse nuk ka nj\u00eb zgjidhje t\u00eb gatshme.<\/p>\n<p>M\u00eb shum\u00eb detaje jan\u00eb p\u00ebrshkruar n\u00eb manualet p\u00ebr <code>mke2fs.conf<\/code> dhe <code>mke2fs<\/code>.<\/p>\n<p>Nj\u00eb karakteristik\u00eb e pap\u00ebrmendur n\u00eb artikullin e m\u00ebsip\u00ebrm \u2014 mund t\u00eb specifikoni madh\u00ebsin\u00eb e bllokut t\u00eb t\u00eb dh\u00ebnave. Ose, p\u00ebr skedar\u00eb t\u00eb m\u00ebdhenj ka kuptim q\u00eb blloku t\u00eb jet\u00eb m\u00eb i madh, p\u00ebr t\u00eb vegjlit \u2014 m\u00eb i vog\u00ebl. <\/p>\n<p>Megjithat\u00eb, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb merret parasysh nj\u00eb karakteristik\u00eb interesante, si\u00e7 \u00ebsht\u00eb arhitektura e procesorit.<br \/>\nN\u00eb nj\u00eb moment un\u00eb mendoja se m\u00eb duhej nj\u00eb madh\u00ebsi m\u00eb e madhe blloku p\u00ebr skedar\u00ebt e m\u00ebdhenj t\u00eb fotografive. Kjo ndodhi n\u00eb kushte sht\u00ebpiake, n\u00eb nj\u00eb ruajt\u00ebs skedar\u00ebsh WD mbi arkitektur\u00ebn ARM. Un\u00eb, pa menduar shum\u00eb, vendosa madh\u00ebsin\u00eb e bllokut 8k ose 16k n\u00eb vend t\u00eb standardit 4k, pas nj\u00eb matjeje t\u00eb kursimit. Dhe gjith\u00e7ka ishte shk\u00eblqyer deri n\u00eb momentin kur ruajt\u00ebsi d\u00ebshtoi, nd\u00ebrkoh\u00eb q\u00eb disku ishte i gjall\u00eb. Pasi e vendosa diskun n\u00eb nj\u00eb kompjuter t\u00eb zakonsh\u00ebm me nj\u00eb procesor Intel t\u00eb zakonsh\u00ebm, mora nj\u00eb surpriz\u00eb: madh\u00ebsi blloku e pap\u00ebrshtatshme. E shkuara. T\u00eb dh\u00ebnat jan\u00eb aty, gjith\u00e7ka \u00ebsht\u00eb mir\u00eb, por nuk \u00ebsht\u00eb e mundur t\u00eb lexohen. Procesor\u00ebt i386 dhe t\u00eb ngjashmit nuk din\u00eb t\u00eb punojn\u00eb me madh\u00ebsi blloku q\u00eb nuk p\u00ebrputhen me madh\u00ebsin\u00eb e faqeve t\u00eb memories, e cila \u00ebsht\u00eb sakt\u00ebsisht 4k. N\u00eb p\u00ebrgjith\u00ebsi, kjo p\u00ebrfundoi me p\u00ebrdorimin e utiliteteve nga hap\u00ebsira e p\u00ebrdoruesit, gjith\u00e7ka ishte e ngadalshme dhe e trishtueshme, por t\u00eb dh\u00ebnat u shp\u00ebtuan. P\u00ebr ata q\u00eb jan\u00eb t\u00eb interesuar \u2014 k\u00ebrkoni me emrin e utilitetit. <code>fuseext2<\/code>. M\u00ebsimi: ose t\u00eb mendosh p\u00ebr t\u00eb gjitha rastet paraprakisht, ose t\u00eb mos b\u00ebsh si nj\u00eb superheroi dhe t\u00eb p\u00ebrdor\u00ebsh cil\u00ebsime standarde p\u00ebr amvisat.<\/p>\n<p>UPD. Sipas v\u00ebrejtjes s\u00eb p\u00ebrdoruesit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> duke sqaruar se p\u00ebr i386 madh\u00ebsia e bllokut nuk duhet t\u00eb tejkaloj\u00eb 4k, por nuk \u00ebsht\u00eb e nevojshme t\u00eb jet\u00eb sakt\u00ebsisht 4k, pra jan\u00eb t\u00eb pranueshme 1k dhe 2k.<\/p>\n<p>Pra, si i zgjidh\u00ebm problemet ne.<\/p>\n<p>S\u00eb pari, ne u p\u00ebrball\u00ebm me problemin kur disku me shum\u00eb terabajt ishte i mbushur me t\u00eb dh\u00ebna dhe ne nuk mund t\u00eb riparonim konfigurimin e sistemit t\u00eb skedar\u00ebve.<\/p>\n<p>S\u00eb dyti, zgjidhja k\u00ebrkohej menj\u00ebher\u00eb.<\/p>\n<p>N\u00eb fund arrit\u00ebm n\u00eb p\u00ebrfundimin se duhej t\u00eb ndryshonim balanc\u00ebn, duke reduktuar numrin e skedar\u00ebve.<br \/>\nP\u00ebr t\u00eb reduktuar numrin e skedar\u00ebve, u vendos t\u00eb vendosim skedar\u00ebt n\u00eb nj\u00eb arkiv t\u00eb p\u00ebrbashk\u00ebt. Duke marr\u00eb parasysh specifik\u00ebn ton\u00eb, ne vendos\u00ebm n\u00eb nj\u00eb arkiv t\u00eb gjith\u00eb skedar\u00ebt p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohore dhe e b\u00ebm\u00eb arkivimin me nj\u00eb task cron \u00e7do nat\u00eb.<\/p>\n<p>Zgjodh\u00ebm nj\u00eb arkiv zip. N\u00eb komentet e artikullit t\u00eb m\u00ebparsh\u00ebm u propozuan tar, por me t\u00eb ka nj\u00eb kompleksitet: nuk ka indeks, dhe skedar\u00ebt n\u00eb t\u00eb jan\u00eb t\u00eb radhitur n\u00eb m\u00ebnyr\u00eb kaotike (nuk \u00ebsht\u00eb rast\u00ebsi q\u00eb \"tar\" \u00ebsht\u00eb shkurtim p\u00ebr \"Tape Archive\", trash\u00ebgimi e paisjeve me kaset\u00eb), dmth. n\u00ebse duam t\u00eb lexojm\u00eb nj\u00eb skedar n\u00eb fund t\u00eb arkivit \u2014 duhet t\u00eb lexojm\u00eb t\u00eb gjith\u00eb arkivin, pasi nuk ka offset p\u00ebr secilin skedar n\u00eb raport me fillimin e arkivit. Pra, kjo \u00ebsht\u00eb nj\u00eb operacion i gjat\u00eb. N\u00eb zip, gj\u00ebrat jan\u00eb shum\u00eb m\u00eb mir\u00eb: ai ka at\u00eb indeksin dhe offset skedar\u00ebve brenda arkivit, dhe koha e qasjes n\u00eb \u00e7do skedar nuk varet nga pozita e tij. Gjithashtu, n\u00eb rastin ton\u00eb mund t\u00eb ishte caktuar opsioni i kompresimit \"0\", pasi t\u00eb gjith\u00eb skedar\u00ebt ishin tashm\u00eb kompresuar n\u00eb gzip.<\/p>\n<p>Klient\u00ebt marrin skedar\u00ebt p\u00ebrmes nginx, dhe sipas API t\u00eb vjet\u00ebr, thjesht jepet emri i skedarit, p\u00ebr shembull k\u00ebshtu:<\/p>\n<pre><code class=\"plaintext\">http:\/\/www.server.com\/hydra\/20170416\/0453\/3bd24ae7-1df4-4d76-9d28-5b7fcb7fd8e5\n<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb shpaketuar skedar\u00ebt n\u00eb fluks, gjet\u00ebm dhe lidh\u00ebm modulin nginx-unzip-module (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/youzee\/nginx-unzip-module\">https:\/\/github.com\/youzee\/nginx-unzip-module<\/a><\/noindex>) dhe konfiguruam dy upstream.<\/p>\n<p>Si rezultat, u krijua nj\u00eb konfigurim i till\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/56f5210669fecfe194ac5907d563aa1d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDy host-e n\u00eb konfigurim dukeshin k\u00ebshtu:<\/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+)\/(\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>\nDhe konfigurimi i upstream-eve n\u00eb nginx e lart\u00eb:<\/p>\n<pre><code class=\"json\">upstream storage {\n  server server.com:8081;\n  server server.com:8082;\n}\n<\/code><\/pre>\n<p>\nSi funksionon:<\/p>\n<ul>\n<li>Klienti shkon n\u00eb nginx front<\/li>\n<li>Front nginx p\u00ebrpiqet t\u00eb jap\u00eb skedarin nga upstream i par\u00eb, dmth. drejtp\u00ebrdrejt nga sistemi i skedar\u00ebve<\/li>\n<li>N\u00ebse skedari nuk ekziston \u2014 p\u00ebrpiqet t\u00eb jap\u00eb nga upstream i dyt\u00eb, i cili p\u00ebrpiqet t\u00eb gjej\u00eb skedarin brenda arkivit<\/li>\n<\/ul>\n<p><\/p>\n<h2>Problemi i dyt\u00eb: p\u00ebrs\u00ebri \"Nuk ka hap\u00ebsir\u00eb t\u00eb mbetur n\u00eb pajisje\"<\/h2>\n<p>\nKy \u00ebsht\u00eb problemi i dyt\u00eb me t\u00eb cilin u p\u00ebrball\u00ebm, kur n\u00eb katalog ka shum\u00eb skedar\u00eb.<br \/>\nNe p\u00ebrpiqemi t\u00eb krijojm\u00eb nj\u00eb skedar, sistemi ankohet se nuk ka hap\u00ebsir\u00eb. Ndryshojm\u00eb emrin e skedarit dhe p\u00ebrpiqemi p\u00ebrs\u00ebri ta krijojm\u00eb.<\/p>\n<p>Dhe funksionon.<\/p>\n<p>Duket k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/f365358b59bf81d450a236dfb58e4874.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKontrolli i inodes nuk dha asgj\u00eb \u2014 ka shum\u00eb t\u00eb lir\u00eb. <br \/>\nKontrolli i hap\u00ebsir\u00ebs \u2014 po t\u00eb nj\u00ebjt\u00ebn gj\u00eb.<br \/>\nMendova se ndoshta ka shum\u00eb skedar\u00eb n\u00eb katalog, dhe p\u00ebr k\u00ebt\u00eb ka nj\u00eb kufizim, por p\u00ebrs\u00ebri jo: Numri maksimal i skedar\u00ebve p\u00ebr katalog: ~1.3 \u00d7 10^20<\/p>\n<p>Po ashtu, skedarin mund ta krijosh, n\u00ebse ndryshon emrin.<br \/>\nP\u00ebrfundimi \u2014 problemi \u00ebsht\u00eb te emri i skedarit.<\/p>\n<p>K\u00ebrkime t\u00eb m\u00ebtejshme treguan se problemi \u00ebsht\u00eb te algoritmi i hash-it kur nd\u00ebrtohet indeksi i katalogut, me num\u00ebr t\u00eb madh skedar\u00ebsh v\u00ebrehen kolizionet me t\u00eb gjitha pasojat e tyre. M\u00eb shum\u00eb detaje mund t\u00eb lexoni k\u00ebtu: <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>Mund t\u00eb \u00e7aktivizoni k\u00ebt\u00eb opsion, por... k\u00ebrkimi i skedarit sipas emrit mund t\u00eb b\u00ebhet papritur shum\u00eb i gjat\u00eb gjat\u00eb kalimit n\u00eb t\u00eb gjith\u00eb skedar\u00ebt. <\/p>\n<pre><code class=\"bash\"> tune2fs -O \"^dir_index\" \/dev\/sdb3\n<\/code><\/pre>\n<p>\nN\u00eb p\u00ebrgjith\u00ebsi, si nj\u00eb zgjidhje p\u00ebrkoh\u00ebsore mund t\u00eb funksionoj\u00eb.<\/p>\n<p>Mora e historis\u00eb: shum\u00eb skedar\u00eb n\u00eb nj\u00eb katalog zakonisht \u00ebsht\u00eb e keqe. Nuk duhet b\u00ebr\u00eb k\u00ebshtu.<\/p>\n<p>Zakonisht n\u00eb k\u00ebto raste krijohen katalog\u00eb t\u00eb brendsh\u00ebm, sipas shkronjave t\u00eb para t\u00eb emrit t\u00eb skedarit ose sipas ndonj\u00eb parametri tjet\u00ebr, p\u00ebr shembull, sipas datave, n\u00eb shumic\u00ebn e rasteve kjo shp\u00ebton.<br \/>\nPor numri total i skedar\u00ebve t\u00eb vegj\u00ebl \u00ebsht\u00eb vazhdimisht i keq, edhe n\u00ebse ata ndahen n\u00eb katalog\u00eb \u2014 at\u00ebher\u00eb shihni problemin e par\u00eb.<\/p>\n<h2>Problemi i tret\u00eb: si t\u00eb shikoni list\u00ebn e skedar\u00ebve, n\u00ebse ka shum\u00eb.<\/h2>\n<p>\nN\u00eb situat\u00ebn ton\u00eb, kur kemi shum\u00eb skedar\u00eb, p\u00ebr ndonj\u00eb arsye, ne p\u00ebrballemi me problemin se si t\u00eb shikojm\u00eb p\u00ebrmbajtjen e katalogut.<\/p>\n<p>Zgjidhja standarde \u00ebsht\u00eb komand\u00eb <code>ls<\/code>.<br \/>\nOk, le t\u00eb shohim se \u00e7far\u00eb ndodh me 4772098 skedar\u00eb:<\/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 sekonda... \u00ebsht\u00eb shum\u00eb. Dhe koha kryesore shkon n\u00eb p\u00ebrpunimin e skedar\u00ebve n\u00eb hap\u00ebsir\u00ebn e p\u00ebrdoruesit, dhe aspak n\u00eb funksionimin e b\u00ebrtham\u00ebs.<\/p>\n<p>Por ka nj\u00eb zgjidhje:<\/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 sekonda. 10 her\u00eb m\u00eb e shpejt\u00eb.<br \/>\nHurra!<\/p>\n<p><b>P\u00ebr t\u00eb p\u00ebrmir\u00ebsuar kuptimin e tipave t\u00eb mundsh\u00ebm t\u00eb njer\u00ebzve, pak e kam ndryshuar emrin e tyre:<\/b><\/p>\n<p>Nj\u00eb zgjidhje edhe m\u00eb e shpejt\u00eb nga p\u00ebrdoruesi <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/berez\/\" class=\"user_link\">berez<\/a><\/noindex> \u2014 \u00e7aktivizimi i rendit <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>Problemi i kat\u00ebrt: LA e madhe gjat\u00eb pun\u00ebs me skedar\u00ebt<\/h2>\n<p>\nHer\u00eb pas here ndodhet situata kur duhet t\u00eb kopjoni nj\u00eb mori skedar\u00ebsh nga nj\u00eb makin\u00eb n\u00eb nj\u00eb tjet\u00ebr. Gjat\u00eb k\u00ebsaj, shpesh ndodh t\u00eb rritet ndjesh\u00ebm LA, pasi gjith\u00e7ka varet nga performanca e disqeve t\u00eb vet.<\/p>\n<p>Ajo q\u00eb \u00ebsht\u00eb m\u00eb arsyeshme \u00ebsht\u00eb t\u00eb p\u00ebrdorni SSD. Realisht e mahnitshme. Pyetja \u00ebsht\u00eb vet\u00ebm p\u00ebr \u00e7mimin e SSD-ve t\u00eb shum\u00eb terabyte.<\/p>\n<p>Por n\u00ebse disqet jan\u00eb normale, duhen kopjuar skedar\u00ebt, dhe kjo \u00ebsht\u00eb gjithashtu sistem prodhimi, ku ngarkesa \u00e7on n\u00eb pak\u00ebnaq\u00ebsi t\u00eb klient\u00ebve? Ka t\u00eb pakt\u00ebn dy mjete t\u00eb dobishme: <code>nice<\/code> dhe <code>ionice<\/code>.<\/p>\n<p><code>nice<\/code> \u2014 ul prioritetin e procesit, p\u00ebrkat\u00ebsisht, plani i ekzekutimit ndan m\u00eb shum\u00eb kuota kohe p\u00ebr proceset e tjera, m\u00eb me prioritet.<br \/>\nN\u00eb praktik\u00ebn ton\u00eb ka ndihmuar t\u00eb vendosim nice maksimal (19 \u2014 \u00ebsht\u00eb prioriteti minimal, -20 (minus 20) \u2014 maksimal).<\/p>\n<p><code>ionice<\/code> \u2014 p\u00ebrkat\u00ebsisht rregullon prioritetin e hyrjes\/daljes (I\/O scheduling)<\/p>\n<p>N\u00ebse p\u00ebrdorni RAID dhe ai papritur ka nevoj\u00eb t\u00eb sinkronizohet (pas nj\u00eb rinisjeje t\u00eb d\u00ebshtuar ose ndihm\u00eb p\u00ebr rikuperimin e RAID-it pas z\u00ebvend\u00ebsimit t\u00eb nj\u00eb disku), n\u00eb disa situata ka kuptim t\u00eb zvog\u00ebloni shpejt\u00ebsin\u00eb e sinkronizimit, p\u00ebr t'i lejuar proceset e tjera t\u00eb funksionojn\u00eb mjaft normalisht. Komanda e till\u00eb do t\u00eb ndihmoj\u00eb:<\/p>\n<pre><code class=\"bash\">\necho 1000 &gt; \/proc\/sys\/dev\/raid\/speed_limit_max\n<\/code><\/pre>\n<p><\/p>\n<h2>Problemi i pest\u00eb: Si t\u00eb sinkronizoni skedar\u00ebt n\u00eb koh\u00eb reale<\/h2>\n<p>\nKemi t\u00eb nj\u00ebjtat sasi masive skedar\u00ebsh, t\u00eb cilat duhet t'i b\u00ebjm\u00eb backup n\u00eb serverin e dyt\u00eb p\u00ebr t\u00eb shmangur\u2026 Skedar\u00ebt shkruhen vazhdimisht, k\u00ebshtu q\u00eb p\u00ebr t\u00eb pasur minimumin e humbjeve, duhet t'i kopjojm\u00eb ato sa m\u00eb shpejt t\u00eb jet\u00eb e mundur.<\/p>\n<p>Zgjidhja standarde: Rsync mbi SSH.<\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb mund\u00ebsi e mir\u00eb, n\u00ebse nuk duhet ta b\u00ebni k\u00ebt\u00eb \u00e7do disa sekonda. Dhe ka shum\u00eb skedar\u00eb. Edhe n\u00ebse nuk i kopjoni, duhet t\u00eb kuptoni se \u00e7far\u00eb ka ndryshuar, dhe krahasimi i disa miliona skedar\u00ebve \u00ebsht\u00eb koh\u00eb dhe ngarkes\u00eb n\u00eb disqe.<\/p>\n<p>Pra, na nevojitet t\u00eb dim\u00eb menj\u00ebher\u00eb se \u00e7far\u00eb duhet t\u00eb kopjojm\u00eb, pa e nisur krahasimin \u00e7do her\u00eb.<\/p>\n<p>Shp\u00ebtimi \u00ebsht\u00eb \u2013 <code>lsyncd<\/code>. <code>Lsyncd<\/code> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/axkibe.github.io\/lsyncd\/\">Demon p\u00ebr Sinkronizim t\u00eb Drejtp\u00ebrdrejt\u00eb (Mirror)<\/a><\/noindex>. Ai gjithashtu funksionon p\u00ebrmes rsync, por p\u00ebrve\u00e7 k\u00ebsaj monitoron sistemin e skedar\u00ebve p\u00ebr ndryshime duke p\u00ebrdorur inotify dhe fsevents dhe nisin kopjimin vet\u00ebm p\u00ebr skedar\u00ebt q\u00eb jan\u00eb krijuar ose ndryshuar.<\/p>\n<h2>Problemi i gjasht\u00eb: Si t\u00eb kuptoni kush ngarkon disk\u00ebt<\/h2>\n<p>\nK\u00ebt\u00eb ndoshta e din\u00eb t\u00eb gjith\u00eb, por megjithat\u00eb p\u00ebr plot\u00ebsin\u00eb e pamjes: p\u00ebr monitorimin e n\u00ebn-sistemave t\u00eb disqeve ka komand\u00ebn <code>iotop<\/code> \u2013 e ngjashme me <code>top<\/code>, por tregon proceset q\u00eb p\u00ebrdorin disk\u00ebt m\u00eb aktivisht.<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/56612c618469ef340a31ae446d65ed4e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP.S. Vjet\u00ebr e mir\u00eb top gjithashtu lejon t\u00eb kuptoni n\u00ebse ka probleme me disk\u00ebt apo jo. P\u00ebr k\u00ebt\u00eb ka dy parametra m\u00eb t\u00eb p\u00ebrshtatsh\u00ebm: <b>Load Average<\/b> dhe <b>IOwait<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Hacks p\u00ebr t\u00eb punuar me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl\" src=\"\/wp-content\/uploads\/2019\/08\/01a0565947de65d13b0045f7180caf5d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPar\u00eb e par\u00eb tregon se sa procese jan\u00eb n\u00eb radh\u00eb p\u00ebr sh\u00ebrbim, zakonisht m\u00eb shum\u00eb se 2 \u2013 di\u00e7ka nuk shkon si\u00e7 duhet. Gjat\u00eb kopjimit aktiv n\u00eb server\u00ebt e backup-it kemi toleranc\u00eb deri n\u00eb 6-8, pas k\u00ebsaj situata konsiderohet jo normale.<\/p>\n<p>E dyta \u2013 sa \u00ebsht\u00eb e angazhuar procesori n\u00eb operacionet e disqeve. IOwait &gt;10% \u2013 shkak p\u00ebr shqet\u00ebsim, megjithat\u00eb n\u00eb server\u00ebt tan\u00eb me profil t\u00eb ngarkes\u00ebs specifike ndodh q\u00eb t\u00eb jet\u00eb stabilisht 40-50%, dhe kjo \u00ebsht\u00eb v\u00ebrtet normale.<\/p>\n<p>K\u00ebtu do ta mbyll, megjithat\u00eb me siguri ka shum\u00eb momente me t\u00eb cilat na \u00ebsht\u00eb dashur t\u00eb p\u00ebrballemi, do t\u00eb pres me k\u00ebnaq\u00ebsi komentet dhe p\u00ebrshkrimet e rasteve interesante reale.<br \/>\n<br \/>Burimi: <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.2.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\/sq\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Hakat p\u00ebr pun\u00ebn me nj\u00eb num\u00ebr t\u00eb madh skedar\u00ebsh t\u00eb vegj\u00ebl | ProHoster","description":"Ideja p\u00ebr k\u00ebt\u00eb artikull lindi spontanisht nga nj\u00eb diskutim n\u00eb komentet e artikullit \"Disa informacione mbi inode\".","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/haki-pri-rabote-s-bolshim-chislom-melkih-fajlov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/36999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=36999"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36999\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/27728"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=36999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=36999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=36999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}