Como transformar um dispositivo USB em SWAP

No Linux, o arquivo, disco ou partição SWAP pode ficar, praticamente, em qualquer lugar que você quiser.
É possível, até mesmo, usar o sistema operacional sem SWAP algum.

É claro que cabe avaliar a “conveniência” do local para o qual deseja direcionar o seu swapping ou memória virtual.
Em outras palavras, o seu pendrive pode não ser o melhor lugar para uma partição ou arquivo SWAP.

Em uma configuração de hardware ideal, para mim, o SWAP nunca é usado. A quantidade de memória é sempre suficiente para realizar todas as tarefas necessárias em um dia de trabalho duro, mas… quem é que tem uma configuração de hardware ideal por aqui?

Se você tiver outras dúvidas sobre o tema, recomendo ler o post Perguntas e respostas sobre o SWAP.
Por ser assunto recorrente, este blog tem vários outros textos relatando procedimentos com o SWAP — também vale a pena dar uma olhada (e, se quiser, compartilhar com os amigos).

Ferramentas básicas de manipulação do swap

Há inúmeras ferramentas para trabalhar com o swap (vou escrever em minúsculas, daqui pra frente).
Inicialmente, costumo trabalhar com o free e o swapon:

  • o free oferece informações básicas sobre o uso da memória no seu sistema, o que inclui o uso do swap.
  • o swapon oferece informações um pouco mais específicas sobre o uso atual do swap e permite realizar configurações rápidas.

Mesmo em situações emergenciais, o swap não é um recurso difícil de se gerenciar e ajustar.
A maioria das suas necessidades podem ser satisfeitas com uma linha de comando usando o swapon.

como obter informações do uso do swap no Linux

Você começar a obter informações genéricas sobre como o seu sistema está lidando com a memória usando o free:


free -h

             total        used        free      shared  buff/cache   available
Mem:          7,5Gi       4,0Gi       522Mi       482Mi       3,0Gi       3,1Gi
Swap:          11Gi       1,5Gi        10Gi

O parâmetro ‘-h’ (human readable ou legível para humanos) serve para formatar a saída do free e torná-lo mais fácil de entender.
Pelo resultado obtido com a execução do comando free, é possível visualizar o quanto de swap já está em uso pelo sistema.

A minha configuração atual do swap

No meu caso, uso o swap em duas partições diferentes: 3GiB em um pequeno drive SSD (24GiB) e 8,8GiB no HD principal.

O lsblk, em conjunto com o comando grep pode ajudar a visualizar a sua configuração:


lsblk | grep -i swap

└─sda2   8:2    0   8,8G  0 part [SWAP]
└─sdb2   8:18   0     3G  0 part [SWAP]

Como veremos, abaixo, optei por usar a partição sdb2 (em SSD) como prioritária. Assim, quando houver pequenas necessidades de uso do recurso, o sistema pode se beneficiar da velocidade do disco em estado sólido (solid state drive).


Eu não teria nada contra em fazer o contrário. Neste caso, o sistema recorreria à partição “mais lenta” nas pequenas emergẽncias — e quando “o bicho pegar”, teria uma tecnologia mais rápida e avançada para usar.
Sem querer me alongar, outra vantagem desta abordagem seria reduzir o desgaste do SSD.
Se você tiver alguma opinião sobre o assunto, ficarei feliz em ler nos comentários 😉


Ao executar o comando swapon, sem qualquer parâmetro adicional, ele exibe informações sobre a configuração atual do seu sistema de swap:


sudo swapon

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

A coluna PRIO (priority) mostra qual swap é o prioritário. O que tiver o menor valor será o primeiro a ser usado.
Neste caso, o sdb2 (-2) é o que tem maior prioridade.

Como adicionar mais um dispositivo swap

Tenha cuidado, daqui pra frente. Os procedimento descritos podem fazer você perder dados.
O comando mkswap formata o arquivo/partição em que ele é aplicado.
Você foi avisado.

