Como criar rapidamente uma nova partição emergencial para SWAP.

Criar e começar a usar uma nova partição ou arquivo de SWAP pode ser feito muito rapidamente no Linux.
O procedimento é seguro e pode ser realizado em menos de 2 minutos.
Contudo, aconselho a ir com calma.
redimensionar reparticionar disco
Outro conselho útil para estas ocasiões é aproveitar para fazer um backup.
O contexto deste post é um notebook que me chegou às mãos e, após abrir dezenas e dezenas de novas abas e janelas no Firefox, a máquina começou a ficar insuportavelmente lenta.
Nenhum vídeo era reproduzido (nem no Facebook, nem no YouTube)
Chegou ao ponto em que eu tinha que ver o que estava acontecendo:


free -h

                    total        used            free      shared  buff/cache   available
Mem:           7,5G        6,0G        557M        565M        3,0G        700M
Swap:            0B          0B          0B

Observe o meu resultado, acima.
Há 557 Mb de memória RAM livres — ou seja, estamos chegando a um limite… e absolutamente nenhum SWAP (nem arquivo, nem partição) presente.
Não há muita esperança de que o SWAP possa desafogar o uso do navegador Firefox, nestas circunstâncias, mas outros programas, em uso no sistema, bem que poderiam se beneficiar do seu uso e ajudar a “desespremer” a memória RAM — o que seria benéfico, por extensão, para o navegador.

A máquina estava ligada há uns 5 dias e o reboot não costuma ser minha primeira uma opção.

Criar um arquivo para o SWAP é completamente indolor e rápido, no Linux.
O que inviabiliza esta solução é que o sistema de arquivos, aqui, é 100% BTRFS.
Não é possível criar um arquivo de troca em cima do BTRFS.


Havendo espaço e sem reiniciar o computador, seria possível redimensionar uma das partições, para criar uma exclusiva para SWAP, como reza a tradição?
Esta foi a minha aposta. Veja o resultado…

Nunca é demais avisar que o procedimento pode danificar seu sistema de arquivos e causar perda irreversível de dados.
— Portanto, verifique se seu backup está em dia, antes de prosseguir.

Instale o gparted:


sudo apt install gparted

Em seguida, rode o programa e selecione a partição que deseja redimensionar.
Se tiver dúvidas quanto ao tamanho mais adequado, o artigo Perguntas e respostas sobre SWAP tem uma tabela que simplifica o assunto.
Siga o procedimento abaixo:

  1. Clique com o botão direito do mouse/touchpad sobre a partição cujo tamanho deseja alterar e selecione “Redimensionar”.
    gparted redimensionar partição
  2. Agora, indique o tamanho da nova partição em “Espaço livre após (MB)”.
    gparted redimensionar
    Em seguida, marque a opção “formatar para Linux swap”.
    gparted redimensionar partição
  3. Aplique as alterações feitas.
  4. Clique com o botão direito sobre a nova partição SWAP e selecione “Ativar o swap”.
    gparted ativar swap

Com isto, o problema estará resolvido.
Rode novamente o free, no terminal, para ver que o SWAP já está lá, pronto para ser usado.


free -h

              total        used        free      shared  buff/cache   available
Mem:           7,5G        2,5G        270M        589M        4,8G        4,2G
Swap:          8,8G          0B        8,8G

Como resultado (pra mim), o Firefox voltou a ganhar agilidade, sem precisar ser fechado ou reiniciado — e os vídeos voltaram a ser reproduzidos dos sites.
Novamente, vale a advertência: não aconselho realizar este procedimento em máquinas de produção, sem fazer um backup antes.
Há risco de perda de dados.
No meu caso, tratava-se de uma máquina de testes e, portanto, fazia sentido prosseguir nesta aventura.

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.

Como criar um drive virtual, usando o comando dd no Linux

Drives virtuais podem ter várias utilidades.
Podem funcionar como partições separadas ou simples pastas — só que apartadas do sistema de arquivos hospedeiro ou host.
Um uso comum para um sistema de arquivos virtual é fazer dele um espaço de troca ou SWAP.
Você também pode clonar ou transferir o conteúdo de um drive físico para um drive virtual, como backup ou um armazenamento intermediário a ser transferido para outro drive físico.
Como ferramenta, o comando dd é muito flexível e pode ter uma gama variada de aplicações.
Se você fizer uma busca por “comando dd”, vai encontrar vários artigos mencionando alguma tarefa a ser realizada com ele. Se quiser, você também pode clicar na tag dd, para dar uma olhada no que a gente já andou falando sobre o assunto.

