Fórum Debian

Versão Completa: Sistema distruibuido de arquivos DFS
Você está atualmente visualizando uma versão simplificada do conteúdo. Visualizar a versão completa com formatação.
Olá amigos, alguem sabe como montar um sistema distruibuido de arquivos (DFS – Distributed File System do windows Server), quero montar um sistema DFS no linux equivalente ao do Windows Server, e configurar um diretorio para replicação ( Diretiva de duplicação ), para que um determinado diretorio esteja sempre disponivel para os usuarios, ou seja, tenho dois compartilhamentos, um no servidor A, e outro no servidor B, se o servidor A ficar fora do ar o servidor B terá o mesmo diretorio com todos os dados para os usuarios, assim estes arquivos sempre estarão disponiveis para a rede, conforme o exemplo em http://www.juliobattisti.com.br/artigos/windows/dfs.asp, quero montar o mesmo cenário mas usando apenas servidores LINUX, alguem sabe me informar o recurso que tenho que disponibilizar nos servidores linux para obter o mesmo resultado ?
Desde já meu muito obrigado !
Olá,

O Samba suporte este tipo de implementação que você procura. Se já é intimo do Samba, d6e uma olhada neste post do amigo Apígio Simões:

http://www.aprigiosimoes.com.br/2009/09 ... o-samba-3/

Espero ter ajudado.

André Luiz
Olá, obrigado amigo, isso ajuda sim, fiz alguns testes aqui mas nao está funcionando, usei até um script para tentar rodar sincronizar, voce conhece algum tutorial para DRBD + heartBeat + samba para redundancia de dados ? ( Montagem de Cluster HA na distro Ubuntu Server 9.10 ) , obrigado!
( a distro que estou usando é Linux node2 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux
ao tentar formatar o disco virtual apresenta erro
[email protected]:~# mkfs.reiserfs /dev/drbd0
mkfs.reiserfs 3.6.21 (2009 www.namesys.com)

A pair of credits:
Vladimir Saveliev started as the most junior programmer on the team, and became
the lead programmer. He is now an experienced highly productive programmer. He
wrote the extent handling code for Reiser4, plus parts of the balancing code
and file write and file read.

Continuing core development of ReiserFS is mostly paid for by Hans Reiser from
money made selling licenses in addition to the GPL to companies who don't want
it known that they use ReiserFS as a foundation for their proprietary product.
And my lawyer asked 'People pay you money for this?'. Yup. Life is good. If you
buy ReiserFS, you can focus on your value add rather than reinventing an entire
FS.


Failed to open '/dev/drbd0': Wrong medium type.


As partições [email protected]:~# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b51f3

Device Boot Start End Blocks Id System
/dev/sda1 * 1 12158 97659103+ 83 Linux
/dev/sda2 12159 48631 292969372+ 83 Linux
/dev/sda3 48632 58357 78124095 83 Linux
/dev/sda4 58358 60801 19631430 82 Linux swap / Solaris
[email protected]:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 92G 1002M 87G 2% /
udev 2,0G 208K 2,0G 1% /dev
none 2,0G 0 2,0G 0% /dev/shm
none 2,0G 436K 2,0G 1% /var/run
none 2,0G 0 2,0G 0% /var/lock
none 2,0G 0 2,0G 0% /lib/init/rw
/dev/sda3 74G 180M 70G 1% /msvsim



[email protected]:~# ls /dev
agpgart ecryptfs loop6 ppp ram4 sda3 tty1 tty22 tty35 tty48 tty60 usbmon2 vcsa3
binder fd loop7 psaux ram5 sda4 tty10 tty23 tty36 tty49 tty61 usbmon3 vcsa4
block full lp0 ptmx ram6 sg0 tty11 tty24 tty37 tty5 tty62 usbmon4 vcsa5
bus fuse mapper pts ram7 sg1 tty12 tty25 tty38 tty50 tty63 usbmon5 vcsa6
cdrom hpet mcelog ram0 ram8 shm tty13 tty26 tty39 tty51 tty7 vcs zero
cdrw input mem ram1 ram9 snapshot tty14 tty27 tty4 tty52 tty8 vcs1
char kmsg net ram10 random snd tty15 tty28 tty40 tty53 tty9 vcs2
console log network_latency ram11 rfkill sndstat tty16 tty29 tty41 tty54 ttyS0 vcs3
core loop0 network_throughput ram12 rtc sr0 tty17 tty3 tty42 tty55 ttyS1 vcs4
cpu_dma_latency loop1 null ram13 rtc0 stderr tty18 tty30 tty43 tty56 ttyS2 vcs5
disk loop2 oldmem ram14 scd0 stdin tty19 tty31 tty44 tty57 ttyS3 vcs6
drbd0 loop3 parport0 ram15 sda stdout tty2 tty32 tty45 tty58 urandom vcsa
dvd loop4 pktcdvd ram2 sda1 tty tty20 tty33 tty46 tty59 usbmon0 vcsa1
dvdrw loop5 port ram3 sda2 tty0 tty21 tty34 tty47 tty6 usbmon1 vcsa2



)

