{"id":55408,"date":"2020-01-20T00:00:00","date_gmt":"2020-01-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie"},"modified":"2020-02-18T14:03:31","modified_gmt":"2020-02-18T11:03:31","slug":"effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","title":{"rendered":"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted\" src=\"\/wp-content\/uploads\/2020\/01\/39cbe3b73cf4a20dba7e9383f922704f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00eb nderuar an\u00ebtar\u00eb t\u00eb komunitetit, ky artikull do t\u00eb trajtoj\u00eb ruajtjen dhe shp\u00ebrndarjen efektive t\u00eb qindra milion\u00eb skedar\u00ebve t\u00eb vegj\u00ebl. N\u00eb k\u00ebt\u00eb faz\u00eb, po ofrohet nj\u00eb zgjidhje e plot\u00eb p\u00ebr sistemet e skedar\u00ebve t\u00eb p\u00ebrputhshme me POSIX, duke ofruar mb\u00ebshtetje t\u00eb plot\u00eb p\u00ebr bllokimet, p\u00ebrfshir\u00eb ato n\u00eb klaster dhe madje duket se pa ndihma t\u00eb jashtme.<\/p>\n<p>Prandaj, p\u00ebr k\u00ebt\u00eb q\u00ebllim, shkrova serverin tim t\u00eb specializuar.<br \/>\nGjat\u00eb realizimit t\u00eb k\u00ebsaj detyre, arrita t\u00eb zgjidh problemin kryesor dhe nj\u00ebkoh\u00ebsisht t\u00eb arrij kursim n\u00eb hap\u00ebsir\u00ebn e diskut dhe memorjen operative, t\u00eb cil\u00ebn e konsumonte pa m\u00ebshir\u00eb sistemi yn\u00eb i skedar\u00ebve n\u00eb klaster. Nj\u00eb sasi e till\u00eb skedar\u00ebsh \u00ebsht\u00eb e d\u00ebmshme p\u00ebr \u00e7do sistem skedari n\u00eb klaster. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ideja \u00ebsht\u00eb kjo:<\/p>\n<p>Me fjal\u00eb t\u00eb thjeshta, skedar\u00ebt e vegj\u00ebl ngarkohen p\u00ebrmes serverit, ato ruhet drejtp\u00ebrdrejt n\u00eb arkiv, dhe ashtu lexohen nga ai, nd\u00ebrsa skedar\u00ebt e m\u00ebdhenj vendosen p\u00ebrkrah. Skema: 1 dosje = 1 arkiv, q\u00eb do t\u00eb thot\u00eb kemi disa milion\u00eb arkivash me skedar\u00eb t\u00eb vegj\u00ebl, e jo disa qindra milion\u00eb skedar\u00eb. Dhe t\u00eb gjitha k\u00ebto jan\u00eb realizuar n\u00eb m\u00ebnyr\u00eb t\u00eb plot\u00eb, pa skripte dhe shp\u00ebrndarje skedar\u00ebsh n\u00eb arkivat tar\/zip.<\/p>\n<p>Do t\u00eb p\u00ebrpiqem ta shpreh shkurt, paraprakisht k\u00ebrkoj falje n\u00ebse posti do t\u00eb jet\u00eb i ngjeshur.<\/p>\n<p>Filloi gjith\u00e7ka nga fakti se nuk mund t\u00eb gjeja nj\u00eb server t\u00eb p\u00ebrshtatsh\u00ebm n\u00eb bot\u00eb, i cili mund t\u00eb ruante t\u00eb dh\u00ebnat e marra p\u00ebrmes protokollit HTTP drejtp\u00ebrdrejt n\u00eb arkiva, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos kishte mang\u00ebsi q\u00eb i p\u00ebrkasin arkivave t\u00eb zakonsh\u00ebm dhe ruajtjeve t\u00eb objekteve. Arsyeja p\u00ebr k\u00ebrkim ishte klasteri Origin, q\u00eb ishte zgjeruar n\u00eb p\u00ebrmasa t\u00eb m\u00ebdha me 10 server\u00eb, ku kishin u p\u00ebrmbledhur tashm\u00eb 250,000,000 skedar\u00eb t\u00eb vegj\u00ebl dhe tendenca e rritjes nuk kishte nd\u00ebrmend t\u00eb ndalonte.<\/p>\n<p><b>P\u00ebr ata q\u00eb nuk i p\u00eblqejn\u00eb artikujt dhe dokumentacioni i vog\u00ebl \u00ebsht\u00eb m\u00eb i leht\u00eb:<\/b><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">. K\u00ebrkesat e d\u00ebrguara p\u00ebrmes m\u00ebnyrave t\u00eb tjera nuk do t\u00eb shqyrtohen.<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">. K\u00ebrkesat e d\u00ebrguara p\u00ebrmes m\u00ebnyrave t\u00eb tjera nuk do t\u00eb shqyrtohen.<\/a><\/noindex>.<\/p>\n<p>Dhe docker gjithashtu, tani ekziston nj\u00eb variant vet\u00ebm s\u00eb bashku me nginx brenda p\u00ebr \u00e7do rast:<\/p>\n<pre><code class=\"bash\">docker run -d --restart=always -e host=localhost -e root=\/var\/storage \n-v \/var\/storage:\/var\/storage --name wzd -p 80:80 eltaline\/wzd<\/code><\/pre>\n<p>\nTjet\u00ebr:<\/p>\n<p>N\u00ebse ka shum\u00eb skedar\u00eb, k\u00ebrkohen resurse t\u00eb konsiderueshme dhe, \u00e7ka \u00ebsht\u00eb m\u00eb e shkurajshme, nj\u00eb pjes\u00eb e tyre humbet kot. P\u00ebr shembull, kur p\u00ebrdoret nj\u00eb sistem skedar\u00ebsh klasterik (n\u00eb k\u00ebt\u00eb rast \u2013 MooseFS), nj\u00eb skedar, pavar\u00ebsisht nga madh\u00ebsia e tij reale, gjithmon\u00eb z\u00eb s\u00eb paku 64 KB. K\u00ebshtu, p\u00ebr skedar\u00eb me madh\u00ebsi 3, 10 ose 30 KB n\u00eb disk, k\u00ebrkohen nga 64 KB. N\u00ebse ka nj\u00eb \u00e7erek billion skedar\u00eb, ne humbasim nga 2 deri n\u00eb 10 tera byte. T\u00eb krijosh skedar\u00eb t\u00eb rinj deri n\u00eb pafund\u00ebsi nuk do t\u00eb jet\u00eb e mundur, sepse n\u00eb at\u00eb MooseFS ekziston nj\u00eb kufizim: jo m\u00eb shum\u00eb se 1 miliard me nj\u00eb replikim t\u00eb \u00e7do skedari.<\/p>\n<p>Me rritjen e numrit t\u00eb skedar\u00ebve, nevojitet shum\u00eb memorie operative p\u00ebr metadatat. Gjithashtu, dump-et e m\u00ebdha t\u00eb metadatanave t\u00eb shpeshta kontribuojn\u00eb n\u00eb konsumimin e SSD-ve.<\/p>\n<p><b>Serveri wZD. Po i japim rend rutin\u00ebs n\u00eb disqe.<\/b><\/p>\n<p>Serveri \u00ebsht\u00eb shkruar n\u00eb gjuh\u00ebn Go. Para t\u00eb gjithash, m\u00eb duhej t\u00eb reduktonja numrin e skedar\u00ebve. Si ta b\u00ebj k\u00ebt\u00eb? N\u00ebp\u00ebrmjet arkivimit, por n\u00eb k\u00ebt\u00eb rast pa kompresim, sepse skedar\u00ebt e mi jan\u00eb imazhe t\u00eb shtr\u00ebnguara. M\u00eb ndihmoi BoltDB, t\u00eb cilin gjithashtu e eliminova nga disavantazhet, gj\u00eb q\u00eb \u00ebsht\u00eb reflektuar n\u00eb dokumentacion.<\/p>\n<p>Nga nj\u00eb \u00e7erek miliard dosjesh, n\u00eb rastin tim mbet\u00ebn vet\u00ebm 10 milion Arkiva Bolt. Po t\u00eb kisha mund\u00ebsin\u00eb t\u00eb ndryshoja struktur\u00ebn aktuale t\u00eb mbushjes me dosje, ndoshta do t\u00eb kishte mund\u00ebsi ta ulja numrin deri n\u00eb 1 milion dosje. <\/p>\n<p>T\u00eb gjitha dosjet e vogla paketohen n\u00eb Arkiva Bolt, automatikisht marrin emrat e dosjeve ku ndodhen, nd\u00ebrsa t\u00eb gjitha dosjet e m\u00ebdha q\u00ebndrojn\u00eb pran\u00eb arkivave; nuk ka kuptim t'i paketosh ato, dhe kjo \u00ebsht\u00eb e konfigurueshme. T\u00eb voglat - i arkivojm\u00eb, t\u00eb m\u00ebdhat\u00eb - i l\u00ebm\u00eb pa ndryshime. Serveri funksionon n\u00eb m\u00ebnyr\u00eb transparente p\u00ebr t\u00eb dyja.<\/p>\n<p><b>Arkitektura dhe karakteristikat e serverit wZD.<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted\" src=\"\/wp-content\/uploads\/2020\/01\/38e2c6ad50bffe6c2ced460f8dc3e65a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServeri funksionon n\u00ebn menaxhimin e sistemeve operative Linux, BSD, Solaris dhe OSX. Kam testuar vet\u00ebm p\u00ebr arkitektur\u00ebn AMD64 n\u00ebn Linux, por duhet t\u00eb jet\u00eb i p\u00ebrshtatsh\u00ebm edhe p\u00ebr ARM64, PPC64, MIPS64.<\/p>\n<p><b>Karakteristikat kryesore:<\/b><\/p>\n<ul>\n<li>Multithreading;<\/li>\n<li>Multiserver, q\u00eb siguron q\u00ebndrueshm\u00ebri dhe balancim t\u00eb ngarkes\u00ebs;<\/li>\n<li>Transparenc\u00eb maksimale p\u00ebr p\u00ebrdoruesin ose zhvilluesin;<\/li>\n<li>Metodat HTTP t\u00eb mb\u00ebshtetura: GET, HEAD, PUT dhe DELETE;<\/li>\n<li>Menaxhimi i sjelljes gjat\u00eb leximit dhe shk writing.  m\u00eb an\u00eb t\u00eb titujve t\u00eb klient\u00ebve;<\/li>\n<li>Mb\u00ebshtetje p\u00ebr hoste virtuale t\u00eb konfiguruar n\u00eb m\u00ebnyr\u00eb fleksibile;<\/li>\n<li>Mb\u00ebshtetje p\u00ebr CRC p\u00ebr integritetin e t\u00eb dh\u00ebnave gjat\u00eb shkrimit\/leximit;<\/li>\n<li>Bufra poludinamike p\u00ebr konsum minimal t\u00eb memories dhe optimizimin e performanc\u00ebs t\u00eb rrjeteve;<\/li>\n<li>Kompaktimi i vonuar i t\u00eb dh\u00ebnave;<\/li>\n<li>P\u00ebrve\u00e7 k\u00ebsaj, ofrohet nj\u00eb arkivues me disa thread-e wZA p\u00ebr migrimin e skedar\u00ebve pa ndalur sh\u00ebrbimin.<\/li>\n<\/ul>\n<p>\n<b>Eksperianca reale:<\/b><\/p>\n<p>Un\u00eb kam zhvilluar dhe testuar serverin dhe arkivuesin me t\u00eb dh\u00ebna n\u00eb koh\u00eb reale p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, tani ai funksionon me sukses n\u00eb nj\u00eb klaster q\u00eb p\u00ebrfshin 250,000,000 skedare t\u00eb vogla (imazhe), t\u00eb vendosura n\u00eb 15,000,000 direktoriume n\u00eb disqe SATA t\u00eb ndara. Klasteri me 10 servera p\u00ebrb\u00ebn nj\u00eb server Origin, i instaluar prapa nj\u00eb rrjeti CDN. P\u00ebr sh\u00ebrbimin e tij p\u00ebrdoren 2 servera Nginx + 2 servera wZD.<\/p>\n<p>Atij q\u00eb do t\u00eb vendos\u00eb t\u00eb p\u00ebrdor\u00eb k\u00ebt\u00eb server, ka kuptim t\u00eb planifikoj\u00eb struktur\u00ebn e direktorive para p\u00ebrdorimit, n\u00ebse \u00ebsht\u00eb e aplikueshme. T\u00eb them t\u00eb drejt\u00ebn, serveri nuk \u00ebsht\u00eb menduar p\u00ebr t\u00eb ngjeshur gjith\u00e7ka n\u00eb nj\u00eb arkiv Bolt.<\/p>\n<p><b>Testimi i performanc\u00ebs:<\/b><\/p>\n<p>Sa m\u00eb i vog\u00ebl \u00ebsht\u00eb madh\u00ebsia e skedarit t\u00eb arkivuar, aq m\u00eb shpejt kryhen operacionet GET dhe PUT me t\u00eb. Le t\u00eb krahasojm\u00eb koh\u00ebn e p\u00ebrgjithshme t\u00eb shkruar nga klienti HTTP n\u00eb skedar\u00ebt e zakonsh\u00ebm dhe n\u00eb arkivat Bolt, po ashtu edhe leximin. Krahasoni pun\u00ebn me skedar\u00eb me madh\u00ebsi 32 KB, 256 KB, 1024 KB, 4096 KB dhe 32768 KB.<\/p>\n<p>Kur punojm\u00eb me arkivat Bolt, kontrollohet integriteti i t\u00eb dh\u00ebnave t\u00eb \u00e7do skedari (p\u00ebrdoret CRC), para shkruajtjes dhe pas shkruajtjes ndodh leximi n\u00eb flukso dhe ri-kalkulimi, natyrisht kjo sjell vonesa, por e r\u00ebnd\u00ebsishme \u00ebsht\u00eb siguria e t\u00eb dh\u00ebnave. <\/p>\n<p>Testet e performanc\u00ebs i kam kryer n\u00eb SSD, pasi n\u00eb diskun SATA testet nuk tregojn\u00eb ndonj\u00eb ndryshim t\u00eb qart\u00eb.<\/p>\n<p><b>Grafik\u00ebt sipas rezultateve t\u00eb testimit:<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted\" src=\"\/wp-content\/uploads\/2020\/01\/298ae08420f476ebb128d5254921973a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted\" src=\"\/wp-content\/uploads\/2020\/01\/a7b081be88d894b50942a98f5a666e0e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi\u00e7 duket, p\u00ebr skedar\u00ebt e vegj\u00ebl ndryshimi n\u00eb koh\u00ebn e leximit dhe shkruajtjes mes skedar\u00ebve t\u00eb arkivuar dhe atyre jo t\u00eb arkivuar \u00ebsht\u00eb i vog\u00ebl.<\/p>\n<p>Nj\u00eb pamje krejt tjet\u00ebr do t\u00eb kemi n\u00eb testin e leximit dhe shkruajtjes s\u00eb skedar\u00ebve me madh\u00ebsi 32 MB:<\/p>\n<p><img decoding=\"async\" alt=\"Ruajtja efikase e qindra milion\u00ebve t\u00eb vegj\u00ebl skedar\u00ebve. Zgjidhje Self-Hosted\" src=\"\/wp-content\/uploads\/2020\/01\/d908560a26df34c4253c5ed5bd879727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiferenca n\u00eb koh\u00ebn midis leximit t\u00eb skedar\u00ebve \u00ebsht\u00eb n\u00eb p\u00ebrmasa 5-25 ms. Me shkruar duan gj\u00ebrat m\u00eb keq, diferenca arrin rreth 150 ms. Por n\u00eb k\u00ebt\u00eb rast, nuk ka nevoj\u00eb p\u00ebr ngarkimin e skedar\u00ebve t\u00eb m\u00ebdhenj, n\u00eb t\u00eb v\u00ebrtet\u00eb nuk ka asnj\u00eb kuptim, ata mund t\u00eb jetojn\u00eb ve\u00e7 e ve\u00e7 nga arkivat.<\/p>\n<p>*Teknikisht, ky server mund t\u00eb p\u00ebrdoret edhe p\u00ebr detyra q\u00eb k\u00ebrkojn\u00eb NoSQL.<\/p>\n<p><b>Metodat kryesore t\u00eb pun\u00ebs me serverin wZD:<\/b><\/p>\n<p>Ngarkimi i nj\u00eb skedari t\u00eb zakonsh\u00ebm:<\/p>\n<pre><code class=\"bash\">curl -X PUT --data-binary @test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nNgarkimi i nj\u00eb skedari n\u00eb arkiv\u00ebn Bolt (n\u00ebse nuk kalon parametrin e serverit fmaxsize, q\u00eb p\u00ebrcakton madh\u00ebsin\u00eb maksimale t\u00eb skedarit q\u00eb mund t\u00eb p\u00ebrfshihet n\u00eb arkiv, n\u00ebse kalon, skedari do t\u00eb ngarkohet si zakonisht p\u00ebrkrah arkiv\u00ebs):<\/p>\n<pre><code class=\"bash\">curl -X PUT -H &quot;Archive: 1&quot; --data-binary @test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nShkarkimi i skedarit (n\u00ebse n\u00eb disk dhe n\u00eb arkiv ka skedar\u00eb me emra t\u00eb nj\u00ebjt\u00eb, prioriteti n\u00eb shkarkim jepet normalisht skedarit t\u00eb paarkivuar):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nShkarkimi i skedarit nga arkiva Bolt (me forc\u00eb):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg -H &quot;FromArchive: 1&quot; http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>P\u00ebrshkrimi i metodave t\u00eb tjera \u00ebsht\u00eb n\u00eb dokumentacion.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">Dokumentacioni wZD<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">Dokumentacioni wZA<\/a><\/noindex><\/p>\n<p>Serveri deri tani mb\u00ebshtet vet\u00ebm protokollin HTTP, HTTPS nuk funksionon ende. Gjithashtu, metoda POST nuk mb\u00ebshtetet (ende nuk \u00ebsht\u00eb vendosur n\u00ebse \u00ebsht\u00eb e nevojshme apo jo).<\/p>\n<p>Kush gjen p\u00ebrmbajtjen n\u00eb kodin burimor, do t\u00eb zbuloj\u00eb nj\u00eb iris, nuk e duan t\u00eb gjith\u00eb, por un\u00eb nuk e kam lidhur kodin kryesor me funksionet e korniz\u00ebs s\u00eb uebit, p\u00ebrve\u00e7 p\u00ebrpunuesit t\u00eb nd\u00ebrprerjeve, k\u00ebshtu q\u00eb m\u00eb pas mund ta rishkruaj shpejt n\u00eb \u00e7do motor.<\/p>\n<p><b>ToDo:<\/b><\/p>\n<ul>\n<li>Zhvillimi i nj\u00eb replikatori dhe distribuitori t\u00eb vet\u00eb p\u00ebr mund\u00ebsin\u00eb e p\u00ebrdorimit n\u00eb sisteme t\u00eb m\u00ebdha pa sistemet t\u00eb klasterit (E gjith\u00eb gj\u00ebja me seriozitet)<\/li>\n<li>Mund\u00ebsia e rikuperimit t\u00eb plot\u00eb t\u00eb metadatas n\u00eb rast t\u00eb humbjes s\u00eb plot\u00eb (n\u00ebse p\u00ebrdoret distribuitori)<\/li>\n<li>Protokoll natyror p\u00ebr mund\u00ebsin\u00eb e p\u00ebrdorimit t\u00eb lidhjeve t\u00eb p\u00ebrhershme rrjetore dhe shofer\u00ebve p\u00ebr gjuh\u00eb t\u00eb ndryshme programimi<\/li>\n<li>Mund\u00ebsi t\u00eb zgjeruara p\u00ebr p\u00ebrdorimin e komponentit NoSQL<\/li>\n<li>Kompresimi i llojeve t\u00eb ndryshme (gzip, zstd, snappy) p\u00ebr skedar\u00eb ose vlera brenda arkivave Bolt dhe p\u00ebr skedar\u00eb t\u00eb zakonsh\u00ebm<\/li>\n<li>Kriptimi i llojeve t\u00eb ndryshme p\u00ebr skedar\u00eb ose vlera brenda arkivave Bolt dhe p\u00ebr skedar\u00eb t\u00eb zakonsh\u00ebm<\/li>\n<li>Konvertimi i videos server-side me vones\u00eb, p\u00ebrfshir\u00eb edhe n\u00eb GPU<\/li>\n<\/ul>\n<p>\nKjo \u00ebsht\u00eb gjith\u00e7ka, shpresoj q\u00eb ky server t'i sh\u00ebrbej\u00eb dikujt, licenca BSD-3, e drejta e autorit \u00ebsht\u00eb dyfish, pasi n\u00ebse nuk do t\u00eb kishte kompanin\u00eb ku punoj, as nuk do t\u00eb kisha shkruar serverin. Jam zhvillues i vet\u00ebm. Do t\u00eb isha mir\u00ebnjoh\u00ebs p\u00ebr gjetjet e gabimeve dhe k\u00ebrkesat p\u00ebr ve\u00e7ori.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/484312\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f POSIX \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445, \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0445\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55408","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f POSIX \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445, \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0445\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438\" \/>\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\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. Self-Hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f POSIX \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445, \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0445\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie\" \/>\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=\"2020-01-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:31+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\udd47Ruajtje efektive e qindra milion skedar\u00ebve t\u00eb vegj\u00ebl. Zgjidhje e vet\u00eb-hostuar | ProHoster","description":"E dashur komunitet, ky artikull do t\u00eb merret me ruajtjen dhe shp\u00ebrndarjen efektive t\u00eb qindra miliona skedar\u00ebve t\u00eb vegj\u00ebl. N\u00eb k\u00ebt\u00eb pik\u00eb, ofrohet nj\u00eb zgjidhje p\u00ebrfundimtare p\u00ebr sisteme dosje q\u00eb jan\u00eb t\u00eb p\u00ebrputhshme me POSIX, me mb\u00ebshtetje t\u00eb plot\u00eb p\u00ebr bllokimin, p\u00ebrfshir\u00eb klaster\u00ebt, dhe duket se madje \u00ebsht\u00eb b\u00ebr\u00eb pa ndihm\u00ebs t\u00eb jasht\u00ebm. Prandaj, p\u00ebr k\u00ebt\u00eb q\u00ebllim, un\u00eb shkrova serverin tim t\u00eb specializuar. Gjat\u00eb realizimit t\u00eb k\u00ebtij projekti.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","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\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. Self-Hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster","og:description":"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f POSIX \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445, \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0445\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","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":"2020-01-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55408","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:44:26","updated":"2022-09-30 03:35:08"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/55408","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=55408"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/55408\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=55408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=55408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=55408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}