Crie um drive virtual com um tamanho determinado

Vamos começar por criar um espaço (arquivo), dentro do qual vamos inserir o nosso sistema de arquivos mais tarde.
No meu exemplo, vou mostrar como criar um arquivo com 700 MB (mais ou menos o tamanho de um CD de dados):


dd if=/dev/zero of=meudrive700 bs=4K count=175000

175000+0 records in                                                 
175000+0 records out                                                
716800000 bytes (717 MB, 684 MiB) copied, 4,84865 s, 148 MB/s

Note que o tamanho final do arquivo é mostrado em MB (megabytes) e MiB (mibibytes).
Veja o que foi feito:

  • if=/dev/zero — abreviatura de input file (ou arquivo fonte), pega caracteres 0x00 para preencher o espaço do novo drive.
  • of=meudrive700 — abreviatura de output file (ou arquivo de destino), nomeia o arquivo que vai receber o novo drive virtual. Use o nome que vocẽ quiser aqui.
  • bs=4K — abreviatura de block size (ou tamanho de cada bloco de dados), fornece o tamanho a ser usado para cada bloco. No nosso caso, 4096 bytes.
  • count=175000 — conta cada inserção de blocos 175000 vezes e encerra o comando.
    Para chegar a este número fizemos um cálculo: 700.000 Kb / 4 Kb (blocksize)

O /dev/zero é um arquivo especial, que provê caracteres ‘null’ (0x00).
Uma de suas funções é prover uma string de caracteres “neutros” para inicializar um sistema de armazenamento

Com o comando ls, já é possível observar o nosso novo arquivo:


ls -lh meudrive*

-rw-rw-r-- 1 justincase justincase 684M Mai 30 18:22 meudrive700 

Como criar um sistema de arquivos dentro do drive virtual

Para poder ser visto como “verdadeiro drive”, ele precisa comportar um sistema de arquivos.
Para isto, vamos usar o comando mkfs (make filesystem), que também aceita várias configurações e parâmetros de execução.
Se você deseja um sistema de arquivos swap, use o mkfs assim:


mkfs.btrfs --label="meudrive700" meudrive700

btrfs-progs v4.4                                                    
See http://btrfs.wiki.kernel.org for more information.              
                                                                    
Label:              meudrive700                                     
UUID:               8acf7d75-935c-4713-b211-aeeb0c7597ce            
Node size:          16384                                           
Sector size:        4096                                            
Filesystem size:    683.59MiB                                       
Block group profiles:                                               
  Data:             single            8.00MiB                       
  Metadata:         DUP              42.12MiB                       
  System:           DUP              12.00MiB                       
SSD detected:       no                                              
Incompat features:  extref, skinny-metadata                         
Number of devices:  1                                               
Devices:                                                            
   ID        SIZE  PATH                                             
    1   683.59MiB  meudrive700

Se você prefere o sistema de arquivos padrão de muitas distribuições, o ext4, use o comando assim:


mkfs.ext4 -L="meudrive700" meudrive700

mke2fs 1.42.13 (17-May-2015)                                        
meudrive700 contains a btrfs file system labelled 'meudrive700'     
Proceed anyway? (y,n) y                                             
fs_types for mke2fs.conf resolution: 'ext4'                         
Discarding device blocks: done 
Creating filesystem with 175000 4k blocks and 43776 inodes          
Filesystem UUID: 52117614-5508-4e8e-866a-1f9684410582               
Superblock backups stored on blocks:                                
        32768, 98304, 163840                                        
                                                                    
Allocating group tables: done                                       
Writing inode tables: done                                          
Creating journal (4096 blocks): done                                
Writing superblocks and filesystem accounting information: done    

Como já havia um sistema de arquivos habitando aquele espaço, o mkfs faz uma advertência e pede confirmação (y/n) para continuar.
Há várias outras possibilidades de formatação, com o mkfs. Leia mais sobre sistemas de arquivos no Linux para descobrir mais.
Leia também sobre as diferenças entre os sistemas de arquivos BTRFS e EXT4.

Como montar o meu novo drive virtual


sudo mount -t ext4 meudrive700 /mnt/
ls -lah /mnt/                         

total 20K                                                           
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .                          
drwxr-xr-x 1 root root  258 Mai 28 10:05 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

O Linux enxerga este arquivo como um dispositivo físico. Você pode gravar o que quiser dentro deste drive.

Para o UNIX (e o Linux também, claro), tudo é arquivo.

Como automatizar a montagem do meu drive virtual