Em situações de emergência pode ser necessário adicionar mais uma opção de swap ao sistema.
O comando swapon é tudo o que você precisa para esta tarefa.
No meu exemplo, vou adicionar um pendrive USB, com prioridade máxima (-1) à memória virtual.
Trata-se de um dispositivo extremamente lento, comparado aos que já estou usando. Portanto, se eu não estivesse apenas fazendo um teste não haveria motivos para fazer isso.

Neste pendrive há uma segunda pequena partição sem uso, que vou transformar em swap:


sudo mkswap /dev/sdg2

mkswap: /dev/sdg2: aviso: apagando assinaturas antigas de vfat.
Configurando espaço de swap versão 1, tamanho = 2,3 MiB (2387968 bytes)
nenhum rótulo, UUID=41e12683-940c-440c-b5b9-1cd9fe21a5a1

Agora a partição já pode ser usada pelo swapon:


sudo swapon -o discard=pages,nofail /dev/sdg2

Verifique a nova situação do sistema:


sudo swapon

NAME      TYPE      SIZE USED PRIO
/dev/sdb2 partition   3G 1,5G   -2
/dev/sda2 partition 8,8G   0B   -3
/dev/sdg2 partition 2,3M   0B   -4

Agora é possível observar uma nova partição.
Se quiser, é possível colocá-la como prioritária, para ver o impacto que terá sobre o sistema (calafrios…).

Seguindo o procedimento padrão, o swapon colocará a sua nova partição de swap último lugar na lista de prioridades.
Se quiser mudar esta situação, uma maneira rápida de fazer isso é desligando a(s) outra(s) opções de swap existentes.
Isto pode ser feito com o comando swapoff.
No meu exemplo, isto poderia ser feito assim:


sudo swapoff /dev/sda2 /dev/sdb2

Se uma destas partições estiver em uso, ao executar o swapoff, o sistema pode demorar para esvaziar o swap e enviar o conteúdo que ainda tenha relevância para a memória RAM do sistema. Portanto, tenha bastante paciência.

Por fim, para reverter o processo todo, quando terminar de brincar, use o swapon para reativar a sua memória virtual.

Passe as fotos da câmera ou do cartão de memória mais rápido para o seu computador.

O aplicativo rapid-photo-downloader faz o que o nome promete.
Quando o programa está no ar, basta conectar um cartão de memória ou a sua câmera via USB para ver na tela todos os thumbnails das suas fotos.

Dali pra frente, é só selecionar o que você quer transferir. Por padrão, todos os arquivos já ficam selecionados.
Sim. O programa tem suporte a imagens RAW.

Pode ser instalado a partir dos repositórios oficiais da sua distro GNU/Linux.
Abra o app de instalação de programas (a lojinha da sua distro) e procure por ‘rapid-photo-downloader’.

Na imagem, acima, tela de instalação do aplicativo no POP Shop.

Se preferir usar a CLI, abra um terminal e instale, com o apt (ou dnf, se você usa o Fedora):


sudo apt install rapid-photo-downloader

Uma vez instalado, pressione a tecla Super e procure pelo ‘rapid-photo…’

Quando estiver carregando, insira o seu cartão de memória ou conecte sua câmera.
O aplicativo também irá detectar que seu celular está conectado — mas precisa estar no modo de transferência de fotos (PTP).

O Rapid Photo Downloader se diferencia de outros aplicativos do gênero por ser bem mais rápido que os outros.
Ele reconhece e importa rapidamente todo o seu set de imagens.
Pode ser usado para renomear um grande conjunto de arquivos.
Este é mais um dos programas, para Linux, desenvolvido por fotógrafos para fotógrafos.

Site do aplicativo: http://www.damonlynch.net/rapid/index.html.

Como determinar a memória usada por um processo no Linux, com o utilitário pmap

