[Artigo] Linux ou FreeBSD? Qual usar?

Iniciado por Reeves, 17 de Junho , 2010, 09:01:19 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Reeves

Linux ou FreeBSD? Qual usar em meu servidor??



Reeves: Caros amigos do Darkers, trago a vocês esse excelente artigo descutindo o uso apropriado de O.S em servidores, gostei muito e há muito conteudo relevante, mas lembre-se de não levar isso como regra! o importante é SABER e entender! espero que gostem deste artigo tanto quanto eu  ;)
Boa leitura




Por muitos anos tenho acompanhado o crescimento do sistema operacional Linux e muitas vezes me vi, durante minha estadia na universidade, dando meus primeiros passos no Linux estudando as bases da segurança de redes. Entretanto, a questão principal é que nem sempre ele é o sistema operacional mais indicado para usarmos.

Saber identificar quando usar um sistema operacional é extremamente importante para atendermos as reais necessidades dos usuários. Para quem trabalha com consultoria, minha indicação é uma só: não seja o defensor de uma única bandeira, pois é o usuário quem valida o sistema operacional depois de verificar os benefícios e as qualidades. Assim, muitas vezes a melhor solução é um conjunto de sistemas operacionais, ofertando melhor conforto, segurança e aplicabilidade para o usuário final. Isto não é nada mais do que a aplicação do tão falado termo interoperabilidade, formando sistemas híbridos convivendo pacificamente.

Este artigo visa estudar algumas características da interoperabilidade aplicada aos sistemas operacionais Linux e FreeBSD. Apontando quando um é mais indicado do que o outro, quando trabalharemos em conjunto e quando é indiferente o uso de um ou de outro.

a) Load Balance e Failover
O primeiro ponto que desejo discutir é o uso de Load Balance/Balanceamento de Carga e Failover/Controle Automático de Falhas. O Load Balance distribui os pacotes recebidos entre os elementos de um grupo de equipamentos, deixando a resposta mais rápida de um site Web, por exemplo. O Failover tem a capacidade de identificar um computador com problemas de comunicação e transferir o seu processamento de pacotes para outro elemento que apresenta seu funcionamento sem problemas.

Podemos encontrar estes elementos presentes em servidores de DNS ou em servidores de correio eletrônico usando recursos de software ou usando hardwares como switchs específicos para esta tarefa. Quando o que está em jogo é o controle de milhares de transações por segundo e custo não é um fator impactante no projeto podemos, sem sombra de dúvida, usar o controle por hardware.

Nos sistemas BSD (FreeBSD, OpenBSD, NetBSD, etc) esses controles podem ser encontrados como um recurso nativo do sistema operacional, bastando recompilar o kernel (FreeBSD) ou ser encontrado por padrão após a instalação (OpenBSD). Isto deve-se ao uso do protocolo CARP (Common Address Redundancy Protocol/Protocolo de Redundância para Endereço Comum), criado pelo time do OpenBSD, o CARP veio para atender as necessidades de ter algo similar aos protocolos  da CISCO.

O CARP cria um grupo de redundância, onde temos um host master acompanhado de hosts slaves compartilhando o uso de um endereço IP virtual. Quando o host master fica inativo é feita uma eleição entre os hosts slaves para a comunicação continuar seu funcionamento. Para não termos a perda dos pacotes que estavam sendo processados pelo host master, podemos implantar o CARP em conjunto com interfaces de sincronismo (pfsync), assim, todas as máquinas com interface de sincronismo receberão o status de todos os pacotes presentes no host master.
Para aplicarmos Load Balance no Linux, temos que instalar componentes não nativos do kernel e garantir que este novo componente funcionará sem nenhum problema de compatibilidade. Sem dúvida que isto dá muito mais trabalho além de mais testes para homologação.

b) Computação distribuída
O exemplo mais famoso de computação distribuída é o SETI (Search for Extraterrestrial Inteligence/Busca de Vida inteligente Extraterrestre), criado pela NASA no início da década de 70 para distribuir a carga de processamento matemático coletada por diversos pontos de observação espaciais entre milhares de computadores. Em 1992 a Universidade de Berkeley criou o BOINC (Berkeley Open Infrastructure for Network Computing/Berkeley Infraestrutura Aberta para Computação Distribuída) para auxiliar o SETI no uso de computadores domésticos. Com o tempo a estrutura e idéias do BOINC foi usada em outras aplicações e neste campo, tanto FreeBSD e Linux não demonstram diferenças no uso desta aplicação.

O ponto de ressalva, na minha visão, é maior simplicidade para a customização da pilha TCP/IP e buffers de memória do FreeBSD devido a maior quantidade de variáveis do kernel que podem ser modificadas durante a operação do sistema operacional.

