quinta-feira, 23 de outubro de 2014

rsync "cannot delete non-empty directory"

Se a execução do rsync está lhe causando arrepios com a mensagem "cannot delete non-empty directory" quando se está utilizando --delete para que o que é excluído na origem seja refletido no destino, pode ser que esteja acontecendo o mesmo que mim.

Inicialmente meu rsync era assim:


rsync -avh --delete

E então alterei para isto:

rsync -avh --exclude=Thumbs.db --delete

Acabou acontecendo de muitos arquivos Thumbs.db continuarem no destino e o --delete não observa que eles foram excluídos na origem, porque eles continuam lá. Então o que temos a fazer é --delete-excluded, para que estes arquivos que estão na origem, mas foram filtrados, e não queremos que eles continuem no destino, porque ficaram lá por uma alteração de política de rsync:

rsync -avh --delete-excluded --exclude=Thumbs.db --delete

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.


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.
  • Criar o sistema de arquivos com tamanho fixo e verificar a existência do dispositivo de bloco correspondente:
zfs create mypool01/data -V 10G
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/60-zvol.rules /etc/udev/rules.d
cp /usr/lib/udev/rules.d/69-vdev.rules /etc/udev/rules.d

  • Criar o arquivo /etc/default/zfs com o conteúdo:
ZFS_MOUNT=yes
ZFS_UNMOUNT=yes
ZFS_SHARE=no

  • Confirmar a execução do script /etc/init.d/zfs-mount na inicialização padrão:
update-rc.d zfs-mount defaults
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
apt-get install build-essential git autoconf libtool zlib1g-dev uuid-dev linux-headers-$(uname -r)
  • Clonar os repositórios em /root
mkdir /root/zfsonlinux
cd /root/zfsonlinux
git clone https://github.com/zfsonlinux/spl.git
git clone https://github.com/zfsonlinux/zfs.git

  • Compilar e instalar o SPL
cd /root/zfsonlinux/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
cd /root/zfsonlinux/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
zpool create -f -m none -o ashift=12 mypool01 raidz /dev/sda /dev/sdb /dev/sdc
zfs set atime=off mypool01
zfs set dedup=off mypool01
  • Criando um sistema de arquivo em mypool01 e definindo o ponto de montagem
mkdir /pool/data
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:
mkdir /etc/zfs
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
zpool import mypool01

Acredito que com isto já seja possível começar a brincar com o ZFS sem muitas dores de cabeça.

quinta-feira, 25 de agosto de 2011

Alterando a index key da configuração WEP no Android 2.2

Ontem chegou meu tablet android 2.2 chinês. Dizem que é pra ser um Herotab C8, embora o único nome que encontrei foi SM500CC no manual.

Bem, primeira dificuldade foi conectar à rede sem fio com criptografia WEP utilizando a index key 2, ou 1 se começar a contar do 0. Antes que me critiquem pelo uso de WEP, não está sob minha administração direta.

Depois de penar tentando achar a bendita configuração, somente de pois de instalar o http://android-wifi-ace.googlecode.com/é que consegui facilmente setar a chave 2 (facilitando, segunda chave de quatro).

Pra instalar o apk foi bem fácil, simplesmente copiei o arquivo pro root do armazenamento do tablet (ainda não tenho um SD) e então rodar o ApkInstall (que já veio com o tablet) e pronto.

Enjoy yourself!

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.
Adicionar imagem


sexta-feira, 25 de fevereiro de 2011

inComum é realmente incomum.

Acabei de implementar o inComum 0.3.3 em conjunto com o squid 2.7 em debian squeeze amd64 (virtualizado em kvm em debian squeeze amd64 :-P ).

Conto detalhes na sequência.