O utilitário pmap tem a função de exibir um mapa do uso da memória por um ou vários processos.
Com ele, é possível obter um valor, em KB, da quantidade de memória RAM usada por um programa, no seu sistema.
Você precisa informar apenas o PID (Process ID) do programa, para o pmap.
Para obter o PID, use o comando ps.
Use o ps para obter o PID de algum processo. No exemplo, abaixo, veja como obter esta informação sobre o navegador Firefox:


ps aux | grep firefox

justinc+  1889 46.2 10.6 3262532 839236 tty2   Sl+  09:21   9:00 /usr/lib/firefox-esr/firefox-esr
justinc+ 13572  0.0  0.0  12784   992 pts/0    S+   09:40   0:00 grep --color=auto firefox

O PID é exibido na 2a coluna. No meu caso, é 1889.
Agora, basta oferecer este número ao pmap:


pmap 1889

O mapa pode ser bastante extenso e você pode informar mais de um PID, se quiser.
Ao final, é exibido o total de memória (em KB) usada pelo processo.
Use o comando grep, para obter uma visualização mais resumida:


pmap 1889 | grep -i total

 total          3270732K

Você também irá encontrar informações sobre a memória ocupada por processo no diretório /proc ou com os utilitários ps ou top.
O problema destas alternativas é que será necessário calcular o valor total da memória usada “manualmente”, ou seja, adicionar os valores de memória compartilhada, mapeada e virtual, entre outros.
Já o pmap oferece o valor total, de mais fácil compreensão, ao final da listagem.

Use o comando watch para monitorar processos em execução

O utilitário watch é usado no Linux para rodar outros programas periodicamente e exibir resultados atualizados.
O que ele faz é reexecutar programas, até que você o mande parar.
Para interromper o seu andamento, use as teclas ^C (Ctrl + c).
O watch aceita parâmetros e opções para determinar de quanto em quanto tempo ele deve rodar novamente um comando.
Segue alguns exemplos de uso.

Como monitorar o uso das unidades de armazenamento do seu sistema

Você pode observar o espaço livre de todos os drives (internos, externos ou remotos) conectados ou montados no seu sistema ao combinar o comando df com o watch.
Veja um exemplo:


watch df -h

Como padrão, o watch reexecuta seu comando a cada 2 segundos.
linux free watch
Você pode alterar este comportamento com a opção ‘-n’ ou ‘–interval’:


watch --interval 0.5 du -h

Na linha acima, ajustei o intervalo entre uma execução e outra para meio segundo.
Desta vez, usei o comando du, que mostra a ocupação (ou uso) de cada diretório montado no sistema.
linux disk usage
Note que o watch exibe, no canto superior esquerdo da tela, o intervalo de tempo entre cada execução do programa: Every 0,5s (ou seja, “a cada meio segundo”), na imagem acima.

O comando df (disk free) mostra o espaço livre em uma unidade montada.
O du (disk used ou disk usage) mostra o uso ou a ocupação dos diretórios atuais

Como monitorar o uso da memória no Linux

O comando free é usado para mostrar a quantidade de memória livre, em diversos locais (RAM, SWAP etc).
Você pode usar o watch para verificar como o uso dos programas no seu computador afetam a memória do sistema.
Experimente o seguinte:


watch free

Aqui também é possível estabelecer um intervalo de atualização.
A visualização pode ficar mais interessante, se você permitir ao watch destacar os dados que sofreram alterações:


watch --differences --interval 0.1 free

Note que o menor intervalo possível é 0.1 segundos.
linux free memory

Outros exemplos de uso do watch

É possível encontrar outros exemplos de uso no manual do comando (man watch).
Por exemplo, para monitorar os arquivos que sofrerem algum tipo de modificação ou edição, no diretório atual, use o comando da seguinte forma:


watch -d 'ls -l'

Este tipo de comando é mais usado no diretório de logs ou no sistema de arquivos proc.

Baixe e instale o f3 para testar cartões de memória e pendrives no Linux