c) Trabalho com storages
Os conceitos que servem como pilares do FreeBSD o direcionam para ser uma estrutura específica para atividades de servidores, principalmente para aplicações críticas, o que justifica seu uso por empresas como o Yahoo e Sony Japão. Dentro dessa área o uso de storages vem sendo um dos focos principais do FreeBSD, para isto, podemos usar ferramentas nativas do sistema operacional, que de forma simples fazem o uso de qualquer composição de RAID de forma simples, segura e com compatibilidade com diversas placas controladoras (Mylex, LSI Logic/AMI, 3ware, DPT SmartRAID V e VI, Adaptec SCSI RAID, Compaq e ICP Vortex).

Vejamos um exemplo onde temos um FreeBSD com cinco discos SATA em RAID-3, usando quatro discos para armazenamento de dados e um disco específico para paridade. Com apenas dois comandos temos o RAID-3 em funcionamento:
# graid3 load
# graid3 label Discos_em_RAID3 ad1 ad2 ad3 ad4 ad5
A primeira linha faz a leitura do módulo para RAID-3 (graid3) e a segunda linha cria o dispositivo em RAID-3. Depois basta só formatar o novo dispositivo criado em RAID e montá-lo:
# newfs -U /dev/raid3/Discos_em_RAID3
# mkdir /mnt/raid3
# mount /dev/raid3/Discos_em_RAID3 /mnt/raid3

d) iSCSI
Com a versão 7.0 o FreeBSD ficou mais robusto no uso de dispositivos SAN ou storages com discos iSCSI, tendo um cliente iSCSI nativo no kernel e podendo facilmente ser transformado em um servidor iSCS (iSCSI-target). O servidor pode ser compilado e instalado de forma automática com apenas uma linha de comando referenciando um dos mais de 25.000 softwares em sua biblioteca local:
# cd /usr/ports/net/iscsi-target
# make install;make clean

Outra opção é usar um iSCSI Server istgt (/usr/ports/net/istgt), que provê suporte a sistemas de arquivos ZFS, um conceito inserido pelo OpenSolaris e usado pelo FreeBSD para ampliar as capacidades de manusear storages. O ZFS é um sistema de arquivos de 128bits que pode usar composições de discos de tamanhos com mais de 16 EiB exbibyte (1 exbibyte = 260 bytes = 1,024 pebibytes) sem abrir mão de recursos como snapshots, clones, striping dinâmico, blocos de tamanho variável, quotas e reservas de espaço para ocupação. O ZFS pode ser encontrado para os sistemas FreeBSD, NetBSD, OpenSolaris, Mac OS X e Linux FUSE.

e) Firewall

O FreeBSD permite o uso do filtro de pacotes PF (Package Filter) usado pelo OpenBSD, um sistema operacional específico para firewall. O FreeBSD é considerado por muitos o melhor firewall open source do mundo, possuindo o título de em mais de 14 anos ter somente duas vulnerabilidades após a instalação. Com o PF temos o gerenciamento de regras simplificado, acompanhado de balanceamento de carga em links para entrada e saída de pacotes, priorização de pacotes, controle de banda, regras prontas para bloqueios de ataques, normalização de pacotes e uso de elementos como tabelas para armazenamentos de endereços IP, além de pontos para recarga dinâmica de regras de firewall (âncoras). Observe um exemplo para adicionar uma regra de bloqueio para três redes:
pass in proto {tcp, udp} from { 192.168.1.0/24, 192.168.2.0/24, 192.168.10.0/24} to any
Isso é equivalente a termos seis linhas de regras usando iptables, por exemplo.

f) Trabalho simples com VLAN
Já é incluso no FreeBSD por padrão a possibilidade de usarmos VLANs, assim podemos criar um roteador ou um firewall com a possibilidade de gerenciamento de múltiplas VLANs usando apenas duas linhas:
# ifconfig vlan0 vlan 14 vlandev rl0
# ifconfig vlan0 inet 192.168.11.1 netmask 255.255.255.128

A primeira linha cria o dispositivo vlan0 para trabalhar com a VLAN 14 já criada no switch e a associa a primeira placa de rede Realtek (rl0). Na segunda linha definimos o endereço IP e a mascara de rede que será usada para enviar ou receber pacotes da VLAN 14.

g) Virtualização
Com o uso do Xen o Linux é imbatível e o FreeBSD 8.x já vem preparado para ser um guest de Xen. Existem outras opções para usar o FreeBSD como host de virtualização, como o VirtualBox, por exemplo, mas o que encontramos em termo de estabilidade, desempenho e aplicação em grande escala vistos no Xen com Linux são imbatíveis.

h) VPN (Virtual Private Network)

