Temos um storage que pensei em dar uma incrementada e prover uma solução de backup e preservação de dados utilizando ZFS. A ideia foi "por que não criar um pool ZFS em um volume do storage e entregar um ZVOL através de iscsi para uso, seja pelo servidor de arquivos ou XenServer?"
Como não posso atualizar o sistema operacional do storage, para isto precisaria de um host intermediário com duas interfaces de rede, uma ligada ao storage, outra para o initiator.
Neste host intermediário instalei o novíssimo Debian Jessie (https://www.debian.org/CD/http-ftp/#stable) e ZoL (http://zfsonlinux.org/debian.html).
Instalei os pacotes open-iscsi e iscsitarget. Depois disto foi só alterar alguns arquivos de configuração.
Logo depois de instalado o open-iscsi e antes dos comandos iscsiadm para descoberta de luns, alterei o arquivo /etc/iscsi/iscsid.conf, substituindo a linha "node.startup = manual" por "node.startup = automatic".
Com o advento do systemd, tive que fazer muita experimentação até conseguir fazer com que a ordem de execução dos daemons open-iscsi, zfs e iscsitarget ocorressem exatamente nesta ordem:
1º open-iscsi para conexão à lun do storage;
2º zfs para importação do pool criado e descrito em /etc/zfs/zpool.cache;
3º iscsitarget para disponibilizar volumes iscsi para outros initiators a partir de dispositivos ZFS, os ZVOLs.
Eis as alterações necessárias nos daemons para que se cumpra esta ordem:
1º open-scsi:
não exige alteração alguma;
2º zfs:
alteração do arquivo /lib/systemd/system/zfs-mount.service:
adicionar comentário na linha "#Before=local-fs.target";
adicionar a linha "After=open-iscsi.service"
3º iscsitarget:
adicionar "zfs-mount nas linhas
# Required-Start: $remote_fs $syslog $network $time procps zfs-mount
# Required-Stop: $remote_fs $syslog $network $time procps zfs-mount
Finalizando, já havia tido alguma experiência com falta de memória para o sistema operacional, devido ao cache do ZFS (provavelmente), que consegui contornar com a seguinte linha em /etc/sysctl.conf:
"vm.min_free_kbytes=1048576 "
Pronto! Reiniciando e tudo estando disponível automaticamente logo após o boot, basta fazer uso da lun pelos initiators. Depois basta criar snapshots e exportá-los, para preservação de dados e criação de backups.
Mostrando postagens com marcador debian. Mostrar todas as postagens
Mostrando postagens com marcador debian. Mostrar todas as postagens
segunda-feira, 4 de maio de 2015
segunda-feira, 30 de junho de 2014
ZFS no Debian Jessie (testing) - parte 3
Tenho armazenado, no meu sistema de arquivos zfs, algumas imagens .vdi de máquinas virtuais do VirtualBox na tentativa de ter um acesso a disco um pouco mais acelerado devido à raidz implantada.
Quem tiver curiosidade sobre o processo de implementação do pool zfs pode verificar em:
Infelizmente notei que após carregar as máquinas virtuais em ficava com a memória praticamente lotada e mesmo depois de desligar as máquinas virtuais a memória continuava lotada sendo que nada era cache. E quando digo lotado é basicamente 6GB de meus 8GB de RAM.
Por acaso resolvi encerrar todos os processos e dar um "modprobe -r zfs". Após isto é que tive meus GBs de memória de volta.
Como não fazia a mínima ideia de como contornar esta situação, após alguma pesquisa cheguei neste post: Excessive memory use with ZFS [SOLVED sort of].
Ainda estou avaliando a solução, mas prontamente já tive uma melhora no cenário, sendo que não cheguei a ficar com mais de 4GB comprometidos. Isto com o meu sistema desktop carregado, com o Iceweasel aberto e muitas abas.
Basicamente a solução consistem em criar o arquivo /etc/modprobe.d/zfs.conf com o conteúdo:
options zfs zfs_arc_max=2147483648
Pelo que entendi este valor seria em bytes e serve como a quantidade máxima de memória utilizada pelo sistema de cache do ZFS o ARC.
Mais informações sobre o tunning do ARC em http://docs.oracle.com/cd/E26502_01/html/E29022/chapterzfs-3.html.
Quem tiver curiosidade sobre o processo de implementação do pool zfs pode verificar em:
Infelizmente notei que após carregar as máquinas virtuais em ficava com a memória praticamente lotada e mesmo depois de desligar as máquinas virtuais a memória continuava lotada sendo que nada era cache. E quando digo lotado é basicamente 6GB de meus 8GB de RAM.
Por acaso resolvi encerrar todos os processos e dar um "modprobe -r zfs". Após isto é que tive meus GBs de memória de volta.
Como não fazia a mínima ideia de como contornar esta situação, após alguma pesquisa cheguei neste post: Excessive memory use with ZFS [SOLVED sort of].
Ainda estou avaliando a solução, mas prontamente já tive uma melhora no cenário, sendo que não cheguei a ficar com mais de 4GB comprometidos. Isto com o meu sistema desktop carregado, com o Iceweasel aberto e muitas abas.
Basicamente a solução consistem em criar o arquivo /etc/modprobe.d/zfs.conf com o conteúdo:
options zfs zfs_arc_max=2147483648
Pelo que entendi este valor seria em bytes e serve como a quantidade máxima de memória utilizada pelo sistema de cache do ZFS o ARC.
Mais informações sobre o tunning do ARC em http://docs.oracle.com/cd/E26502_01/html/E29022/chapterzfs-3.html.
quinta-feira, 12 de junho de 2014
ZFS no Debian Jessie (testing) - parte 2
Continuando o exposto na primeira parte deste tutorial (bom, vou chamá-lo assim agora) em http://meumaravilhosomundolivre.blogspot.com.br/2014/06/zfs-no-debian-jessie-testing.html, partimos para a resolução de alguns inconvenientes encontrados ao compilar e instalar o ZFS a partir do repositório git.
Notei que, depois de criado um sistema de arquivos de tamanho fixo, o dispositivo de bloco correspondente não era criado.
ls -al /dev/zvol/mypool01/data
ls: não é possível acessar /dev/zvol/mypool01/data: Arquivo ou diretório não encontrado
O problema é que nem mesmo /dev/zvol existia, então eis os passos para contornar isto.
cp /usr/lib/udev/rules.d/69-vdev.rules /etc/udev/rules.d
ZFS_UNMOUNT=yes
ZFS_SHARE=no
Foi importante que o script zfs-mount rodasse na inicialização para que não fosse necessário rodar um simples "zpool status" para que o dispositivo de bloco correspondentes ao sistema de arquivos mypool01/data aparecesse logo após o sistema carregado.
Notei que, depois de criado um sistema de arquivos de tamanho fixo, o dispositivo de bloco correspondente não era criado.
- Criar o sistema de arquivos com tamanho fixo e verificar a existência do dispositivo de bloco correspondente:
ls -al /dev/zvol/mypool01/data
ls: não é possível acessar /dev/zvol/mypool01/data: Arquivo ou diretório não encontrado
O problema é que nem mesmo /dev/zvol existia, então eis os passos para contornar isto.
- Copiar os arquivos udev para o local correto:
cp /usr/lib/udev/rules.d/69-vdev.rules /etc/udev/rules.d
- Criar o arquivo /etc/default/zfs com o conteúdo:
ZFS_UNMOUNT=yes
ZFS_SHARE=no
- Confirmar a execução do script /etc/init.d/zfs-mount na inicialização padrão:
Foi importante que o script zfs-mount rodasse na inicialização para que não fosse necessário rodar um simples "zpool status" para que o dispositivo de bloco correspondentes ao sistema de arquivos mypool01/data aparecesse logo após o sistema carregado.
terça-feira, 10 de junho de 2014
ZFS no Debian Jessie (testing) - parte 1
Finalmente depois de tanto querer, e com todo o incentivo do André Machado (Serpro), eis que me aventurei a brincar com o ZFS.
Os problema começaram desde cedo porque não pude seguir o artigo oficial em http://zfsonlinux.org/debian.html, pois a versão empacotada não compila com o kernel 3.14.
Então inicia a caçada a alguma coisa que ajude no processo de por o ZFS em pé. Entre, quem sabe, tantas outras, optei pela compilação com a ajuda do artigo http://www.graymatterboundaries.com/?p=49, configuração com a ajuda do artigo http://bernaerts.dyndns.org/linux/75-debian/279-debian-wheezy-zfs-raidz-pool e o "3.0 Frequent Mistakes" em https://github.com/zfsonlinux/pkg-zfs/wiki/Ubuntu-ZFS-mountall-FAQ-and-troubleshooting.
Na verdade eu vou relatar basicamente este artigo com um detalhe final que logo explico. Eis o passo a passo:
- Instalar o kit para compilação do zfs
- Clonar os repositórios em /root
cd /root/zfsonlinux
git clone https://github.com/zfsonlinux/spl.git
git clone https://github.com/zfsonlinux/zfs.git
./autogen.sh
./configure --prefix=/usr
make
sudo make install
(gerando pacotes Debian)
./autogen.sh
./configure
make deb
dpkg -i *.deb
git clone https://github.com/zfsonlinux/zfs.git
- Compilar e instalar o SPL
./autogen.sh
./configure --prefix=/usr
make
sudo make install
(gerando pacotes Debian)
./autogen.sh
./configure
make deb
dpkg -i *.deb
- Compilar e instalar o ZFS
./autogen.sh
./configure --with-spl=/root/zfsonlinux/spl --prefix=/usr
make
sudo make install
(gerando pacotes Debian)
./autogen.sh
./configure
make deb
dpkg -i *.deb
Em meu cenário simplificado utilizei 3 discos SATA de 2TB para criar uma raidz utilizando a notação /dev/sd{a,b,c}. Para produção a recomendação uma alternativa com nomeação de dispositivo independente da instalação do sistema operacional, como a obtida em /dev/disk/by-id/.
- Criando e configurando um pool raidz
zfs set atime=off mypool01
zfs set dedup=off mypool01
zfs create mypool01/data
zfs set mountpoint=/pool/data mypool01/data
- Criando um sistema de arquivo em mypool01 e definindo o ponto de montagem
zfs create mypool01/data
zfs set mountpoint=/pool/data mypool01/data
Até aqui tudo bem, o problema foi que depois de reiniciar, simplesmente eu não conseguia mais acesso ao pool, simplesmente um "zpool list" não listava os pools. Do que pude entender, o que controla a existência do pool zfs é o arquivo zpool.cache e eu não tinha este arquivo em parte alguma do meu sistema.
- Para criar este arquivo depois de criado o pool rodei:
zpool set cachefile=/etc/zfs/zpool.cache mypool01
Fiz alguns teste, renomeando o arquivo zpool.cache para zpool.cache.old, e realmente o zfs não encontra o pool sem este arquivo.
Uma solução de contorno pra quem criou o pool e reiniciou o sistema sem criar o arquivo zpool.cache é importar o pool e criar o arquivo zpool.cache. O importante é lembrar do nome do pool que foi criado, pois eu não descobri como obter o nome do pool com o zpool list.
- Para importar o pool
Acredito que com isto já seja possível começar a brincar com o ZFS sem muitas dores de cabeça.
segunda-feira, 8 de agosto de 2011
Suavização de Fonte do LibreOffice 3.4 no Debian Wheezy
Buenas gurizada,
Se vocês, assim como eu estava, estão com problemas na renderização das fontes do LibreOffice 3.4 no Debian Wheezy, pois seus problemas acabaram.
Basta ir no menu Ferramentas -> Opções e nesta janela, no nó LibreOffice selecionar o item Exibir e então selecionar a checkbox "Utilizar fonte do sistema para interface de usuário". Pronto!
Aí vai a screen da tela de opções.

quarta-feira, 23 de fevereiro de 2011
Cadê o sarg no debian squeeze?
Pois é, depois de muito procurar e não achar e, inclusive, de ter instalado a versão do sarg pro lenny, eis que me deparei com uma explicação: o sarg está bugado.
Então a saída é instalar o srg, que acredito seja o mesmo sarg. Não estudei muito os detalhes, mas sei que funciona da mesma forma, praticamente.
Bom, acho que era só isto :-)
Então a saída é instalar o srg, que acredito seja o mesmo sarg. Não estudei muito os detalhes, mas sei que funciona da mesma forma, praticamente.
Bom, acho que era só isto :-)
Squid e número de filedescriptors
Seu squid está deixando a navegação lenta e você tem uma rede com mais de, digamos, 400 computadores? Pois seus problemas acabaram, isto é se você for um feliz usuário de Debian ou variantes.
Adicione a linha abaixo ao arquivo /etc/sysctl.conf:
fs.file-max=100000
Rode o comando:
#systcl -p
Altere o valor da única linha do arquivo /etc/default/squid
SQUID_MAXFD=65535
Reinicie seu squid
#service squid restart
Estas configurações vão dar uma enorme folga ao sistema operacional e ao squid no trato com filedescriptors.
That's all.
Adicione a linha abaixo ao arquivo /etc/sysctl.conf:
fs.file-max=100000
Rode o comando:
#systcl -p
Altere o valor da única linha do arquivo /etc/default/squid
SQUID_MAXFD=65535
Reinicie seu squid
#service squid restart
Estas configurações vão dar uma enorme folga ao sistema operacional e ao squid no trato com filedescriptors.
That's all.
Assinar:
Comentários (Atom)