O kit de ferramentas F3, traz um conjunto de aplicativos para verificar, testar e consertar mídias flash falsificadas.
Desenvolvido pelo Michel Machado é uma alternativa a aplicativos proprietários (embora gratuitos), como o SOSFakeFlash e o H2testw.
A proposta é trabalhar com cartões de memória SD e, inicialmente, determinar se sua mídia é ou não autêntica — mas você pode usá-lo em pendrives também.
many sd cards
Neste texto, vou mostrar como baixar e compilar (para quem deseja usar a versão mais atual da ferramenta) e também como instalar pelo apt, no Debian e no Ubuntu. Escolha o método que achar que lhe serve melhor.
No Android, a ferramenta SD insight também pode ser usada para obter informações sobre cartões de memória inseridos no aparelho.
Alguns exemplos neste texto são executados em pendrives. Isto se deve ao fato de que, atualmente, os meus cartões de memória se encontrarem tão danificados que não é possível sequer montá-los. E a mídia precisa, em alguns casos, ser montada para algumas ferramentas funcionarem.

O kit de ferramentas F3

O conjunto de aplicativos consiste no f3probe, f3fix e no f3brew — e eu só usei a versão para Linux:

  • O primeiro, é a maneira mais rápida para identificar drives falsos e determinar o tamanho real deles, em bytes.
  • O segundo, cria condições para usar a capacidade real de uma mídia falsa, sem perder dados.
    Se você aceita um conselho, não use mídias falsas ou defeituosas, mesmo que estejam funcionando “razoavelmente” para armazenar arquivos importantes. Além disto, é importante ter uma prática de fazer backups de seus dados frequentemente.
  • O terceiro, ajuda desenvolvedores a entender o funcionamento de drives falsos.

De acordo com o Michel, F3 corresponde às palavras Fight Flash Fraud, (combate a fraude em mídias flash) ou Fight Fake Flash (combate a flash falso).

Se você tem mídias flash falsas, considere a possibilidade de doá-las ao desenvolvedor, para ele melhorar ainda mais o seu trabalho — veja os links ao final do artigo.

Como instalar o F3 no Debian e Ubuntu

Se você prefere baixar o código e compilar o F3, pule esta seção (não tenha medo, o processo é simples).
Para instalar o programa a partir dos repositórios oficiais, via apt, use o seguinte comando:

sudo apt update
sudo apt install f3

O meu sistema atual é Debian 9 Stretch e vou mostrar todos os procedimentos na linha de comando.
O F3, contudo, dispõe de duas interfaces gráficas para quem prefere este meio de resolver as coisas:

  • F3 QT — voltada para o ambiente Linux e usa (como o nome indica) a biblioteca gráfica QT.
    A interface suporta o f3write, o f3read, e o f3probe.
  • F3 X — para o MAC OS X, que usa o Cocoa. De acordo com a página oficial do autor, suporte o f3write e o f3read.

Neste artigo, não vou abordar a instalação ou o uso das interfaces gráficas.

Como baixar e compilar o F3

Se você já optou pelo método anterior de instalação, pule esta seção.
Para baixar o código, use o comando wget ou clique neste link, para baixar a versão estável:

wget https://github.com/AltraMayor/f3/archive/v6.0.zip

… ou apenas clique no link https://github.com/AltraMayor/f3/archive/v6.0.zip.
Se preferir, você pode tentar encontrar uma versão mais atual, no site do desenvolvedor.
As instruções, que seguem, constam do arquivo README.md, que vem junto com o pacote zip, baixado.
Copie o arquivo f3-xxx.zip ou v6.0.zip para o local onde você deseja deixar o código e os binários e siga o procedimento:

unzip f3-6.0.zip
cd f3-6.0
sudo apt install libudev1 libudev-dev libparted0-dev
make experimental

No procedimento, descrito acima, me baseei no Debian 9, para instalar as bibliotecas de desenvolvimento libudev1, libudev-dev e libparted0-dev. Se você usa outra distro, adéque o comando para a sua instalação.
Isto é o suficiente para ter o F3 funcionando no seu sistema.

