Arquivo da tag: ntfs

Como ativar compressão em sistemas de arquivos no Linux

Imagine que você precise fazer um “export” de um banco de dados de 100 GB e você tem só 50 GB livres no seu servidor. Você pode facilmente criar o export direto para um arquivo .gz. É rápido e fácil. Mas imagine agora que seu banco de dados corrompeu e você precisa restaurar os dados. Até onde eu sei você vai precisar baixar o export inteiro e não vai ter espaço para isso porque o banco não consegue ler o export de dentro do arquivo .gz. (Se alguém souber como, me avise que eu atualizo este artigo). A alternativa neste caso seria baixar o backup em outro servidor, montar via NFS no servidor de destino e ter o custo da rede para fazer o import novamente.

Outro exemplo: Você tem um servidor de arquivos com dados raramente consultados (planilhas, arquivos de texto, etc) e eles ocupam muito espaço. A alternativa de novo é zipar os arquivos, mas não é muito prático descompactar quando for utilizar os arquivos novamente.

No Windows Server 200X, existe a compactação do NTFS, nativa. Basta ir em propriedades, Avançados, Compactar…

E no Linux? Eu já li alguma coisa sobre compactação usando Reiser4, mas nunca vi funcionar. E ainda por cima Reiserfs depois que o Hans Reiser foi preso por matar a mulher, tem um futuro ameaçado.

Felizmente eu achei uma solução elegante utilizando o Fusecompress. Como o próprio nome diz, o Fusecompress usa Fuse que é um componente do Linux que permite montar dispositivos sem precisar de direitos de root. Além do Fusecompress, existem dezenas de implementações que utilizando Fuse para montar desde ISOs até partições NTFS.

O legal do Fusecompress é poder utilizar qualquer partição já criada, independente do sistema de arquivos utilizado. Basta você apontar um diretório que será utilizado como respositório para um ponto de montagem qualquer. Por exemplo: para montar o diretório /origem no /destino, basta executar o comando:

fusecompress /origem /destino

Se você executar um df -h aparecerá o seguinte retorno.

/dev/sda3             170G  108G   63G  64% /
fusecompress          170G  108G   63G  64% /destino

Como você pode ver no exemplo acima, o disco /destino é o mesmo do /. Não é necessário utilizar nenhum partição específica para isso. Agora você pode usar o /destino para “jogar” os arquivos que deseja armazenar de forma compactada. Para testar eu copiei um export de Oracle de 30 GB para o diretório /destino. Dando um ls, é possível comparar o /origem (que efetivamente está armazenado do disco) com o /destino (que é acessável utilizando o fusecompress). Neste caso a taxa de compressão é de pouco mais de 6 para 1. Nada mal. Para ver a diferença entre o tamanho real do arquivo e o tamanho em disco basta executar o comando:

ls -lha  /origem/arquivo /destino/arquivo

O retorno será parecido com o abaixo:

-rw-r--r-- 1 vicente vicente 4.8 GB Jun 29 11:25 export
-rw-r--r-- 1 vicente vicente 30 GB  Jun 29 11:25 export

Note que o arquivo é armazenado em disco no /origem e lá aparece com 4.8 GB.  Ser você for abrir este arquivo sem montar com o fusecompress só achará cobras e lagartos. Agora se você montar no /destino poderá acessar o arquivo do mesmo jeito que acessaria um arquivo não compactado. Note que é uma compactação bem razoável que vem com um custo de performance grande com uso intensivo de CPU e uma demora bem maior para realizar a criação ou cópia deste arquivo para o /destino. Para copiar do /destino no entanto a demora não é tão grande. Por padrão é utilizado o formato ZLIB para compactação. É possível utilizar os formatos LZO (rápido, mas usa muita memória. Em um teste que eu fiz, faltou memória em uma máquina com 2 GB de RAM e a operação foi abortada), BZ2 (compacta muito mas é muito lerdo) e LZMA (que não testei). Caso queira testar estas opções, basta executar man fusecompress e ver quais são os parâmetros.

Caso precise desmontar o volume comprimido basta utilizar o comando:

fusemount -u /destino

Com certeza esta é uma opção interessante para quem precisa guardar dados muito volumosos e não tem espaço suficiente. Mas não custa avisar: se for utilizar o fusecompress em produção, você vai precisar testar e ter certeza que vai funcionar com segurança para o seu ambiente. Os testes que eu fiz foram em ambiente de teste e eu não dou nenhuma garantia de funcionamento. Lembre-se que não adianta xingar a minha mãe, ela nem gosta de Linux…

Convertendo uma unidade de FAT para NTFS

Caso você tenha uma partição no Windows como FAT e deseja convertê-la para NTFS execute o seguinte comando em uma janela DOS:

convert c: /fs:ntfs

Substitua c: pela letra da partição que deseja converter. Se a partição não estiver em uso será convertida imediatamente. Caso esteja sendo utilizada, a conversão ocorrerá no próximo boot.

Eu nunca vi este comando causar qualquer problema mas por precaução faça um backup de todos os seus arquivos.

Montando NTFS no Linux para escrita, acabou o sofrimento?

O padrão do Kernel 2.6 do Linux é prover um driver para acesso de partições NTFS somente de leitura. Para escrita é mais complicado. Eu encontrei 4 alternativas para acesso de escrita em de partições NTFS, são elas:

Captive -Funciona utilizado o arquivo ntfs.sys nativo do Windows XP ou Windows 2000 (não funciona com o ntfs.sys do Windows Vista). Faz (ou fazia já que o projeto não é mais mantido) algo parecido que o NDISwrapper faz com drivers de placas Wireless. A última versão do Captive é de 26/1/2007.

NTFS-3G – É um driver para Linux, FreeBSD, Mac OS X, NetBSD e Haiku que levou 12 anos para ser desenvolvido. Confesso que não testei mas a propaganda do site é encorajadora. Segundo o FAQ do site é possível inclusive instalar o Linux diretamente em uma partição NTFS!

Paragon NTFS for Linux -Solução proprietária para acesso total de partições NTFS. Eu pessoalmente não acho razoável ter que pagar 30 dólares para uso pessoal e 150 para uso profissional desta solução…

Usando um dummy file – O artigo do link descreve como usar um arquivo grande para servir de “Porta-Arquivos” entre Windows e Linux. Como o suporte de escrita do driver do kernel só suporta gravar se o tamanho do arquivo não for alterado, usa-se o arquivo grande para comportar os arquivos a serem transferidos.


http://pagead2.googlesyndication.com/pagead/show_ads.js