Autor Tópico: Desfragmentando o ext4!  (Lida 348 vezes)

Offline galactus

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.206
    • Ver perfil
Desfragmentando o ext4!
« Online: 08 de Maio de 2017, 20:04 »
Olá amigos da rede Ubuntu!   Vamos aprender hoje a verificar à fragmentação do seu sistema de arquivos ext4 e se necessário, desfragmentá-lo.

Alguns de vocês devem estar querendo me perguntar:  "Mas galactus, o ext4 se fragmenta?  Eu tinha ouvido falar que não se fragmentava ou que teria uma fragmentação mínima!"

Isso é verdade em parte, o ext4 tem vários mecanismos para diminuir a fragmentação do seu sistema de arquivos, mas sim, ele pode ficar fragmentado.

Vamos usar o comando e4defrag. Para nossa alegria e satisfação ele pode ser executado com o sistema de arquivos montado, ou seja, com seu sistema "on line"!

Para os interessados em todos os detalhes da sintaxe do comando é só mandar um "man e4defrag" no terminal para ver tudo nos seus mínimos detalhes.

Se tiver ainda mais vontade de se aprofundar no assunto, não deixe de ler a palestra do criador do e4defrag, o japonês Akira Fujita: http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf

Sim é seguro usar o e4defrag, ele já está disponível desde 2009, mas ninguém fala disso pois a fama do ext4 é de não se fragmentar!

Sendo assim vamos deixar dos entretantos e partir logo para os finalmentes.

No terminal, como usuário root, verifique o nível de fragmentação de sua partição:

Citar
e4defrag -c /

Note bem, ele vai verificar a partição raiz e não o disco.  O comando funciona nas partições. Assim se você tiver também uma partição /home  formatada em ext4 use:

Citar
e4defrag -c /home

E assim por diante em todas as partições formatadas em ext4.

Assim o comando e4defrag -c  vai verificar a fragmentação do sistema de arquivos e te dar um relatório sobre isso, mas não vai desfragmentar nada ainda!

Como exemplo vou mostrar o resultado da minha partição raiz do notebook:

Citar
root@galactus-note:/home/galactus# e4defrag -c /
<Fragmented files>                             now/best       size/ext
1. /var/lib/smartmontools/attrlog.ST1000LM024_HN_M101MBB-S32SJ5CF123786.ata.csv
                                                16/1              4 KB
2. /var/log/wtmp.1                              14/1              4 KB
3. /var/log/auth.log                            17/1              4 KB
4. /var/log/auth.log.1                          17/1              5 KB
5. /var/log/preload.log                          3/1              4 KB

 Total/best extents            286411/286186
 Average size per extent         36 KB
 Fragmentation score            0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (/) does not need defragmentation.
 Done.

Você deve se preocupar com o resultado da linha:  Fragmentation score            0


Como ele mesmo explica um resultado de 0 a 30 - sem problemas31 a 55 pequena fragmentação que pode ser ignorada, 56 acima o seu sistema deve ser desfragmentado.

Portanto apenas com resultados a partir de 56 é que você deve executar a desfragmentação. Isso é feito com o mesmo comando sem o -c, ficando assim:

Citar
e4defrag  /

ou

Citar
e4defrag  /home

Notas:

1) O e4defrag não funciona em partição Swap,  no diretório lost+found, nem em arquivos alocados em blocos indiretos.

2)  O e4defrag não funciona em pontos de montagem. Como deixei claro acima ele funciona na partição.

3) É seguro usar o e4defrag mesmo com arquivos ou aplicações abertas, contudo,  o desempenho do seu sistema será reduzido enquanto estiver desfragmentando.

4) É preciso que haja espaço livre suficiente no disco para realizar a desfragmentação e efetivamente melhorar o desempenho com a desfragmentação.

5) Você pode usar o e4defrag como usuário normal, mas ele só vai agir nos arquivos pertencentes ao usuário, portanto é melhor usá-lo como root para desfragmentar todos os arquivos.

6) Uma nota pessoal minha!  Eu não recomendo rodar o e4defrag em "discos" SSD só nos tradicionais HDs! 

 

