{"id":779,"date":"2014-04-11T07:43:14","date_gmt":"2014-04-11T10:43:14","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=779"},"modified":"2014-04-11T07:43:14","modified_gmt":"2014-04-11T10:43:14","slug":"moosefs-sistema-de-arquivos-distribuido","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=779","title":{"rendered":"MooseFS &#8211; Sistema de arquivos distribu\u00eddo"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>Conceito e instala\u00e7\u00e3o do master<\/b><\/p>\n<div>O\u00a0<em>MooseFS<\/em>\u00a0\u00e9 um sistema de arquivos distribu\u00eddo. Em sua forma tradicional, possui um servidor (master) que \u00e9 o respons\u00e1vel pelo controle dos arquivos que ficam espalhados pelos diversos storages (chunks).<\/p>\n<p>Os usu\u00e1rios enxergam apenas o servidor master; os servidores de chunk s\u00e3o invis\u00edveis para eles. Um servidor de backup (logger), funciona como uma c\u00f3pia do master, para o caso de falhas.<\/p>\n<h1>Instala\u00e7\u00e3o do master<\/h1>\n<p>Primeiramente, vamos instalar o master. \u00c9 necess\u00e1rio instalar as depend\u00eancias. No Debian 7, execute:<\/p>\n<p><strong># apt-get install fuse gawk libfuse-dev libghc-zlib-dev libruby pkg-config python<\/strong><\/p>\n<p>Agora, vamos criar o usu\u00e1rio\u00a0<span>mfs<\/span>, respons\u00e1vel pelo MooseFS:<\/p>\n<p><strong># groupadd mfs<br \/>\n# useradd -g mfs mfs<\/strong><\/p>\n<p>Agora, baixe o arquivo compactado contendo o c\u00f3digo fonte do programa no endere\u00e7o abaixo:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.moosefs.org\/download.html\">http:\/\/www.moosefs.org\/download.html<\/a><\/li>\n<\/ul>\n<p>\u00c9 necess\u00e1rio se cadastrar no site para receber um e-mail com o link do programa. O programa \u00e9 o mesmo para o master, o logger e os chunks. O que muda, s\u00e3o os par\u00e2metros de compila\u00e7\u00e3o.<!--more--><\/p>\n<p>Ap\u00f3s baixarmos o arquivo, vamos descompact\u00e1-lo:<\/p>\n<p><strong># tar -zxvf mfs-1.6.27-1.tar.gz<\/strong><\/p>\n<p>Agora, vamos entrar na pasta criada:<\/p>\n<p><strong># cd mfs-1.6.27<\/strong><\/p>\n<p>Vamos compilar e instalar o programa:<\/p>\n<p><strong># .\/configure &#8211;prefix=\/usr &#8211;sysconfdir=\/etc &#8211;localstatedir=\/var\/lib &#8211;with-default-user=mfs &#8211;with-default-group=mfs &#8211;disable-mfschunkserver &#8211;disable-mfsmount<br \/>\n# make<br \/>\n# make install<\/strong><\/p>\n<p>O servidor master est\u00e1 instalado. Vamos ao processo de configura\u00e7\u00e3o. Entre na pasta \/etc\/mfs:<\/p>\n<p><strong># cd \/etc\/mfs<\/strong><\/p>\n<p>Nesta pasta, h\u00e1 arquivos de exemplo que podem ser usados. Vamos copi\u00e1-los:<\/p>\n<p><strong># cp mfsmaster.cfg.dist mfsmaster.cfg<br \/>\n# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg<br \/>\n# cp mfsexports.cfg.dist mfsexports.cfg<\/strong><\/p>\n<p>O arquivo mais importante para n\u00f3s, neste momento, \u00e9 o\u00a0<span>mfsexports.cfg<\/span>. Ele cont\u00e9m a rela\u00e7\u00e3o dos diret\u00f3rios que ser\u00e3o montados e as suas permiss\u00f5es.<\/p>\n<p>Este arquivo est\u00e1 bem documentado. Por exemplo, para fornecer o diret\u00f3rio\u00a0<span>\/var\/moosefs<\/span>\u00a0para a VLAN 192.168.56.0\/24, inclua a linha abaixo:<\/p>\n<div>192.168.56.0\/24 \/var\/moosefs rw,alldirs,maproot=0<\/div>\n<p>Agora, vamos at\u00e9 a pasta\u00a0<span>\/var\/lib\/mfs<\/span>\u00a0para copiarmos o arquivo de metadados bin\u00e1rio. Neste momento, esse arquivo est\u00e1 vazio:<\/p>\n<p><strong># cd \/var\/lib\/mfs<br \/>\n# cp metadata.mfs.empty metadata.mfs<\/strong><\/p>\n<p>Agora, adicione a linha abaixo no arquivo\u00a0<span>\/etc\/hosts<\/span>:<\/p>\n<div>192.168.56.1 mfsmaster<\/div>\n<p>Agora voc\u00ea pode subir o servidor master com o comando:<\/p>\n<p><strong># \/usr\/sbin\/mfsmaster start<\/strong><br \/>\n<sub>\u00a0working\u00a0directory:\u00a0\/var\/lib\/mfs<br \/>\nlockfile\u00a0created\u00a0and\u00a0locked<br \/>\ninitializing\u00a0mfsmaster\u00a0modules\u00a0&#8230;<br \/>\nloading\u00a0sessions\u00a0&#8230;\u00a0ok<br \/>\nsessions\u00a0file\u00a0has\u00a0been\u00a0loaded<br \/>\nexports\u00a0file\u00a0has\u00a0been\u00a0loaded<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a07<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a07<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a022<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a022<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a028<br \/>\nmfstopology:\u00a0incomplete\u00a0definition\u00a0in\u00a0line:\u00a028<br \/>\ntopology\u00a0file\u00a0has\u00a0been\u00a0loaded<br \/>\nloading\u00a0metadata\u00a0&#8230;<br \/>\nloading\u00a0objects\u00a0(files,directories,etc.)\u00a0&#8230;\u00a0ok<br \/>\nloading\u00a0names\u00a0&#8230;\u00a0ok<br \/>\nloading\u00a0deletion\u00a0timestamps\u00a0&#8230;\u00a0ok<br \/>\nloading\u00a0chunks\u00a0data\u00a0&#8230;\u00a0ok<br \/>\nchecking\u00a0filesystem\u00a0consistency\u00a0&#8230;\u00a0ok<br \/>\nconnecting\u00a0files\u00a0and\u00a0chunks\u00a0&#8230;\u00a0ok<br \/>\nall\u00a0inodes:\u00a024<br \/>\ndirectory\u00a0inodes:\u00a01<br \/>\nfile\u00a0inodes:\u00a023<br \/>\nchunks:\u00a075<br \/>\nmetadata\u00a0file\u00a0has\u00a0been\u00a0loaded<br \/>\nstats\u00a0file\u00a0has\u00a0been\u00a0loaded<br \/>\nmaster\u00a0&lt;-&gt;\u00a0metaloggers\u00a0module:\u00a0listen\u00a0on\u00a0*:9419<br \/>\nmaster\u00a0&lt;-&gt;\u00a0chunkservers\u00a0module:\u00a0listen\u00a0on\u00a0*:9420<br \/>\nmain\u00a0master\u00a0server\u00a0module:\u00a0listen\u00a0on\u00a0*:9421<br \/>\nmfsmaster\u00a0daemon\u00a0initialized\u00a0properly\u00a0<\/sub><\/p>\n<p>Para administrar o MooseFS, h\u00e1 um sistema WEB que deve ser iniciado com o comando abaixo:<\/p>\n<p><strong># \/usr\/sbin\/mfscgiserv<\/strong><br \/>\n<sub>\u00a0lockfile\u00a0created\u00a0and\u00a0locked<br \/>\nstarting\u00a0simple\u00a0cgi\u00a0server\u00a0(host:\u00a0any\u00a0,\u00a0port:\u00a09425\u00a0,\u00a0rootpath:\u00a0\/usr\/share\/mfscgi)\u00a0<\/sub><\/p>\n<p>Agora, acesse:\u00a0<strong>http:\/\/192.168.56.1:9425<\/strong><\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs01.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs01.jpeg\" width=\"500\" height=\"209\" border=\"0\" \/><\/a><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Instala\u00e7\u00e3o<\/b><\/p>\n<div>\n<h1>Instala\u00e7\u00e3o do backup (metalogger)<\/h1>\n<p>\u00c9 importante ter, tamb\u00e9m, um servidor de backup, que a documenta\u00e7\u00e3o do MooseFS chama de\u00a0<span>metalogger<\/span>. A instala\u00e7\u00e3o \u00e9 semelhante ao master:<\/p>\n<p><strong># groupadd mfs<br \/>\n# useradd -g mfs mfs<br \/>\n# cd \/usr\/src<br \/>\n# tar -zxvf mfs-1.6.15.tar.gz<br \/>\n# cd mfs-1.6.15<\/p>\n<p>#.\/configure &#8211;prefix=\/usr &#8211;sysconfdir=\/etc &#8211;localstatedir=\/var\/lib &#8211;with-default-user=mfs &#8211;with-default-group=mfs &#8211;disable-mfschunkserver &#8211;disable-mfsmount<\/p>\n<p># make<br \/>\n# make install<br \/>\n# cd \/etc\/mfs<br \/>\n# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg<\/strong><\/p>\n<p>Adicione o servidor master no\u00a0<span>\/etc\/hosts<\/span>:<\/p>\n<div>192.168.56.1 mfsmaster<\/div>\n<p>Agora, vamos subir o servi\u00e7o:<\/p>\n<p><strong># \/usr\/sbin\/mfsmetalogger start<\/strong><\/p>\n<p>Agora, j\u00e1 podemos ver o servidor backup atrav\u00e9s da interface gr\u00e1fica:<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs02.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs02.jpeg\" width=\"500\" height=\"90\" border=\"0\" \/><\/a><\/div>\n<p>Agora, vamos instalar o servidores que realmente armazenar\u00e3o os dados. A documenta\u00e7\u00e3o chama-os de\u00a0<span>chunkservers<\/span>.<\/p>\n<h1>Instala\u00e7\u00e3o dos chunkservers<\/h1>\n<p>A instala\u00e7\u00e3o dos\u00a0<span>chunkserver<\/span>\u00a0\u00e9 bem semelhante aos demais, mudando apenas alguns par\u00e2metros no\u00a0<span>.\/configure<\/span>:<\/p>\n<p><strong># groupadd mfs<br \/>\n# useradd -g mfs mfs<br \/>\n# cd \/usr\/src<br \/>\n# tar -zxvf mfs-1.6.15.tar.gz<br \/>\n# cd mfs-1.6.15<\/p>\n<p># .\/configure &#8211;prefix=\/usr &#8211;sysconfdir=\/etc &#8211;localstatedir=\/var\/lib &#8211;with-default-user=mfs &#8211;with-default-group=mfs &#8211;disable-mfsmaster<\/p>\n<p># make<br \/>\n# make install<br \/>\n# cd \/etc\/mfs<br \/>\n# cp mfschunkserver.cfg.dist mfschunkserver.cfg<br \/>\n# cp mfshdd.cfg.dist mfshdd.cfg<\/strong><\/p>\n<p>Dentro do arquivo\u00a0<span>mfshdd.cfg<\/span>, voc\u00ea diz quais s\u00e3o as pastas que ser\u00e3o usadas no MooseFS. Seguindo o exemplo da documenta\u00e7\u00e3o, inclu\u00edmos duas pastas:<\/p>\n<ul>\n<li><span>\/mnt\/mfschunks1<\/span><\/li>\n<li><span>\/mnt\/mfschunks2<\/span><\/li>\n<\/ul>\n<p>Salve o arquivo. Agora, vamos dar as permiss\u00f5es apropriadas para as pastas:<\/p>\n<p><strong># chown -R mfs:mfs \/mnt\/mfschunks1<br \/>\n# chown -R mfs:mfs \/mnt\/mfschunks2<\/strong><\/p>\n<p>N\u00e3o podemos esquecer de colocar o master no\u00a0<span>\/etc\/hosts<\/span>:<\/p>\n<div>192.168.56.1 mfsmaster<\/div>\n<p>Agora, \u00e9 s\u00f3 subir o servi\u00e7o:<\/p>\n<p><strong># \/usr\/sbin\/mfschunkserver start<\/strong><\/p>\n<p>Agora, podemos ver o primeiro servidor chunk na interface gr\u00e1fica:<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs03.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs03.jpeg\" width=\"500\" height=\"95\" border=\"0\" \/><\/a><\/div>\n<p>Da mesma forma, instalamos o segundo\u00a0<span>chunkserver<\/span>:<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs04.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs04.jpeg\" width=\"500\" height=\"101\" border=\"0\" \/><\/a><\/div>\n<p>Voc\u00ea pode instalar mais servidores de chunk, se quiser.<\/p>\n<h1>Instala\u00e7\u00e3o do cliente<\/h1>\n<p>Vamos instalar o cliente, ou seja, a esta\u00e7\u00e3o que acessar\u00e1 os dados. Primeiro, vamos instalar o FUSE:<\/p>\n<p><strong># apt-get install fuse<\/strong><\/p>\n<p>Agora, vamos instalar o MooseFS:<\/p>\n<p><strong># .\/configure &#8211;prefix=\/usr &#8211;sysconfdir=\/etc &#8211;localstatedir=\/var\/lib &#8211;with-default-user=mfs &#8211;with-default-group=mfs &#8211;disable-mfschunkserver &#8211;disable-mfsmaster &#8211;disable-mfsmount<\/p>\n<p># make<br \/>\n# make install<\/strong><\/p>\n<p>Adicione a linha abaixo, no arquivo\u00a0<span>\/etc\/hosts<\/span>:<\/p>\n<div>192.168.56.1 mfsmaster<\/div>\n<p>Criamos o ponto de montagem:<\/p>\n<p><strong># mkdir -p \/mnt\/mfs<\/strong><\/p>\n<p>E agora, vamos montar o disco:<\/p>\n<p><strong># \/usr\/bin\/mfsmount \/mnt\/mfs -H mfsmaster<\/strong><\/p>\n<p>Agora, podemos executar um\u00a0<span>df<\/span>\u00a0para ver o espa\u00e7o em disco dispon\u00edvel:<\/p>\n<p><strong>$ df -h \/mnt\/mfs<\/strong><br \/>\n<sub>Sist. Arq. Tam Usad Dispon. Uso% Montado em<br \/>\nmfsmaster:9421 31G 3,4G 28G 11% \/mnt\/mfs\u00a0<\/sub><\/p>\n<p>Repare que o espa\u00e7o total \u00e9 a soma de todos os tr\u00eas servidores de chunk. Temos 31 GB de espa\u00e7o, sendo 3.4 dispon\u00edvel:<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs05.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs05.jpeg\" width=\"500\" height=\"112\" border=\"0\" \/><\/a><\/div>\n<p>No menu\u00a0<span>Mount<\/span>, da interface WEB, podemos ver os clientes que est\u00e3o usando o servi\u00e7o MooseFS:<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/moosefs06.jpeg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Linux: MooseFS - Sistema de arquivos distribu\u00eddo \" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_moosefs06.jpeg\" width=\"500\" height=\"62\" border=\"0\" \/><\/a><\/div>\n<p>Para aumentar o espa\u00e7o dispon\u00edvel no MooseFS \u00e9 s\u00f3 adicionar outros\u00a0<span>chunkservers<\/span>.<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Conceito e instala\u00e7\u00e3o do master O\u00a0MooseFS\u00a0\u00e9 um sistema de arquivos distribu\u00eddo. Em sua forma tradicional, possui um servidor (master) que \u00e9 o respons\u00e1vel pelo controle dos arquivos que ficam espalhados pelos diversos storages (chunks). Os usu\u00e1rios enxergam apenas o servidor master; os servidores de chunk s\u00e3o invis\u00edveis para eles. Um servidor de backup (logger), funciona [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[477,1,42,51,68,127],"tags":[510,511,508,509],"class_list":["post-779","post","type-post","status-publish","format-standard","hentry","category-backup-2","category-viazap","category-leitura-recomendada","category-linux-linuxrs","category-redes-2","category-sistemas-de-armazenamento","tag-de-arquivos","tag-distribuido","tag-moosefs","tag-sistema"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=779"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions"}],"predecessor-version":[{"id":780,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions\/780"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}