No FreeBSD não encontramos mecanismos de VPN incorporados ao kernel, como é no OpenBSD e pode dar muito trabalho para configurar uma VPN IPSec. Se for desejado o uso de IPSec, o kernel deverá ser recompilado, abrindo caminho para ferramentas como ipsec-tool e similares. Entretanto, com a compilação simples de um dos pacotes de software presente na biblioteca do FreeBSD (/usr/ports), podemos também fazer uso do protocolo PPTP, muito usado em plataformas Microsoft.
Aqui comparando Linux com FreeBSD não vejo ganhos ou perdas, o esforço para instalação e configuração é similar, vai depender do caminho desejado.

i) I/O de disco
O FreeBSD possui um I/O de disco melhor que o do Linux com o uso do UFS2 (Unix File System com Soft Update). Assim, temos um melhor desempenho de aplicações de banco de dados, de vídeo o que façam uso de muita leitura e gravação, o que faz com que muitas empresas mundialmente reconhecidas (SunOS/Solaris, System V Release 4, HP-UX, Tru64 UNIX, etc) usem e façam suas modificações.

Outro ponto é a presença de um item que auxilia muito do processo de backup de informações, conhecido como snapshot. Um snapshot é um arquivo que guarda toda a informação do sistema operacional (diretórios, links, arquivos, propriedades, permissões etc) para uso futuro, podendo ser referenciado em um ponto de montagem (mount point). Simplificando, um snapshot é uma foto viva de todo o sistema de arquivos. Se compararmos os sistemas de arquivos presentes no Linux e no FreeBSD, veremos que existem algumas diferenças, observe a tabela seguinte.


Para quem esqueceu, só para lembrar as medidas em decimal, observe a tabela 2. Veja que a capacidade de valores máximos do UFS é bem maior do que os sistemas de arquivos usados pelo Linux. Isto se dá devido ao projeto do FreeBSD ser focado para um melhor uso de unidades para armazenamento de dados (storages).

O sistema de arquivos do FreeBSD é síncrono, o que proporciona maior resistência a crashes de disco. Com o Soft Updates, o UFS ganha a possibilidade de fazer a verificação de integridade do sistema de arquivos em segundo plano, ofertando um boot mais rápido e backups sem a necessidade de um sistema de arquivos marcados como clean. Vemos também que os inodes são prealocados, assim, não temos o risco de alocação dinâmica. Quanto ao uso de ACLs para gerenciar o acesso a diretórios e arquivos, tanto o FreeBSD quanto o Linux implementam este recurso.

Além de tudo que vimos, o FreeBSD executa sem problemas 90% das aplicações desenvolvidas para Linux, o que amplia muito os softwares ditos compatíveis com a plataforma. Isto é possível devido ao kernel do FreeBSD que reconhece a aplicação compilada para Linux e direciona as chamadas dessa aplicação para o carregamento das bibliotecas pertencentes a uma distribuição Linux. Para quem faz uso de processadores AMD 64x, o time do FreeBSD elaborou maiores possibilidades de escolha desta distribuição.

Para concluir, a escolha de um sistema operacional em ambiente de produção não pode estar focada somente na paixão, devemos verificar qual o sistema que melhor atende a todas as necessidades dos usuários e só podemos fazer isto conhecendo as soluções dispostas no mercado. Acredito que a solução para todos os problemas está em métodos eficientes das técnicas de interoperabilidade, que acabará com as barreiras de comunicação e validação entre os sistemas operacionais, sejam um Unix, FreeBSD, Linux, Mac ou Microsoft.



Referências:
http://1wt.eu/articles/2006_lb/index_10.html
http://kb.linuxvirtualserver.org/wiki/Load_balancing
http://en.wikipedia.org/wiki/Reiser4
http://en.wikipedia.org/wiki/Comparison_of_file_systems
http://br-linux.org/news2/006633.html
http://74.125.93.132/search?q=cache:clhBXu-F4kkJ:br-linux.org/news2/006633.html+FreeBSD+melhor+i/o+de+disco&cd=3&hl=en&ct=clnk

Sobre o autor:
Denis Sousa
Formado em Segurança de Dados pela Academia Latino-Americana de Segurança da Informação, sendo participante da primeira turma no Brasil. Denis é especialista em integração de sistemas heterogêneos, unindo ambientes Windows e Linux, pois usa de seus conhecimentos contidos nas certificações internacional Microsoft Certified Systems Engineer- Security (MCSE:Security), Microsoft Certified Systems Administrator – Security MCSA:Security) e MCSA:Messaging.
É especialista em segurança de redes, projetista de soluções para automatização de tarefas e auditor de segurança para ambiente de servidores.
É autor do livro:  FreeBSD - O poder dos servidores em suas mãos, ed. Novatec


  °vº   NÃO USE DROGAS,
/(_)\  USE GNU/LINUX
^ ^