Como usar o f3write e o f3read

Depois de inserir a mídia no seu leitor, certifique-se da sua localização com o comando lsblk:

lsblk 

Como já mencionei, meu cartão está danificado (não é falso) e não irá montar. Mas a sua presença pode ser detectada. Veja o destaque, na última linha:

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 931,5G  0 disk 
├─sda1    8:1    0  21,4G  0 part /
├─sda2    8:2    0 881,1G  0 part /home
└─sda3    8:3    0  10,4G  0 part [SWAP]
mmcblk0 179:0    0   1,9G  0 disk

Antes de prosseguir, certifique-se de ter backup de seus dados.
Depois de inserir o cartão no slot/leitor, aguarde a montagem da mídia.
Em seguida, execute o f3write em relação a pasta/diretório em que a mídia se encontra montada:

f3write /media/justincase/music/

O processo pode demorar alguns minutos:

Free space: 2.68 GB
Creating file 1.h2w ... OK!                        
Creating file 2.h2w ... OK!                        
Creating file 3.h2w ... OK!                        
Free space: 0.00 Byte
Average writing speed: 5.30 MB/s

O que ocorreu acima?
Sendo um drive de capacidade 4 GB, com 2,68 GB de espaço livre, o f3write procurou preencher o espaço livre com os arquivos 1.h2w, 2.h2w e 3.h2w.
Os 2 primeiros arquivos tem 1 GB, cada. O último ficou com 700 MB.
A programa preenche o drive, mas não apaga os arquivos preexistentes.
Use o comando ls, para ver o conteúdo, se quiser.
Em seguida, use o f3read para verificar a consistência dos arquivos .h2w:

f3read /media/justincase/music/

O resultado é separado em 5 colunas: A primeira coluna exibe a quantidade de setores OK. A segunda, a quantidade de setores corrompidos. A penúltima e última colunas mostram os setores que sofreram alterações e os que foram sobrescritos.

                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
Validating file 2.h2w ... 2097152/        0/      0/      0
Validating file 3.h2w ... 1434984/        0/      0/      0

Data OK: 2.68 GB (5629288 sectors)
Data LOST: 0.00 Byte (0 sectors)
	       Corrupted: 0.00 Byte (0 sectors)
	Slightly changed: 0.00 Byte (0 sectors)
	     Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 20.16 MB/s

Em destaque, acima, a quantidade de dados que se encontra em setores confiáveis (ou Data OK).
Os números dos campos Data LOST e Corrupted, correspondem aos setores ruins e que não merecem confiança dentro da sua mídia.
Se você tivesse problemas, esta seção exibiria algo parecido com o seguinte:

Data LOST: 27.81 GB (58322336 sectors)
	       Corrupted: 27.81 GB (58322336 sectors)

Repare, também na velocidade de leitura (reading speed), para comparar com o que é alegado na embalagem do cartão.
Este valor é baseado em testes de laboratório, em condições perfeitas.
O valor obtido pelo F3 é uma estimativa e pode variar drasticamente, em função de outros processos em execução no seu sistema. Além disto, o leitor e a porta USB podem ter fatores limitantes do fluxo de dados.
Você pode repetir os testes quantas vezes quiser, com o f3read — ele é independente do f3write.

Algumas variações no espaço/capacidade total da mídia de armazenamento, em relação ao anunciado na embalagem, podem ser atribuídas a sistemas de arquivos que fazem reservas de segurança (ext2, ext3, ext4 etc.)

Como testar o dispositivo de armazenamento com o f3probe

O f3probe não precisa que a sua mídia esteja montada e deve ser direcionado ao endereço “físico” e não à pasta de montagem.
Novamente, use o lsblk para descobrir onde se encontra o dispositivo em que você quer executar o f3probe.

sudo f3probe /dev/mmcblk0 

O resultado, abaixo, indica que o device está danificado e que tem 0.00 bytes *utilizáveis*.

[sudo] senha para justincase: 

