Como trabalhar com vários arquivos ou partições de swap no Linux

Algumas pessoas precisam dividir seu espaço de troca ou memória virtual em diversos dispositivos físicos ou arquivos.
O recurso do swap, no Linux, é bastante maleável e flexível neste ponto.
É comum adquirir um computador e separar uma partição para o swap baseado na quantidade de memória presente no sistema.

Acrescentar um disco rígido ou um outro pente de memória, podem motivar a alteração na sua configuração de swap.

Por outro lado, fazer upgrade de hardware também é comum para muitos usuários.
Ao acrescentar memória RAM, suas necessidades para swapping mudam.
Instalar um SSD no sistema, ao lado do HDD, torna possíve aproveitar o recurso de hardware novo para obter melhor desempenho em tarefas pesadas.
Por estes e outros motivos você pode se ver forçado ou tentado a querer alterar a configuração do seu sistema de memória virtual.


Por favor, leia o artigo Perguntas e respostas sobre o swap, caso ainda restem dúvidas sobre o assunto.
Naquele artigo, há uma tabela com a relação entre quantidade de memória e tamanho de swap adequado — caso você tenha dúvidas sobre este quesito também.

Como configurar o fstab para as suas partições de swap

Não há segredo para configurar o swap no fstab.
Trata-se de um tipo especial de sistema de arquivos e geralmente segue a mesma configuração em todos os sistemas.
Esta é uma configuração modelo do swap, no fstab:

/dev/hda6   swap     swap   defaults        0   0

É seguro adotar este modelo para todas as partições e arquivos swap presentes no seu sistema. Faça apenas as alterações necessárias para refletir a sua situação.
Para fazer com que o fstab tenha efeito, você precisa reiniciar o sistema ou usar o comando mount:


sudo mount -va

Você também pode usar o comando swapon para ativar imediatamente um arquivo ou partição swap:


sudo swapon /dev/sdb2 /dev/sda2

Indique, para o swapon, todas as partições/arquivos swap presentes, que você queira usar.
No exemplo, acima, relacionei as minhas duas partições em ordem, começando pela mais prioritária.
Mas lembre-se que os ajustes feitos com o mount e swapon se perdem após reiniciar o sistema.
É necessário editar o fstab, para ter uma configuração persistente.
Sempre é possível usar o swapon, também para verificar a sua configuração de espaço de troca atual:


sudo swapon -v

[sudo] senha para justincase: 
NAME      TYPE      SIZE USED PRIO
/dev/sdb2 partition   3G   0B   -1
/dev/sda2 partition 8,8G   0B   -2

Leia mais sobre como criar um arquivo de swap.

Como dar mais prioridade a uma partição ou arquivo de swap

Se uma partição swap estiver em um drive mais rápido que os outros (um SSD, por exemplo), pode ser interessante configurar o sistema para começar a fazer o swapping por este dispositivo, que vai oferecer tempo de resposta muito menor.
Veja como especificar as prioridades de swap, no fstab:

/dev/sdb2   none    swap    sw,pri=2    0   0
/dev/hda2   none    swap    sw,pri=1    0   0

Com esta configuração (acima), o kernel irá priorizar a partição /dev/sdb2 (pri=2) — com o maior valor de prioridade da lista.
Assim que sua capacidade se esgotar, o kernel passará a usar a partição /dev/hda2 (pri=1), com valor de prioridade menor.
O valor da prioridade pode variar entre 0 e 32767.
0 é a menor prioridade possível e 32767 é a máxima.

Dê prioridade máxima ao arquivo ou partição swap que se encontrar no dispositivo de armazenamento mais rápido.
Esta configuração irá minimizar a perda de desempenho causada pelo uso do swap.

Configuração de RAID no swap

É possível fazer uso simultâneo de todas as partições swap disponíveis no seu sistema.
Para obter esta configuração, basta dar o mesmo nível de prioridade a todas elas.
Veja um exemplo:

/dev/hdb3   none   swap   sw,pri=1   0   0
/dev/hdd3   none   swap   sw,pri=1   0   0
/dev/hdc3   none   swap   sw,pri=1   0   0

Para obter um desempenho melhor, o ideal é que cada partição esteja em um drive físico diferente.

Conclusão

Na imagem, abaixo, você pode ver como configurei o meu swap
configuração do swap no linux fstab
Com 8 GiB de memória RAM e um SSD de 24 GiB, julguei interessante distribuir o espaço de troca recomendado, de 11 GiB entre o SSD e o HDD.
Assim, deixei 3 GiB de swap na unidade de estado sólido e o restante no disco rígido — dando maior prioridade à primeira.
Houve ganho de performance no sistema, toda vez em que foi necessário fazer uso da memória virtual.
Infelizmente, a unidade SSD já tem mais de 5 anos e eu espero que esta configuração tenha algum impacto negativo na sua durabilidade.
Tudo tem um preço, não é?

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

http://www.tldp.org/HOWTO/Partition/setting_up_swap.html.

Qual o melhor sistema de arquivos para usar dentro de uma máquina virtual

Dentro de uma máquina virtual, você provavelmente terá um ou mais discos virtuais. Cada qual, com uma ou mais partições.
Quanto mais for otimizado uso dos recursos de hardware/software, melhor será o desempenho do trabalho e das tarefas executadas dentro das VMs, lógico.
Este assunto pode suscitar várias dúvidas — por isto sugiro, dar uma olhada na tag #sistema-de-arquivos, deste blog — onde você poderá encontrar artigos complementares.

É um tema muito vasto e eu não sou o dono da verdade — por isso, sinta-se à vontade para comentar sobre a sua experiência no assunto.

Neste post, vou discutir especificamente qual o mais recomendado para formatar os discos rígidos (ou SSD) virtuais usados em máquinas virtuais (ou VMs).
No contexto deste artigo, uso algumas máquinas virtuais Debian 9 “Stretch” testing. O drive físico, em que se encontram instaladas, é um HDD (disco rígido).


Se você está com pressa e usa Linux, a resposta rápida (e mais segura), para a pergunta do título, é: formate com o ext4! 😉
Caso você tenha 2 ou 3 minutos (a depender da velocidade com que você consegue ler), posso explicar melhor as vantagens e desvantagens do ext4 e de outros sistemas de arquivos — e isto pode levar a outras respostas…

Em que casos o ext4 é perfeito para formatar um HD dentro de uma máquina virtual

O ext4 está para ser substituído, no universo GNU/Linux, há um bom tempo.
Este processo está em curso há mais ou menos uma década e pode levar outra para ser concluído. Sistema de arquivos é uma coisa séria e precisa de muitos testes para se provar confiável, seguro, eficiente.
O ext4 ou fourth extended filesystem (quarto sistema de arquivos extendido) teve sua primeira versão estável lançada em Outubro de 2008 — o que lhe dá, aproximadamente, 10 anos de estrada.

É o mais jovem (e, possivelmente, último) de uma linhagem, iniciada em 1992, com o ext — criado pelo desenvolvedor Francês, Rémy Card.

Este fato eleva o tempo de experiência do sistema, como um todo, para aproximadamente 25 anos.
Por isto é que o ext4 satisfaz as condições de segurança e eficiência.
Ele incorpora, inclusive, recursos modernos e avançados para manipular dados eficientemente em unidades SSD.

Se você tem dúvidas e precisa decidir rapidamente, opte pelo ext4.

virtualbox snapshot list
A falta de suporte nativo a snapshots no ext4, dentro do contexto de uma máquina virtual, pode ser um ponto a favor: por que o torna mais leve.
Para quem pretende rodar máquinas virtuais dentro do Virtual Box ou qemu, por exemplo, o suporte já está incluído no programa — o que o torna dispensável dentro do sistema de arquivos hóspede.