Se você reiniciar a máquina, neste momento, não vai perder os eventuais dados que tiver gravado lá.
Contudo, vai precisar montar o drive, novamente, toda vez que bootar a máquina — caso queira usá-lo.
Se vocẽ acha incômodo fazer o procedimento manualmente, talvez prefira automatizá-lo. Para isso, basta inscrever o comando de montagem no fstab.
Abra o arquivo /etc/fstab e adicione as linhas


# montando o meu drive virtual
/home/justincase/meudrive700    /mnt/meudrive700        ext4    default     0     2

Acima, é necessário informar no fstab o caminho completo do arquivo que contém o meu drive (/home/justincase/meudrive700).
Optei também por criar um subdiretório dentro do /mnt para abrigar um ponto de montagem para o meu drive virtal (/mnt/meudrive700) — apenas achei que ficaria mais organizado assim.
O restante dos parâmetros na linha de comando, foram copiados da linha que monta o meu diretório /home: ext4 default 0 2.
Grave as alterações feitas no fstab e saia do editor.
Use o comando mount -a (para montar todas entradas do fstab, que ainda não estejam montadas):


sudo mount -a

[sudo] password for justincase:                                     

Ao rodar o ls, no drive, é possível notar que os arquivos dele pertencem ao root e, portanto, não será possível gravar nada lá dentro.


ls -lah /mnt/meudrive700/

total 20K
drwxr-xr-x 3 root root 4,0K Mai 30 18:37 .
drwxr-xr-x 1 root root   22 Mai 31 09:38 ..
drwx------ 2 root root  16K Mai 30 18:37 lost+found

Use o chown para atribuir o drive ao seu usuário:


sudo chown justincase:justincase /mnt/meudrive700/
# agora, crie um arquivo em branco, só para testar:
touch /mnt/meudrive700/apague.me

Liste os arquivos do diretório, para ver se houve sucesso:


ls -lah /mnt/meudrive700/


total 20K
drwxr-xr-x 3 justincase justincase 4,0K Mai 31 10:24 .
drwxr-xr-x 1 root       root         22 Mai 31 09:38 ..
-rw-rw-r-- 1 justincase justincase    0 Mai 31 10:24 apague.me
drwx------ 2 root       root        16K Mai 30 18:37 lost+found

Se quiser entender melhor o funcionamento da ferramenta de criação de arquivos de sistemas, leia o post Como formatar drives com o mkfs.

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

Como converter uma partição EXT4 para BTRFS

É possível converter partições EXT4 para o mais novo padrão BTRFS fazendo uso de um kit de ferramentas, presente no pacote btrfs-tools.
O EXT4 é um sistema de arquivos que vem de uma longa linhagem, no Linux.
Ele é estável, confiável, seguro e ainda é moderno.

Eu uso o BTRFS há aproximadamente 3 anos, em meus laptops de trabalho — ainda assim, continuo recomendando o EXT4 para quem precisa de mais segurança para seus arquivos.
Minha opinião é de que o sistema é estável o suficiente para qualquer aplicação, que não seja ambiente de servidores — ao mesmo tempo mantenho a minha política de fazer backups o tempo todo.

O fato é que novas tecnologias de armazenamento estão se consolidando e, como não existiam na época da criação do EXT, os desenvolvedores têm feito adaptações para dar suporte aos novos recursos de hardware.
As possibilidades de fazer adaptações estão se esgotando, contudo.
É muito improvável que desenvolvedores invistam tempo no EXT5.
Existem outros sistemas de arquivos, em processo avançado de desenvolvimento que concorrem para ocupar o seu lugar. O BTRFS é um deles.
Leia mais sobre as diferenças entre o EXT4 e o BTRFS.

Quando você não deve converter o sistema de arquivos EXT4 para BTRFS

Quem está com o backup “pendente”, obviamente, deveria priorizar este procedimento, antes de ir “brincar” no sistema de arquivos.
A wiki oficial do kernel Linux avisa que nas séries 4.0 de kernels este recurso não é mais tão usado e é muito pouco testado.
A página avisa, ainda, que há relatos de conversões que não deram resultados confiáveis.
Tudo bem. Acidentes acontecem.
Se você está resolvido a fazer a conversão, certifique-se de ter feito seus backups antes.
A melhor alternativa, quando possível, é formatar o dispositivo e começar a usar o novo sistema de arquivos do zero, de um ambiente limpo.

Como instalar o btrfs-tools

O pacote pode ser encontrado nos repositórios da maioria das distribuições GNU/Linux.
Use o apt show, no Debian e no Ubuntu, para obter mais informações sobre o pacote:

apt show btrfs-tools