O que pode estar errado ?
fonte dos dados para criar a redundancia, neste link http://www.guiadohardware.net/tutoriais ... eat-samba/


Desde já agradeço amigos !!
Olá, realmente não tenho experiencia com Linux-HA, mas encontrei este artigo do Jonas Silveira em :

http://www.jonas.net.br/?p=89

Veja se ele pode auxiliar.

André Luiz
Obrigado amigo, vou configurar os servidores e fazer uns testes e coloco o resultado aqui, um grande abraço!!
Consegui instalar e configurar boa parte do sistema DRDB, o problema ocorre para a formatação do disco virtual, ao tentar formatar o disco recebo a seguinte mensagem de erro...


[email protected]:/dev# mkfs.reiserfs /dev/drbd0
mkfs.reiserfs 3.6.21 (2009 www.namesys.com)

A pair of credits:
Continuing core development of ReiserFS is mostly paid for by Hans Reiser from
money made selling licenses in addition to the GPL to companies who don't want
it known that they use ReiserFS as a foundation for their proprietary product.
And my lawyer asked 'People pay you money for this?'. Yup. Life is good. If you
buy ReiserFS, you can focus on your value add rather than reinventing an entire
FS.

Vitaly Fertman wrote fsck for V3 and maintains the reiserfsprogs package now.
He wrote librepair, userspace plugins repair code, fsck for V4, and worked on
developing libreiser4 and userspace plugins with Umka.


Failed to open '/dev/drbd0': Wrong medium type.



Pesquisei na Internet e em diversos foruns, sem sucesso, nao encontrei qualquer informação sobre como contonar este tipo de problema, todas as partiçoes estão com tabela de arquivos ext3, tentei ainda formatar este disoc virtual usando


[email protected]:/dev# mkfs.ext3 /dev/drbd0
mke2fs 1.41.9 (22-Aug-2009)
mkfs.ext3: Wrong medium type while trying to determine filesystem size


E mesmo assim nao consegui sucesso neste disco, segue meu fstab para referencia



# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# / was on /dev/sda1 during installation
UUID=89e11352-5d0e-4759-99af-f144d6c54439 / ext3 errors=remount-ro 0 1
# /database was on /dev/sda2 during installation
#UUID=b8bd9e49-24c0-44fe-a563-4e1af1abccaa /database ext3 defaults 0 2
# /msvsim was on /dev/sda3 during installation
UUID=4d538aa6-5419-4961-9379-2a3eab793534 /msvsim ext3 defaults 0 2
# swap was on /dev/sda4 during installation
UUID=3dd758a6-f1e5-4887-b2ee-36807021f872 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/drbd0 /database reiserfs noauto 0 0


Alguém aqui no forum já teve este tipo de problema na configuração de cluster HA usando DRDB ?
Desde já agradeço a ajuda amigos, um grande abraço para todos !!!
Olá amigos, depois de pesquisas e testes consegui fazer o DRBD rodar, usei duas maquinas com hardware distinto, porém os HDs eram iguais, dois discos de 500GB da seagate, segue tutorial.

Servidores node1 e node2

Node1 ip 192.168.0.195/24
Node2 ip 192.168.0.194/24
Instalação
A instalação do drbd no Debian é simplificada, pois este sistema já possui todos os pacotes necessários para a utilização dele.

Este manual irá cobrir a instalação a partir do module-assistant, o drbd poderia ser instalado de outras maneiras, mas este não é o escopo desta documentação.

Instalando pré-requisitos:

# apt-get install module-assistant

Atualizando o module-assistant:

# m-a update


## Instalação do DRBD node1 e node2

aptitude install drbd8-utils


## configurar arquivo hosts
[email protected]:/etc# cat hosts
127.0.0.1 localhost
192.168.0.195 node1.vannucci.br node1
192.168.0.194 node2.vannucci.br node2

[email protected]:/etc# cat hosts
127.0.0.1 localhost
192.168.0.194 node2.vannucci.br node2
192.168.0.195 node1.vannucci.br node1

## configurar o arquivo drbd.conf em /etc
vi drbd.conf

global { usage-count no; }
common { syncer { rate 100M; } }
resource mirror1 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "secret";
}
on node1 {
device /dev/drbd0;
disk /dev/sda2;
address 192.168.0.195:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sda2;
address 192.168.0.194:7788;
meta-disk internal;
}