F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Probe finished, recovering blocks... Done

Bad news: The device `/dev/mmcblk0' is damaged

Device geometry:
	         *Usable* size: 0.00 Byte (0 blocks)
	        Announced size: 1.88 GB (3952640 blocks)
	                Module: 2.00 GB (2^31 Bytes)
	Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
	   Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 7.33s

Ao tentar usar uma identificação como /dev/sdb1 ou /dev/sdc3, para o f3probe, ele irá avisar que você precisa indicar o endereço “raíz”: /dev/sdb ou /dev/sdc.
Para acessar este tipo de endereço, é necessário ter privilégios administrativos.
Use a opção ‘–destructive’ se você não se importa em perder dados no dispositivo testado.
Acrescente a opção ‘–min-memory’, para economizar memória do sistema — em compensação o processo ficará mais lento.
A opção ‘–time-ops’, testa leitura, escrita e aplica resets.
A mensagem abaixo, se você a obtiver é indício de falsificação:
Bad news: The device `/dev/sdb’ is a counterfeit of type limbo.”
A opção ‘–destructive’ faz o utilitário desprezar o conteúdo do drive, para aumentar a velocidade do teste. Sem ela, o F3 fará backup dos dados, antes de os destruir e os copia de volta, quando terminar o teste.
O problema é que você ainda pode perder tudo, caso o F3 deixe de funcionar no meio do procedimento. Portanto, faça seu próprio backup, antes de usar o F3.

Como resolver o problema do cartão de memória falso

Obviamente, você não deve aceitar ficar com um produto falso.
O melhor caminho é deixar claro para o vendedor que você sabe que ele te vendeu um produto ilegítimo e procurar receber o seu dinheiro de volta.
Ao agir assim, você ajuda outras pessoas a não serem enganadas.
Se não houver meios de reaver o seu prejuízo, esta seção irá te ajudar a tentar reduzir os danos.
Uma mídia de armazenamento falsa, usualmente, tenta fazer passar que tem um capacidade muito superior à real.
Por exemplo, anuncia que é um cartão de 32 GB e tem, no máximo, 8 GB utilizáveis.
Se você prestar atenção, o resultado do f3probe contém uma sugestão de uso do f3fix que pode ajudar a corrigir o problema no caso de mídia falsa.
O aviso costuma ser parecido com este:

f3fix --last-sec=16477878 /dev/sdb

Certifique-se de ter privilégios de superusuário para rodar o comando contido no aviso que você obteve, aí.

O f3fix funciona criando uma partição no seu cartão de memória, que incluirá apenas a sua parte utilizável. Isto evita que dados sejam gravados na “área ruim” (ou inexistente).
Ainda assim, não é recomendável confiar os arquivos mais importantes da sua vida a um dispositivo nestas condições.
Esta solução te dará algum fôlego para guardar dinheiro para comprar um novo cartão de memória SD.

Se, ao final da execução, o f3fix avisar que tem que forçar o kernel a recarregar a tabela de partições (reload the new partition table), desconecte e reconecte o dispositivo. Assim que a nova partição estiver disponível, faça a sua formatação.
O exemplo, abaixo, formata a mídia em /dev/sdb1 com o sistema de arquivos VFAT:

sudo mkfs.vfat /dev/sdb1
mkfs.fat 3.0.26 (2014-03-07)

A partir deste ponto, o cartão deve estar a funcionar bem.
Monte-o novamente e faça o teste f3write/f3read, novamente
Se você ainda obtiver mensagens informando erros e setores corrompidos, repita o procedimento f3write/f3read, mais uma vez.
É comum alguns cartões se recuperarem de falhas em um segundo ciclo de escrita.
Contudo, se os setores corrompidos persistirem, o conselho é desistir da mídia — pois ela não é apenas falsa, mas de baixíssima qualidade.
Boa sorte!

Referências

Site oficial: https://github.com/AltraMayor/f3/.
Documentação: http://oss.digirati.com.br/f3/.