Era isso pessoal!
* Linux Mint 18 Mate 64bits / Windows 10 64bits Casa! * CentOS 7 64bits Servidor de arquivos em modo texto - Casa * MacOS Sierra  - Mac Mini servidor multimidia - Casa * DELL Inspiron 14R + Ubuntu Mate 17.04 64bits.

Offline niquelnausea

  • Usuário Ubuntu
  • *
  • Mensagens: 968
    • Ver perfil
Re:Desfragmentando o ext4!
« Resposta #1 Online: 09 de Maio de 2017, 18:43 »
fiz um teste rápido em um partição /home que tenho neste formato (ssd, 40% livre), a fragmentação é irrelevante! irei testar em hds comuns e partições / para poder analisar melhor.

ps: quando vai sair um "tutorial" sobre btrfs e snapshots ;D?

Offline Sampayu

  • Usuário Ubuntu
  • *
  • Mensagens: 333
  • "Não é possível semear de mãos fechadas"
    • Ver perfil
    • YouTube
Re:Desfragmentando o ext4!
« Resposta #2 Online: 14 de Maio de 2017, 02:29 »
O comando precisa ser executado em modo superusuário. Como a maioria utiliza o sistema em modo usuário, o ideal é expor os comandos precedidos por sudo:

Código: [Selecionar]
sudo e4defrag -c /
Código: [Selecionar]
sudo e4defrag -c /home
Código: [Selecionar]
sudo e4defrag /
E assim por diante. :)
Yuri Sucupira ("Sampayu")

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.494
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:Desfragmentando o ext4!
« Resposta #3 Online: 14 de Maio de 2017, 10:48 »
Vou dar uma de advogado do diabo.

Não acho necessário desfragmentar sistema de arquivos no Linux.

Isso pq a forma como ele foi criado, essencialmente multi-tarefa, quebra o princípio da localidade que faz a vantagem de se manter os arquivos desfragmentados.


Enviado do meu smartphone.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline Sampayu

  • Usuário Ubuntu
  • *
  • Mensagens: 333
  • "Não é possível semear de mãos fechadas"
    • Ver perfil
    • YouTube
Re:Desfragmentando o ext4!
« Resposta #4 Online: 14 de Maio de 2017, 12:07 »
Vou dar uma de advogado do diabo.

Não acho necessário desfragmentar sistema de arquivos no Linux.

Isso pq a forma como ele foi criado, essencialmente multi-tarefa, quebra o princípio da localidade que faz a vantagem de se manter os arquivos desfragmentados.


Enviado do meu smartphone.

Eu vou ficar no meio termo, baseando-me no muito que já li a respeito deste assunto.

O primeiro ponto a entender é que os sistemas de arquivos Ext2 e Ext3 fragmentam de maneira considerável (em relação ao sistema Ext4). Isso porque usam alocação de dados por blocos. Já o Ext4 utiliza alocação por extensão. A alocação por extensão faz com que a fragmentação seja muito menor. Como hoje em dia a grande maioria dos usuários Linux usa sistema Ext4, a fragmentação do sistema de arquivos é realmente muito pequena e muito lenta, tornando desnecessário desfragmentar, no uso cotidiano.

No entanto, é falso afirmar que o sistema de arquivos não fragmenta: isso não existe. Em algum momento, quando a unidade de armazenamento dinâmico (disco rígido, unidade de estado sólido etc.) estiver "quase cheia" (o que costuma ocorrer quando a unidade de armazenamento está hospedando um volume de dados tal que ocupe algo geralmente entre 90 e 95% da capacidade de armazenamento dessa unidade de armazenamento dinâmico), os novos dados que forem gravados irão se fragmentar.

Portanto, regra geral não é necessário desfragmentar a unidade, pois no uso cotidiano ela estará formatada com sistema de arquivos Ext4 e operando com menos de 90% de sua capacidade de armazenamento comprometida, ou seja: terá mais de 10% de espaço livre. No entanto, quando a unidade ficar com 10% de espaço livre (ou menos que isso), muito provavelmente a fragmentação será suficiente para justificar uma desfragmentação.

Quem frequentemente lida com arquivos muito grandes, e por isto vive "enchendo e esvaziando" a unidade de armazenamento, provavelmente deparar-se-á com momentos em que a unidade estará com uma fragmentação considerável. Portanto, o perfil do usuário (e, consequentemente, seu perfil de utilização da unidade de armazenamento) também interfere.