## :::: desmontar a partição que será replicada nos dois nos
node1 e node2
umount /database



## zerar a partição que será replicada nas duas máquinas
dd if=/dev/zero of=/dev/sda2 bs=1M count=128



[email protected]:/etc# dd if=/dev/zero of=/dev/sda2 bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 1,3471 s, 99,6 MB/s



[email protected]:/etc# dd if=/dev/zero of=/dev/sda2 bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 1,84824 s, 72,6 MB/s



## CRIAR O DISCO VIRTUAL nas duas maquinas, fique atendo ao nome do recurso dentro do arquivo
drdb.conf que é utilizado para essa atividade

[email protected]:/etc# drbdadm create-md mirror1
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.


## carregar o modulo
modprobe drbd


## Atar o disco nas duas máquinas
drbdadm attach msv

## inicia drbd
[email protected]:/etc# /etc/init.d/drbd start


## ver status
node1 segue

[email protected]:/etc# cat /proc/drbd
version: 8.3.3 (api:88/proto:86-91)
GIT-hash: 49bfeeaf3690ad0b9afd5376feda9e9eb34a30f3 build by [email protected], 2010-10-27 15:17:08
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:371082100


node2 segue
[email protected]:/etc# cat /proc/drbd
version: 8.3.3 (api:88/proto:86-91)
GIT-hash: 49bfeeaf3690ad0b9afd5376feda9e9eb34a30f3 build by [email protected], 2010-10-27 17:15:56
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:371082100


:::::::::: atenção agora
Para verificar se o DRBD iniciou e conectou com sucesso, execute o comando:

# cat /proc/drbd

O resultado deverá ser semelhante a:

version: 0.7.19 (api:78/proto:74)
SVN Revision: 2212 build by [email protected], 2006-06-22 21:12:58
0: cs:Connected st:Secondary/Secondary ld:Inconsistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:656 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured

O importante nessa saída são as a linhas do dispositivo drbd que foi criado (0).

cs:Connected
A chave cs: armazena a informação de conexão do drbd, seu conteúdo sendo Connected significa que o dispositivo drbd está conectado entre as duas máquinas.

st:Secondary/Secondary
A chave st: é responsável por armazenar a informação sobre o estado das máquinas. O seu conteúdo Secondary/Secondary significa que as duas máquinas estão como secundárias.

ld:Inconsistent
A chave ld: é responsável por armazenar a informação sobre a consistência da sincronização entre as máquinas. O seu conteúdo Inconsistent significa que os dados dos discos são diferent


## Definir a maquina primaria, execute no node1
drbdadm primary all

Este procedimento deverá ser realizado cuidadosamente, pois a partir deste momento, o drbd estará sincronizando os dados da máquina que foi definida como primária para a máquina secundária. Isto significa que TODOS os dados na partição usada pelo drbd na máquina secundária, serão apagados, além disso, os dados da máquina primária serão espelhados na máquina secundária.
Se ocorrer um erro, não se preocupe, é normal, isso acontece pois o drbd se recusa a se tornar primário caso o id seja inconsistente.

Para resolver este problema é necessário pedir para o drbd forçar esta sincronização. Isso é feito através do parâmetro --do-what-I-say, esta "funcionalidade" foi criada para evitar que os dados da máquina secundária fossem apagados, sem o real consentimento e consciência do administrador do sistema. Na versão 0.8 do drbd, o parâmetro --do-what-I-say foi substituído por --overwrite-data-of-peer com o objetivo de fazer mais sentido para os usuários do drbd.

Tente tornar uma das máquinas como primária, desta vez com os parâmetros corretos para esta primeira sincronia.

# drbdadm -- --do-what-I-say primary all
para a versão 8 use
# drbdadm -- --overwrite-data-of-peer primary all

Caso não apareça nenhuma mensagem de erro, significa que o comando foi bem sucedido.


## Para verificar o status no node 1 execute a verificação usando cat

[email protected]:/etc# cat /proc/drbd
version: 8.3.3 (api:88/proto:86-91)
GIT-hash: 49bfeeaf3690ad0b9afd5376feda9e9eb34a30f3 build by [email protected], 2010-10-27 15:17:08
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
ns:790232 nr:0 dw:0 dr:796188 al:0 bm:48 lo:1 pe:78 ua:179 ap:0 ep:1 wo:b oos:370294356
[>....................] sync'ed: 0.3% (361612/362384)M
finish: 8:11:45 speed: 12,532 (11,584) K/sec

Note que em 0: cs: temos a informação ro:Primary/Secondary ainda Inconsistent , o mais importante a partir desse ponto foi a definição da maquina primária, note que agora os discos estão sincronizados como pode ser observado em cs:SyncSource