Para instalar, use o install:

sudo apt install btrfs-tools

Como fazer a conversão para BTRFS

Depois da instalação do pacote btrfs-tools, a ferramenta de conversão – btrfs-convert – já estará disponível:
A sugestão é começar com uma verificação de rotina do dispositivo a ser convertido — afinal, a gente não quer que possíveis erros existentes danifiquem todo o processo, não é?

sudo fsck.ext4 -f /dev/xxx

Em seguida, faça a conversão:

sudo btrfs-convert /dev/xxx

Espero que tudo funcione bem para você.
Caso tenha problemas ou queira comentar sobre o assunto, use a sessão de comentários.

Introdução ao sistema de arquivos BTRFS – parte 2

Este post tem intenção de mostrar, na prática, como lidar com o sistema de arquivos Btrfs, no Linux.
Basicamente, vou cobrir algumas tarefas administrativas, o que inclui criar um sistema de arquivos Btrfs, montá-lo, alterar seu tamanho, usar compressão e auto desfragmentação.
É importante que se diga que o Btrfs, anunciado em 2007, ainda está em fase beta — neste momento, esta é a posição oficial dos desenvolvedores.
Sistema de arquivos Btrfs - logo
Contudo, há grandes empresas que usam o Btrfs em produção, mas ninguém, em sã consciência, abre mão de fazer seus backups. Problemas sempre podem aparecer.

Notas preliminares

Eu venho usando este sistema na minha máquina de trabalho há aproximadamente 6 meses e sem incidentes.
Atualmente, uso o Debian 8.3 “Jessie”, com o kernel 4.3.
Tudo o que descrevo, neste texto, funciona para mim. Não há qualquer garantia de que funcione para você, contudo.
Os comandos, descritos aqui, foram executados em alguns drives USB (vulgo, pendrives…) — o que está longe de ser o ideal para testar um sistema de arquivos tão robusto, mas serve para ilustrar o texto.
Debian 8 GNU/Linux terminal
Usuários Ubuntu, opcionalmente, podem usar o apt-get em vez do aptitude para instalar aplicativos — se isto os fizer sentir mais confortáveis.
Se quiser saber melhor as diferenças entre os dois, leia este artigo.
Outro ponto importante é que a maioria dos comandos, são usados com privilégios administrativos (com todos os perigos que isto implica).
Portanto, não esqueça de usar o ‘sudo’ no início da linha de comando ou logar como ‘root’ (que foi o que eu fiz).
Se você tiver curiosidade, leia Diferenças entre SU e SUDO.

Como instalar o suporte a Btrfs

Se você já instalou o Btrfs, pode pular esta parte.

Uma palavrinha sobre os backports…

Depois que instalei suporte aos backports no Debian, adquiri o hábito de checar se há pacotes mais atuais naqueles repositórios antes de instalar alguma coisa.
No meu caso, não há versão mais atual disponível nos backports, como é possível observar abaixo:

aptitude show btrfs-tools | grep -i vers
Versão: 3.17-1.1

aptitude -t jessie-backports show btrfs-tools | grep -i vers
Versão: 3.17-1.1

Sigamos em frente… 😉

Como ele já está incluído no kernel principal desde a versão 2.6.29-rc1, tudo o que você precisa é instalar as ferramentas para lidar com o sistema de arquivos Btrfs no espaço do usuário ou user space. Veja como:

aptitude update
aptitude install btrfs-tools

Isto é tudo.
Baixar o código fonte e compilá-lo, também é uma opção e pode te dar uma versão bleeding edge, ou seja, a última disponibilizada pelos desenvolvedores — mas vai impor alguns sacrifícios à estabilidade do seu sistema.

Como criar um sistema de arquivos Btrfs

Uma das várias boas notícias, aqui, é que você não precisa usar ferramentas de particionamento, como o fdisk, para preparar o dispositivo antes de formatá-lo com o Btrfs.
O sistema pode ser criado direto, com um único comando:

mkfs.btrfs /dev/sdc

Você pode usar um comando assim, para criar um volume novo até em mídias ainda não formatadas.
Se já houver algum sistema de arquivos (mesmo que seja Btrfs), o utilitário irá avisar:

/dev/sdc appears to contain an existing filesystem (iso9660).
Error: Use the -f option to force overwrite.
See http://btrfs.wiki.kernel.org for more information.

Se você tiver certeza do que está fazendo, pode “forçar” a criação do novo sistema de arquivos no dispositivo:

mkfs.btrfs -f /dev/sdc