Importante observar que o programa e4defrag mostra um score para o usuário, informando se é ou não é recomendável desfragmentar o sistema de arquivos. Isso na prática significa que, mesmo executando o e4defrag, o usuário Linux observará como está o nível de fragmentação de sua unidade de armazenamento e, também, como esse nível evolui com o passar do tempo. Isso evita ficar desfragmentando a unidade desnecessariamente, e também facilita ao usuário perceber seu próprio perfil de uso do sistema e o impacto que isso tem (ou não tem) na fragmentação de dados.

Em síntese: regra geral, não é necessário desfragmentar a unidade de armazenamento, mas é bem provável que uma desfragmentação venha a ser necessária quando essa unidade estiver com 90% (ou mais) de sua capacidade de armazenamento comprometida.

Algumas referências:

  • Em português:
https://pplware.sapo.pt/linux/porque-nao-e-preciso-desfragmentar-o-disco-em-linux/
http://www.diolinux.com.br/2014/02/por-que-linux-nao-precisa-desfragmentar-discos.html
  • Em inglês:
https://www.howtogeek.com/115229/htg-explains-why-linux-doesnt-need-defragmenting/
http://www.linux-magazine.com/Online/Features/Defragmenting-Linux
Yuri Sucupira ("Sampayu")

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.494
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:Desfragmentando o ext4!
« Resposta #5 Online: 14 de Maio de 2017, 13:55 »
Vc não entendeu meu ponto. Eu não estou afirmando que qualquer sistema de arquivos não fragmente; a fragmentação é uma coisa tão inevitável quanto a morte ou os impostos.

O que eu estou afirmando é que a fragmentação faz pouca diferença numa máquina Linux, pq com os vários processos simultâneos, o kernel acaba lendo os arquivos fora de ordem.


Enviado do meu smartphone.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline Sampayu

  • Usuário Ubuntu
  • *
  • Mensagens: 333
  • "Não é possível semear de mãos fechadas"
    • Ver perfil
    • YouTube
Re:Desfragmentando o ext4!
« Resposta #6 Online: 14 de Maio de 2017, 14:22 »
...a fragmentação faz pouca diferença numa máquina Linux, pq com os vários processos simultâneos, o kernel acaba lendo os arquivos fora de ordem.
Enviado do meu smartphone.

Mas a fragmentação - quando é considerável - é um agravante para o fato de o kernel ler os arquivos fora de ordem, torna o processo mais "caótico" do que já é.

O ponto é que, no Linux, essa fragmentação demora bastante para se tornar considerável, sendo essa a razão por que no dia-a-dia é perda de tempo ficar desfragmentando.
Yuri Sucupira ("Sampayu")

Offline creto

  • Expectador
  • Usuário Ubuntu
  • *
  • Mensagens: 293
  • Vivemos esperando dias melhores
    • Ver perfil
    • Blog do Creto
Re:Desfragmentando o ext4!
« Resposta #7 Online: 15 de Maio de 2017, 09:42 »
Off - Eu não fugirei desta escola jamais.
Grato pelas informações, galactus, zekkerj, Sampayu

T+
Perguntas-me qual foi o meu progresso? Comecei a ser amigo de mim mesmo. (Lúcio Aneu Séneca)
Blog do Creto - Teste Blog do Creto

Offline Sampayu

  • Usuário Ubuntu
  • *
  • Mensagens: 333
  • "Não é possível semear de mãos fechadas"
    • Ver perfil
    • YouTube
Re:Desfragmentando o ext4!
« Resposta #8 Online: 15 de Maio de 2017, 11:57 »
Off - Eu não fugirei desta escola jamais.
Grato pelas informações, galactus, zekkerj, Sampayu

T+

De nada. :)
Eu também sou um eterno aprendiz. No Linux é assim, estamos sempre aprendendo algo novo. Mas eu adoro esse sistema, ainda mais quando me deparo com algo assim, rs:  ;D

http://g1.globo.com/jornal-nacional/noticia/2017/05/ataque-hacker-atingiu-computadores-em-quase-100-paises-na-sexta.html
Yuri Sucupira ("Sampayu")