Outro argumento a favor do ext4: se o host (máquina hospedeira), já usa um sistema de arquivos com suporte a snapshots (como o BTRFS ou o ZFS), não há necessidade para a redundância.

O que os outros sistemas de arquivos oferecem a mais

Testar outras opções é sempre o melhor caminho para descobrir o que se adequa às suas necessidades.
Se as VMs estão em um host com SSDs, certamente é mais benéfico usar um sistema de arquivos construído do zero para este tipo de tecnologia.
Os sistemas de arquivo BTRFS e ZFS podem oferecer melhor performance dentro das seguintes situações, entre outras:

  • As VMs estão em um host equipado exclusivamente com SSDs.
  • Por alguma razão, você necessita do suporte a snapshots dentro do sistema de arquivos hóspede.
  • Os sistemas de armazenamento dos hóspedes são realmente grandes, você pretende usar RAID, pools etc.

Referências

Opções avançadas de conversão FLAC ou OGG para MP3 sob demanda com mp3fs

Quando comecei a usar o mp3fs, não imaginava que iria fazer tanto uso deste sistema de arquivos virtual.
O fato é que ele me permite manter backup de todos as minhas músicas apenas em FLAC ou OGG.
Quando eu preciso transferir músicas para algum outro dispositivo que só tem suporte a MP3, o mp3fs resolve o problema com a criação de um sistema de arquivos virtual e a conversão on the fly.

Isto me livra do peso da redundância — ou algo próximo de 50% de todo o espaço ocupado por músicas em meu computador.

Se você quiser saber sobre os recursos básicos do funcionamento do mp3fs e sobre como instalá-lo no seu sistema, leia o artigo como converter arquivos FLAC para MP3, sob demanda, com mp3fs.

Ajustes sobre a qualidade da mídia

Você pode especificar a qualidade da conversão sob demanda para todos os arquivos.
Veja as opções de codificação possíveis:

  • --quality — determina a qualidade geral das conversões.
    Os valores podem ir de 0 (qualidade máx.) a 9 (velocidade máx.).
    O padrão é 5 (caso você não especifique nada neste quesito).
    Quanto maior a qualidade, maior o impacto sobre a performance do sistema — em outras palavras, os arquivos .mp3 resultantes ficarão maiores e o processo de conversão é mais demorado.

    Se o seu hardware for razoavelmente atual, não vejo motivo para não usar a qualidade máxima.
    Por outro lado, o manual do LAME recomenda usar o valor 2.
    A decisão é sua.

  • -b — determina o bitrate dos seus arquivos MP3. Os valores possíveis são 96, 112, 128 (padrão), 160, 192, 224, 256 e 320
  • --gainmode — determina o modo de ganho para todos os arquivos.
    Escolha 0, para ignorar; 1, para preferir o ganho predeterminado do álbum ou 2 (padrão), para manter e uniformizar o ganho por cada trilha.
  • --gainref — determina o ganho em decibéis. Se nenhum valor for fornecido, o sistema usará 89 dB.

No exemplo que segue, montei um dispositivo de armazenamento externo WD Elements, com uma coleção de músicas em FLAC, fazendo uso de algumas das opções acima
O drive está montado em “/media/justincase/wdelements/music/”. A segunda pasta (vazia, por enquanto) é a do sistema de arquivos virtual, criado e usado pelo mp3fs:

sudo mp3fs -b 320 --gainmode=0 --quality=0 /media/justincase/wdelements/music/ /mnt/music/mp3/ -o allow_other,ro

No final da linha as opções de montagem, “-o allow_other,ro”, que serão abordadas no próximo tópico.

Opções de montagem

As opções de montagem podem ser obtidas através do comando

mp3fs --help