Ao formatar a unidade, o mkfs irá aplicar as opções mais adequadas, automaticamente, para o tipo de mídia em questão. Veja o meu resultado, abaixo:

Btrfs v3.17

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
fs created label (null) on /dev/sdc
	nodesize 16384 leafsize 16384 sectorsize 4096 size 7.50GiB

Antes de concluir o tema, acho interessante falar destas duas opções de criação de um sistema de arquivos: --label e --mixed.
Ambas podem ser abreviadas, respectivamente, para ‘-L’ e ‘-M’.
A primeira serve para dar um nome (até 256 caracteres) ao seu volume e a segunda, mistura (mixa) partes de dados e metadados para obter um uso mais eficiente de espaço.
A aplicação deste recurso penaliza a performance em sistemas de arquivos maiores. Por isto, é recomendado apenas em pequenos sistemas de arquivos com 1 GiB de espaço ou menos.
Veja um exemplo de sua aplicação:

mkfs.btrfs --force --mixed --label "Justin Case" /dev/sdc

Para obter informações sobre o sistema de arquivos criado use o seguinte comando:

btrfs filesystem show /dev/sdc

Como montar um sistema de arquivos Btrfs

Se você conectar um dispositivo de armazenamento com um sistema de arquivos Btrfs, o Linux irá montá-lo automaticamente.
As opções, descritas a seguir, podem ser usadas por quem deseja fazer uso de algum recurso no momento da montagem ou configurar o fstab para obter resultados específicos.
A sintaxe do comando para montar uma unidade Btrfs não é muito diferente da usada para outros sistemas de arquivos. Veja um exemplo simples:

mount -t auto /dev/sdc /mnt

Como você pode ver, usei o parâmetro ‘auto’, por que sei que o kernel irá identificar corretamente o sistema de arquivos do dispositivo.
Mas eu o poderia indicar também, como pode ser observado no exemplo abaixo:

mount -t btrfs /dev/sdc /mnt

Ambas opções detectam e automatizam a escolha das opções de montagem mais adequadas para o seu dispositivo.
Veja alguns exemplos de outros parâmetros de montagem que podem ser usados.
Para montar o dispositivo com a compressão ativada, use a opção ‘compress’:

mount -t btrfs -o compress /dev/sdc /mnt

O algoritmo padrão de compressão é o zlib. Mas você pode usar também o LZO.
Entenda a diferença entre os dois e obtenha mais detalhes da aplicação no artigo Como ativar compressão no Btrfs.
Caso o sistema de arquivos já esteja montado, use o parâmetro ‘remount’:

mount -t btrfs -o remount,compress /dev/sdc /mnt

Assim, não será necessário desmontar e montar manualmente.
Se quiser ver as opções de montagem atuais da sua unidade Btrfs, use o mount combinado com o comando grep.

mount | grep btrfs

O meu resultado é o que segue:

/dev/sdc on /mnt type btrfs (rw,relatime,compress=zlib,space_cache,subvolid=5,subvol=/)

Pode ser interessante fazer testes, montando o sistema manualmente.
Quando tudo estiver funcionando do jeito que você quer, inclua estas opções de montagem no arquivo fstab.
Ao usar ‘autodefrag’, na montagem, o sistema irá executar o processo de desfragmentação em background ou nos bastidores, sem atrapalhar o uso da máquina, sempre que detectar alguma gravação aleatória.
Segue um exemplo de uso:

mount -t btrfs -o remount,compress,autodefrag /dev/sdc /mnt

Se você estiver tendo algum problema grave com a sua unidade de armazenamento, pode tentar recuperá-la durante a montagem, com ‘recovery’:

mount -o recovery /dev/sdc /mnt 

Como alterar o tamanho de um volume Btrfs

Não há necessidade de desmontar o volume para alterar o seu tamanho. Esta operação pode ser feita online.
Para reduzir o tamanho da unidade em 5 GiB, use o seguinte comando:

btrfs filesystem resize -5g /mnt

Para aumentar o tamanho em 500 MiB, use o seguinte comando:

btrfs filesystem resize +500m /mnt

Se isto não for possível, o sistema retornará o erro:

Resize '/mnt/' of '+500m'
ERROR: unable to resize '/mnt/' - File too large

Para ver o novo tamanho do volume, use o comando df:

df -h /mnt/
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/sdc        4,1G   32M  3,3G   1% /mnt

Simples, não é?
Este artigo, dá uma ideia inicial das possibilidades do sistema de arquivos Brtfs e lhe permite começar a explorar toda a sua robustez.
Não esqueça de se aprofundar mais no assunto, lendo os textos linkados.
Divirta-se!