Eu construo um servidor de arquivos FreeBSD doméstico usando o ZFS.
É um AMD X2 3200+ com 3 GB de RAM. Possui um PCI Express Gig-E. A unidade de inicialização é antiga, de 400 GB e eu tenho 4 unidades de 750 GB Seagte (uma com uma versão diferente do firmware, apenas no caso).
Iniciar o ZFS seria bom (tornaria a instalação mais simples), mas eu usei as instruções do ZFSOnRoot para configurar a unidade Root / OS com o ZFS (se todas as partições forem ZFS, não será necessário executar um fsck na inicialização para verificar os sistemas de arquivos UFS). O motivo pelo qual você deseja isso é que você pode configurar todas as suas partições (/ var, / usr, / tmp, etc.) com diferentes opções conforme necessário (como noatime e async para / usr / obj, o que acelerará o kernel compilações), mas todos compartilharão espaço de um pool comum. Em seguida, você pode configurar uma unidade de dados e fornecer a cada usuário uma partição própria (com cotações e configurações diferentes). Você pode tirar instantâneos (que são de baixo custo no ZFS).
My home server has a df that looks like:
/dev/ad0s1a 1.9G 744M 1.1G 41% /
devfs 1.0K 1.0K 0B 100% /dev
dozer/data 1.8T 62G 1.7T 3% /data
dozer/home 1.7T 9.6G 1.7T 1% /home
dozer/home/walterp 1.9T 220G 1.7T 11% /home/walterp
tank/tmp 352G 128K 352G 0% /tmp
tank/usr 356G 4.4G 352G 1% /usr
tank/var 354G 2.2G 352G 1% /var
Em termos de desempenho, copiar arquivos é muito rápido. A única coisa que gostaria de observar é que tenho usado o ZFS nos sistemas FreeBSD AMD64 com 3-4 GB e funcionou bem, mas pela minha leitura, eu estaria preocupado em executá-lo em um sistema i386 com 2 GB ou mais. menos memória.
Eu fiquei sem portas SATA na placa-mãe, então não tentei adicionar nenhuma nova unidade. A configuração inicial era simples, um comando para criar o RAIDZ e, em seguida, o comando para criar / home, que foi formatado em segundos (IIRC). Ainda estou usando a versão mais antiga do ZFS (v6), por isso tem algumas limitações (não requer unidades de tamanho igual, mas, diferentemente de um Drobo, se você tivesse 3 unidades de 750 GB e 1 TB, o resultado final será como se você tivesse 4 unidades de 750 GB).
Uma das grandes razões pelas quais usei o ZFS com o RAIDZ foram as somas de verificação de ponta a ponta. O CERN publicou um documento que documentou um teste que eles fizeram, onde encontraram mais de 200 erros de leitura não corrigidos durante a execução de um teste de R / W durante um período de algumas semanas (espera-se que o ECC em unidades de varejo tenha uma falha a cada 12 TB de leitura). Eu gostaria que os dados no meu servidor estivessem corretos. Tive uma falha grave devido a uma falta de energia (alguém sobrecarregou o no-break conectando um aquecedor de ambiente), mas quando o sistema pode voltar, o ZFS voltou rapidamente, sem os problemas padrão do fsck.
Eu gosto, porque eu poderia adicionar o CUPS ao Samba para obter um servidor de impressão. Adicionei um cache DNS e posso adicionar outro software que eu queira (estou pensando em adicionar o monitoramento SNMP aos desktops da minha casa para medir o uso da largura de banda). Pelo que gastei no sistema, tenho certeza de que poderia comprar uma caixa NAS barata, mas não teria uma caixa Unix local de 64 bits para brincar. Se você gosta do FreeBSD, eu diria que vá com ele. Se você preferir o Linux, recomendo uma solução Linux. Se você não quer fazer nenhuma administração, é quando eu iria para a caixa NAS autônoma.
Na minha próxima rodada de atualizações de hardware, estou planejando atualizar o hardware e instalar a versão atual do FreeBSD, que possui o ZFS v13. V13 é legal porque eu tenho um disco de RAM com backup de bateria que posso usar para o log do ZIL (isso faz com que as gravações gritem). Ele também suporta o uso de SSDs para acelerar o servidor de arquivos (as especificações dos novos Sun File Servers são agradáveis e as obtêm de um sistema ZFS que usa SSD para tornar o sistema muito rápido).
EDIT: (Não é possível deixar comentários ainda). Eu praticamente segui as instruções em http://www.ish.com.au/solutions/articles/freebsdzfs . A única grande mudança que existe no 7.X desde que essas instruções foram escritas foi a 7.2, e se você tiver mais de 2 GB, não deverá adicionar as três linhas a seguir no /boot/loader.conf:
vm.kmem_size_max="1024M"
vm.kmem_size="1024M"
vfs.zfs.arc_max="100M"
As instruções também explicam como criar um espelho e como colocar o sistema novamente no modo de recuperação (montado com o ZFS). Depois de jogar suas instruções uma ou duas vezes, usei o manual de administração do ZFS da Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf para entender melhor o que era o ZFS. Para criar meu repositório de dados, usei uma versão modificada do comando na página 91 para criar pools do ZFS. Sendo o FreeBSD, tive que fazer uma pequena alteração:
zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10
Onde ad4-ad10 foi encontrado ao executar dmesg | grep 'ata. * Master', esses são os nomes dos discos rígidos SATA no sistema que serão usados para a partição de big data. Na minha placa-mãe, as três primeiras portas ata (ad0-3) onde as 4 portas PATA e, em seguida, como cada porta SATA é mestre, não há números antigos.
Para criar o sistema de arquivos, eu apenas fiz:
zfs create dozer/data
zfs set mountpoint=/data dozer/tank
O segundo comando é necessário porque eu desativei os pontos de montagem padrão para compartilhamentos.