Você pode combinar várias delas, após o parâmetro “-o”, separadas por vírgulas. Segue algumas das mais comumente usadas:

  • -o allow_other — tal como usado no exemplo acima, permite a outros usuários, além do que montou o sistema de arquivos, terem acesso para executar as músicas.
  • -o ro — indica que o sistema de arquivos é apenas-para-leitura (read-only). É redundante, pois o mp3fs só tem a opção de montar o sistema de arquivos desta forma.
  • -o nonempty — monta também arquivos e/ou diretórios vazios.
  • -o fsname=NOME — nomeia o sistema de arquivos para NOME.
  • -o direct_io — usa entrada/saída direta.
  • -o kernel_cache — faz o caching através do kernel.
  • -o from_code=CHARSET — determina a codificação de caracteres original, caso você esteja tendo dificuldade para ver os nomes corretos dos arquivos.
  • -o to_code=CHARSET — determina a codificação de caracteres do sistema de arquivos destino. Nesta e na opção anterior, o padrão é UTF-8.

Leia mais sobre as vantagens do FLAC sobre o MP3.

Veja como fazer conversão sob demanda de arquivos de áudio FLAC e OGG para MP3.

Mesmo gostando de ouvir suas músicas com a máxima qualidade possível, às vezes é preciso fazer concessões à compatibilidade.
O fato é que muitos players de áudio não suportam uma grande variedade de padrões, além do velho MP3.
Já falei antes sobre a superioridade do FLAC em relação ao MP3, mas o segundo ainda é o mais suportado.
Em casa, fiz o backup de todos os meus CDs em FLAC, mas o som padrão do carro não suporta nada além de MP3, WMA ou WAV — todos proprietários.

Isto quer dizer que, ou ouço os FLAC do celular via Bluetooth ou os converto para um dos 3 formatos suportados para reproduzir a partir de um pendrive ou CD.
É chato… mas é o jeito.

Há inúmeras ferramentas para fazer este tipo de conversão — aplicativos GUI ou CLI, web apps etc.
Neste post vou abordar o uso de uma ferramenta CLI (Command Line Interface ou “interface de linha de comando”) — pensando nas pessoas que têm um número considerável (imenso) de arquivos para converter.
Outro ponto que levo em conta é que as ferramentas CLI costumam consumir menos memória — o que permite realizar o trabalho sem sobrecarregar seu sistema.
Se você estiver interessado em ripar CDs, leia meus artigos específicos sobre ripagem.

O que o mp3fs faz

O mp3fs é uma ferramenta que monta um sistema de arquivos virtual e transcodifica arquivos FLAC para MP3, on the fly.

Em outras palavras, o comando mp3fs permite montar um diretório virtual, com todos os seus arquivos áudio prontamente renomeados com a extensão .mp3.
A partir daí, basta começar a tocar ou copiar para outro lugar
À medida em que os arquivos são acessados, mp3fs faz a conversão.
Parece fácil, não é?
E é!

Trata-se um sistema de arquivos FUSE, protegido contra alterações, que transcodifica arquivos de áudio no momento em que são abertos ou lidos.
Ele permite usar sua coleção de músicas FLAC — mesmo que seu hardware/software não tenha suporte a este formato.

Se você quiser transferir os MP3 para um pendrive, pode fazer isto como se fossem arquivos normais — o sistema se encarrega de convertê-los durante a transferência.
Outra vantagem da conversão “sob demanda” é que este método não te obriga a ter mais espaço em disco.


Se, por outro lado, você optasse por converter seus arquivos FLAC para MP3, individualmente, teria que reservar um enorme espaço adicional para abrigar os arquivos duplicados, resultantes das conversões.
Em outras palavras, para cada arquivo.flac, seria criado outro arquivo.mp3 —— Imagine o espaço extra que você teria que ter para converter milhares de arquivos!

O mp3fs permite selecionar e copiar todos arquivos FLAC da origem e colar direto na pasta de destino. Eles serão convertidos para MP3 durante a transmissão.

Como instalar o mp3fs

Nas distribuições Linux que usam o gerenciador de pacotes APT (Debian, Ubuntu, Mint etc.), é possível encontrar o pacote de instalação nos repositórios oficiais.
Neste caso, use o APT:

sudo apt install mp3fs

Pra constar, instalei e usei com sucesso o mp3fs no Debian 9 “Stretch” e no KDE NEON (baseado no Ubuntu 16.04 LTS “Xenial Xerus”).

Como usar o mp3fs

A sintaxe do comando é bem simples.
Todas as minhas músicas, FLAC, OGG ou MP3, estão dentro do diretório “/home/justincase/music”.
Para facilitar, criei mais um diretório com o seguinte nome/caminho: “/mnt/music/mp3”
No exemplo, abaixo, vou montar o meu segundo diretório, com o mp3fs:

sudo mp3fs -b 192 /home/justincase/music/ /mnt/music/mp3 -o allow_other,ro

Se tudo der certo, já será possível visualizar os seus arquivos em /mnt/music/mp3 — todos já renomeados para mp3:

ls /mnt/music/mp3/

Experimente tocar um deles!
tribo de jah mp3 files
Na imagem, acima, todos os meus arquivos .flac estão com a extensão .mp3.

Referências

https://github.com/khenriks/mp3fs/blob/master/mp3fs.1.txt
https://khenriks.github.io/mp3fs/

A evolução do procfs para o sysfs

O Linux herdou do UNIX a metodologia para permitir que programas se informassem sobre os processos em andamento no sistema diretamente das estruturas armazenadas na memória do kernel —— ou seja, lendo diretamente o /dev/mem e interpretando os dados “nus e crus” contidos ali.
Era assim que o comando ps funcionava inicialmente.
Com o tempo, parte da informação passou a ser disponibilizada através de system calls.
Expor dados do sistema diretamente ao espaço do usuário, via /dev/mem se provou uma metodologia ineficiente e insegura, com o tempo.
Um novo método foi introduzido para facilitar o acesso a aos dados estruturados do sistema para os aplicativos do user-space — que foi a criação do sistema de arquivos /proc.
Com o /proc, as interfaces e as estruturas (diretórios e arquivos) poderiam se manter, mesmo havendo mudanças nas camadas internas do kernel.
Este método é menos frágil que o anterior e aguenta melhor o aumento na escala de trabalho do sistema.
O /proc filesystem foi projetado originalmente para publicar informações de processos e alguns atributos chave de sistema, requisitados por comandos como o ‘ps’, o ‘top’ e o ‘free’, por exemplo.
Sendo mais fácil de usar e obter informações a partir deste meio – tanto pelo lado do kernel quanto do lado do user-space – ele se tornou um verdadeiro depósito de informações de todo o tipo, vindas do sistema.
Além disto, ganhou arquivos com permissão de gravação, a serem usados para ajustar configurações e controlar a operação do kernel ou algum de seus vários subsistemas.
Em resumo, o aumento no uso do /proc para implementar controle de interfaces contribuiu para reduzir sua eficiência.

Isto levou os desenvolvedores a implementar, no kernel 2.6, uma nova metodologia, através do sysfs.
O sysfs ou /sys filesystem já foi projetado para adicionar suporte à estrutura do /proc e prover uma maneira uniforme de expor as informações do sistema e pontos de controle (sistema ajustável e atributos de drivers) para o user-space a partir do kernel.
Agora o framework de drivers, dentro do kernel, cria automaticamente os diretórios sob /sys a cada vez que um driver é registrado, baseado em seu tipo e nos valores contidos nas suas estruturas de dados.
Isto significa que os drivers de um tipo particular terão todos os mesmos elementos exibidos via sysfs.
O Linux vive uma fase de transição. Hoje, muitas informações “legadas” do sistema ainda são acessíveis no /proc. Contudo, todos os novos bus e drivers precisam expor suas informações e pontos de controle via sysfs — é para lá que estamos caminhando.

Referências

http://unix.stackexchange.com/questions/4884/what-is-the-difference-between-procfs-and-sysfs.