XFS

Como desfragmentar um sistema de arquivos XFS

Como desfragmentar um sistema de arquivos XFS
A fragmentação é um problema antigo quando se trata de armazenamento. Surge quando, devido ao uso prolongado, a mídia de armazenamento obtém pedaços de blocos alocados com espaço livre entre eles. Isso acontece porque vários programas solicitam memória em ordem diferente e, em seguida, liberam a memória em momentos diferentes. Ter pedaços de espaço não alocado entre os dados reduz o espaço total disponível no disco (eficiência de armazenamento) e também o desempenho do disco, uma vez que os dados não são armazenados em um grande pedaço contíguo, mas espalhados pelo disco.

Este problema é especialmente aparente em mídia magnética, embora os SSDs também sofram com isso. Vamos tentar desfragmentar um sistema de arquivos XFS neste post.

Configuração de sandbox

Primeiro, para experimentar com o sistema de arquivos XFS, decidi criar um testbench em vez de trabalhar com dados críticos em um disco. Este testbench é composto de uma VM Ubuntu à qual um disco virtual está conectado, fornecendo armazenamento bruto. Você pode usar o VirtualBox para criar a VM e, em seguida, criar um disco adicional para anexar à VM

Basta ir para as configurações de sua VM e em Configurações → Armazenamento seção, você pode adicionar um novo disco ao controlador SATA, você pode criar um novo disco. Conforme mostrado abaixo, mas certifique-se de que sua VM esteja desligada ao fazer isso.

Assim que o novo disco for criado, ligue a VM e abra o terminal. O comando lsblk lista todos os dispositivos de bloco disponíveis.

$ lsblk
disco sda 8: 0 0 60G 0
├─sda1 8: 1 0 1M 0 parte
└─sda2 8: 2 0 60G 0 parte /
sdb 8:16 0 100G 0 disco
sr0 11: 0 1 1024M 0 rom

Além do dispositivo de bloco principal sda, onde o sistema operacional está instalado, agora há um novo dispositivo sdb. Vamos criar rapidamente uma partição a partir dela e formatá-la com o sistema de arquivos XFS.

Abra o utilitário parted como usuário root:

$ parted -a / dev / sdb ideal

Vamos criar uma tabela de partição primeiro usando mklabel, seguido pela criação de uma única partição de todo o disco (que tem 107 GB de tamanho). Você pode verificar se a partição é feita listando-a usando o comando de impressão:

(dividido) mklabel gpt
(dividido) mkpart primário 0 107
(parted) print
(parted) sair

Ok, agora podemos ver usando lsblk que há um novo dispositivo de bloco sob o dispositivo sdb, chamado sdb1.

Vamos formatar este armazenamento como xfs e montá-lo no diretório / mnt. Novamente, execute as seguintes ações como root:

$ mkfs.xfs / dev / sdb1
$ mount / dev / sdb1 / mnt
$ df -h

O último comando irá imprimir todos os sistemas de arquivos montados e você pode verificar se / dev / sdb1 está montado em / mnt.

Em seguida, escrevemos vários arquivos como dados fictícios para desfragmentar aqui:

$ dd if = / dev / urandom of = / mnt / myfile.contagem txt = 1024 bs = 1024

O comando acima iria escrever um arquivo myfile.txt de 1 MB de tamanho. Você pode transformar este comando automaticamente em um loop for simples usando o bash e gerar mais arquivos desse tipo. Espalhe-os em vários diretórios, se quiser. Exclua alguns deles aleatoriamente. Faça tudo isso dentro do sistema de arquivos xfs (montado em / mnt) e, em seguida, verifique se há fragmentação. Tudo isso é, obviamente, opcional.

Desfragmente seu sistema de arquivos

A primeira coisa que precisamos fazer é descobrir como verificar a quantidade de fragmentação. Por exemplo, o sistema de arquivos xfs que criamos anteriormente estava no nó do dispositivo / dev / sdb. Podemos usar o utilitário xfs_db (significa xfs debugging) para verificar o nível de fragmentação.

$ xfs_db -c frag -r / dev / sdb1

O sinalizador -c recebe vários comandos, entre os quais está o comando frag para verificar o nível de fragmentação. O sinalizador -r usado para garantir que a operação seja totalmente somente leitura.

Se descobrirmos que há alguma fragmentação neste sistema de arquivos, executamos o comando xfs_fsr no nó do dispositivo:

$ xfs_fsr / dev / sdb1

Este último comando é tudo o que existe para desfragmentar seu sistema de arquivos, você pode adicioná-lo como um cronjob que monitorará regularmente seu sistema de arquivos. Mas fazer isso para xfs faz pouco sentido. A alocação baseada em extensão do XFS garante que problemas como fragmentação sejam mínimos.

Casos de Uso

Os casos de uso em que você precisa se preocupar mais com a fragmentação do sistema de arquivos envolve aplicativos onde muitos pequenos pedaços de dados são gravados e reescritos. Um banco de dados é um exemplo clássico disso e os bancos de dados são famosos por deixar muitos e muitos "buracos" em seu armazenamento. Os blocos de memória não são preenchidos de forma contígua, tornando a quantidade de espaço disponível cada vez menor ao longo do tempo.

O problema surge não apenas em termos de espaço utilizável reduzido, mas também em termos de IOPS reduzido, que pode prejudicar o desempenho do seu aplicativo. Ter um script para monitorar continuamente o nível de fragmentação é uma forma conservadora de manter o sistema. Você não quer um script automatizado para iniciar aleatoriamente a desfragmentação do seu sistema de arquivos, especialmente quando ele está sendo usado no pico de carga.

Melhores distros Linux para jogos em 2021
O sistema operacional Linux percorreu um longo caminho desde sua aparência original, simples e baseada em servidor. Este sistema operacional melhorou ...
Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...