HDs com Linux precisam mesmo ser desfragmentados? Descubra aqui a resposta para essa pergunta que ronda a cabeça de vários usuários.
Você já desfragmentou o disco do seu computador? Se o sistema operacional que utiliza é o Windows, certamente já teve que utilizar algum desfragmentador.
Mas e o Linux, não precisa desfragmentar? Bom, com o Linux a coisa é um pouco diferente, mas isso não quer dizer que nunca precisará realizar esta tarefa.
Para entender melhor o assunto tratado neste artigo, é recomendado que você leia antes algum material sobre desfragmentação de discos. O Portal Baixaki possui dois ótimos artigos a respeito: “Desfragmentação de disco: por que fazer e como ocorre?” e “Guia completo sobre desfragmentação de disco”. Vale a pena conferir e ficar por dentro do assunto!
Desfragmentação no Linux?
Há tempos existe uma discussão quanto ao fato de precisar ou não desfragmentar discos que abrigam sistemas Linux. Existem usuários que defendem com todas as forças a ideia de que o sistema operacional do pinguim não requer desfragmentação frequente devido ao fato de os usuários não conseguirem copiar e colar arquivos em qualquer pasta do sistema.
No entanto, existe também o outro lado da moeda, ou seja, os usuários que dizem ser necessário desfragmentar todo e qualquer disco, independente do sistema operacional utilizado. Mas afinal, quem está certo?
Os dois lados da história
Na verdade, ambas as visões estão corretas de alguma maneira. De fato, não é qualquer usuário que consegue copiar arquivos para dentro das pastas do sistema, é preciso ter a senha de acesso do chamado “super usuário” (root) para isso.
Além de proteger os arquivos principais, essa restrição de acesso faz com que apenas a pasta pessoal dos utilizadores do sistema fique fragmentada. Como os arquivos ali contidos normalmente nada têm a ver com o núcleo do SO, não afetam em nada o desempenho do computador.
O sistema de arquivos utilizado pelo Linux também ajuda para que a fragmentação do disco não seja tão grande. Isso porque a forma com a qual o sistema operacional do pinguim gerencia a movimentação de arquivos (copiar, colar, criar, recortar e excluir) evita que lacunas sejam criadas no disco, exceto quando o HD está muito cheio.
Embora a fragmentação das pastas pessoais não afete diretamente o sistema, ela pode ser responsável pela demora na abertura de arquivos e documentos, por exemplo.
Nesse caso sim é preciso fazer alguma coisa para organizar o disco novamente e diminuir o esforço mecânico do HD na hora de ler algum arquivo ou acessar um diretório na sua pasta.
Como desfragmentar o disco no Linux?
Não é difícil encontrar na internet comandos que permitam a desfragmentação do disco no Linux. O Baixaki escolheu dois algoritmos para a realizaçãod dos procedimentos. O primeiro deles permite que o usuário saiba quão desfragmentada está a sua pasta pessoal ou qualquer outro diretório do computador.
O segundo algoritmo, por sua vez, realiza a tarefa de desfragmentar o disco e tornar o acesso aos arquivos mais veloz. Confira abaixo o passo a passo de como utilizar esses algoritmos sem problemas.
Analisando a pasta pessoa do sistema
01. O primeiro passo na análise do disco é baixar os algoritmos necessários. Abra uma janela do Terminal e digite o seguinte comando:
gedit defragmentation.pl &
02. Uma janela do editor de texto padrão do Linux será exibida. Copie e cole o código presente neste link (ou através da caixa abaixo) para dentro do arquivo criado. Salve as alterações feitas e feche a janela.
- Código: Selecionar todos
#!/usr/bin/perl -w
#this script search for frag on a fs
use strict;
#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;
#search fs for all file
open (FILES, "find " . $ARGV[0] . " -xdev -type f -print0 |");
$/ = "\0";
while (defined (my $file = <FILES>)) {
open (FRAG, "-|", "filefrag", $file);
my $res = <FRAG>;
if ($res =~ m/.*:\s+(\d+) extents? found/) {
my $fragment = $1;
$fragments += $fragment;
if ($fragment > 1) {
$fragfiles++;
}
$files++;
} else {
print ("$res : not understand for $file.\n");
}
close (FRAG);
}
close (FILES);
print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n");
03. Agora é preciso tornar este arquivo PL um executável. Para isso, digite o seguinte comando:
chmod +x defragmentation.pl
04. Para executar o arquivo e verificar como está a fragmentação da sua pasta, utilize o comando:
sudo ./fragmentation.pl /home/USUARIO*
*Subtitua USUARIO pelo seu nome de usuário no sistema.
05. Pronto! O resultado da análise é exibido no próprio Terminal, como mostra a imagem abaixo.
Desfragmentando a pasta
01. Os passos para desfragmentar uma pasta são bem parecidos com os listados acima. Primeiro é preciso criar um arquivo chamado defrag.pl e copiar o código presente neste link para dentro dele, salvando as alterações realizadas logo em seguida. O código pode ser também copiado desta caixa abaixo:
- Código: Selecionar todos
#!/bin/bash
# defrag v0.08 by Con Kolivas <kernel@kolivas.org
# Braindead fs-agnostic defrag to rewrite files in order largest to smallest
# Run this in the directory you want all the files and subdirectories to be
# reordered. It will only affect one partition. It works best when run twice.
# Are you really crazy enough to be using this? It might blow your data
# into tiny little useless chunks.
trap 'abort' 1 2 15
renice 19 $$ > /dev/null
abort()
{
echo -e "\nAborting"
rm -f tmpfile dirlist
exit 1
}
fail()
{
echo -e "\nFailed"
abort
}
declare -i filesize=0
declare -i numfiles=0
#The maximum size of a file we can easily cache in ram
declare -i maxsize=$((`awk '/MemTotal/ {print $2}' /proc/meminfo`*1024))
(( maxsize-= `awk '/Mapped/ {print $2}' /proc/meminfo` ))
(( maxsize/= 2))
if [[ -a tmpfile || -a dirlist ]] ; then
echo dirlist or tmpfile exists
exit 1
fi
# Sort in the following order:
# 1) Depth of directory
# 2) Size of directory descending
# 3) Filesize descending
# I made this crap up. It's completely unvalidated.
echo "Creating list of files..."
#stupid script to find max directory depth
find -xdev -type d -printf "%d\n" | sort -n | uniq > dirlist
#sort directories in descending size order
cat dirlist | while read d;
do
find -xdev -type d -mindepth $d -maxdepth $d -printf "\"%p\"\n" | \
xargs du -bS --max-depth=0 | \
sort -k 1,1nr -k 2 |\
cut -f2 >> tmpfile
if (( $? )) ; then
fail
fi
done
rm -f dirlist
#sort files in descending size order
cat tmpfile | while read d;
do
find "$d" -xdev -type f -maxdepth 1 -printf "%s\t%p\n" | \
sort -k 1,1nr | \
cut -f2 >> dirlist
if (( $? )) ; then
fail
fi
done
rm -f tmpfile
numfiles=`wc -l dirlist | awk '{print $1}'`
echo -e "$numfiles files will be reordered\n"
#copy to temp file, check the file hasn't changed and then overwrite original
cat dirlist | while read i;
do
(( --numfiles ))
if [[ ! -f $i ]]; then
continue
fi
#We could be this paranoid but it would slow it down 1000 times
#if [[ `lsof -f -- "$i"` ]]; then
# echo -e "\n File $i open! Skipping"
# continue
#fi
filesize=`find "$i" -printf "%s"`
# read the file first to cache it in ram if possible
if (( filesize < maxsize ))
then
echo -e "\r $numfiles files left \c"
cat "$i" > /dev/null
else
echo -e "\r $numfiles files left - Reordering large file sized $filesize ... \c"
fi
datestamp=`find "$i" -printf "%s"`
cp -a -f "$i" tmpfile
if (( $? )) ; then
fail
fi
# check the file hasn't been altered since we copied it
if [[ `find "$i" -printf "%s"` != $datestamp ]] ; then
continue
fi
mv -f tmpfile "$i"
if (( $? )) ; then
fail
fi
done
echo -e "\nSucceeded"
rm -f dirlist
02. Novamente, é preciso tornar o documento PL um executável. Basta digitar o comando abaixo no Terminal para que isso aconteça.
chmod +x defrag.pl
03. Feito isso, finalmente é hora de executar o arquivo e deixar que ele faça todo o trabalho pesado organizando as pastas e arquivos presentes no seu diretório pessoal. Para isso, utilize o comando abaixo:
sudo ./defrag.pl /home/USUARIO*
*Subtitua USUARIO pelo seu nome de usuário no sistema.
O processo de desfragmentação pode levar algum tempo. Tudo depende da quantidade de arquivos presentes na pasta pessoal e também quanto eles ocupam de espaço no disco. Uma mensagem será exibida no Terminal quando o processo for concluído, por isso fique de olho.
Apenas para lembrar
Embora não seja muito comum usuário do Linux desfragmentarem o disco, às vezes esse procedimento pode ser necessário. Se ao executar o arquivo defragmetation.pl o número de arquivos não contínuos for muito grande, é recomendado que a desfragmentação seja realizada.
Fique de olho! Às vezes você pode estar sofrendo com lentidão para abrir um documento devido à fragmentação dos arquivos. A solução é bem simples e pode facilitar muito a vida dos usuários.
Você está de acordo com as REGRAS do Fórum?! Já tirou suas dúvidas sobre o Fórum no FAQ!?
Caso tenha gostado do post, por favor, prestigie a fonte para este e outros assuntos afins o agradece sua preferência, volte sempre!
CREATION SOURCE: Tecmundo (Elaine Martins)
Vivamos a LIBERDADE com total DIGNIDADE!