Para acompanhar a replicação de dados use o comando

watch -n1 cat /proc/drbd

o resultado apresentado será

Every 1,0s: cat /proc/drbd Thu Oct 28 07:32:31 2010

version: 8.3.3 (api:88/proto:86-91)
GIT-hash: 49bfeeaf3690ad0b9afd5376feda9e9eb34a30f3 build by [email protected], 2010-10-27 15:17:08
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
ns:5135804 nr:0 dw:0 dr:5141372 al:0 bm:313 lo:1 pe:90 ua:167 ap:0 ep:1 wo:b oos:365949172
[>....................] sync'ed: 1.4% (357372/362384)M
finish: 7:56:29 speed: 12,784 (11,480) K/sec



Usando o DRBD

A partir do momento que o drbd estiver configurado, os discos rígidos individuais de cada máquina não deverão ser utilizados diretamente. Todo acesso deverá ser realizado através do dispositivo "virtual" /dev/drbd0.

As aplicações que são executadas em userland não irão enxergar nenhuma diferença entre o dispositivo drbd e qualquer outro dispositivo de blocos.

Desta forma teoricamente é possível fazer qualquer coisa que se pode fazer com um dispositivo de blocos com o dispositivo drbd.

IMPORTANTE: Para acessar, formatar, montar, particionar e etc o dispositivo drbd, é necessário que a máquina que vá acessar o dispositivo seja primária. O Drbd 0.7 não deve ser usado em duas máquinas como primária ao mesmo tempo, sobre o risco, caso não funcione, de corromper os dados e sistemas de arquivos dos discos.

Formatando o dispositivo criado:
Poderá ser utilizada qualquer ferramenta de criação de qualquer sistema de arquivos.
Neste documento será utilizado o sistema de arquivos ext3 e o utilitário mkfs.ext3.
Na máquina primária execute o comando:

# mkfs.ext3 /dev/drbd0


[email protected]:/database# mkfs.ext3 /dev/drbd0
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
23199744 inodes, 92770525 blocks
4638526 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
2832 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968

Writing inode tables: 217/2832


formatando o dispositivo criado:

Poderá ser utilizada qualquer ferramenta de criação de qualquer sistema de arquivos.

Neste documento será utilizado o sistema de arquivos ext3 e o utilitário mkfs.ext3.

Na máquina primária execute o comando:

# mkfs.ext3 /dev/drbd0

Montando o dispositivo criado:

Na máquina primária execute o comando:

# mount -t ext3 /dev/drbd0 /database

Desmontando o dispositivo criado:

Na máquina primária execute o comando:

# umount /dev/drbd0

Rodando fsck no dispositivo criado:

Na máquina primária execute o comando:

# fsck /dev/drbd0

Alternando entre Primário e Secundário:
Na máquina primária execute o comando:

# drbdadm secondary all

Na máquina secundária execute o comando:

# drbdadm primary all


Utilizando o script de inicialização do DRBD

Agora já é possível parar o serviço através do script.

# /etc/init.d/drbd stop

Para iniciar o serviço utilize:

# /etc/init.d/drbd start
Procedimento manual

Para parar o drbd, torne a máquina secundária:

# drbdadm secondary all

Desligue e desconecte o drbd:

# drbdadm down all

Por fim, remova o módulo:

# rmmod drbd


Testando se tudo está funcionando corretamente
Monte o dispositivo na máquina primária:

# mount -t ext3 /dev/drbd0 /database

Crie um arquivo no diretório onde foi montado o drbd, por exemplo:

# cd /database/ ; echo funcionou > teste
# ls

Verifique o espaço disponível no dispositivo:

# df -h /dev/drbd0

Desmonte o dispositivo: (desmontamos para poder colocar a maquina primaria como secundária)

# cd / ; umount /dev/drbd0

Torne a máquina primária em secundária:

# drbdadm secondary all

Tornar a outra máquina em primária:

Na outra máquina digite:

# drbdadm primary all

Montar o dispositivo na nova máquina primária: (Agora a maquina secundária será a primária)

# mount -t ext3 /dev/drbd0 /database

Verificar se o arquivo criado na antiga primária existe na nova primária:

# ls /database
# cat /database/teste

Se funcionou parabéns, por você ter conseguido ler este documento até o final e por ter uma instalação plenamente funcional do drbd.


Ahh, a fonte desses dados é do site VOL
[ http://www.vivaolinux.com.br/artigo/Ins ... /?pagina=1 ]


Obrigado andlss pela atenção ao tópico, e ajuda !!
Um grande abraço para todos!!
URL de Referência