Tunando o ext4 para Desempenho! Revisto, ampliado e ainda mais rápido e seguro!

Iniciado por galactus, 29 de Agosto de 2010, 02:04

tópico anterior - próximo tópico

galactus

Tunando o ext4 para Desempenho! - Revisto, ampliado e ainda mais rápido e seguro!

Autor: Marcelo A.  S. Pugliesi o galactus do Fórum Ubuntu Brasil

   Pois bem pessoal, aqui estou eu novamente com mais novidades para vocês! Como procuro não ficar "parado", continuei meus estudos e venho aqui com vocês dividir o que aprendi!  No tutorial anterior vocês aprenderam como tunar o Ext4 para desempenho, mas sem segurança de seus dados!  Agora mostrarei a vocês novas opções de desempenho com ou sem segurança! Lembrando que este tema está longe de ser esgotado! Existem muitas outras modificações que podem ser feitas, mas coloquei aqui as que julgo serem mais úteis para usuários desktop! Fique a vontade para acrescentar mais alguma dica ou indicar qualquer erro!

   Decidi dividir este tutorial em três partes! A primeira é uma pequena introdução, a segunda parte é composta das alterações que você pode realizar desde a formatação e instalação do sistema. Na terceira parte mostro o que você pode fazer depois de já ter realizado uma instalação padrão ou não do Ubuntu! Procurei deixar clara as dicas que deixam o seu sistema mais seguro e as que deixam o seu sistema mais inseguro, fica ao seu critério o que usar! Não me responsabilizo por perda de dados e corrompimentos do sistema! Faça backup dos seus dados e na dúvida treine numa máquina virtual antes de tentar na vida real!

   Este tutorial faz ainda mais uso do terminal/consola do que o anterior!  Portanto, se você não gosta de usar o terminal, por favor, pare por aqui! Se você gostaria de ter um sistema muito mais rápido que sua instalação padrão e não se importa em usar o terminal, fique a vontade e tire bom proveito das dicas a seguir!

   As dicas a seguir não são exclusividade do Ubuntu, elas podem ser aplicadas a qualquer distribuição moderna que tenha o seu kernel suportando o ext4 e use versões mais recentes dos comandos listados neste tutorial! Este tutorial não é voltado ao usuário leigo ou iniciante! Assumo que você sabe o que está fazendo! Entretanto um novato com paciência e um pouco de leitura poderá realizar os mesmos passos!

   Por favor, leia todo o tutorial antes de realizar quaisquer mudanças!



Introdução – Entendo o Journal!

   O ext4 por padrão vem preparado para segurança dos dados em detrimento do desempenho. Tanto o ext3 quanto o ext4 são sistemas de arquivos com journal. Journaling é o processo de registro de mudanças no sistema de arquivos por meio de um journal (um arquivo de registro (log) dedicado em uma região adjacente do disco). As alterações reais no armazenamento físico são então efetuadas a partir do arquivo de registro (log), que pode implementá-las com mais confiabilidade e garantir a consistência, mesmo se houver travamento do sistema ou faltar energia durante a operação. O resultado é que se reduzem as chances de que o sistema de arquivos seja corrompido.

   O ext3 e o ext4 oferecem suporte a vários modos de journaling, dependendo das necessidades do usuário. São eles: * Ordered (padrão): Somente os metadados dos arquivos são escritos na área de journal, porém força a escrita do conteúdo do arquivo no sistema de arquivos principal logo após os metadados terem sido gravados no journal. Este é o que oferece a melhor relação confiabilidade VS desempenho. * Writeback: Somente os metadados são escritos na área de journal, porém o kernel irá definir quando o conteúdo do arquivo será escrito no sistema de arquivos principal (sync ou pdflush). O writeback oferece o melhor desempenho, porém em caso de queda do sistema, os dados podem ser reescritos fora de ordem os corrompendo. Segundo o Tio Linus, o Writeback é modo dos idiotas! * Journal: metadados e dados do arquivo (conteúdo do arquivo) são escritos na área de journal e depois escritos no sistema de arquivos principal, aumentando a confiabilidade, porém oferecendo menos desempenho. 

   O Journal do sistema de arquivos é a parte mais acessada do seu disco rígido. Seja lá o que for que você faça o Journal é acessado, ou seja, tanto nas operações de leitura como de escrita! Como vocês sabem o disco rígido é uma das partes mais lentas do seu PC! Então como poderemos melhorar isso?  Apenas em relação ao Journal existem três maneiras principais!  Primeiro alterando a forma de gravação do Journal (explicado logo acima), segundo alterando o seu tamanho e terceiro mudando a sua localização! 

   Por padrão o ext4 procura calcular, de acordo com o tamanho do sistema de arquivos, o melhor tamanho do journal! Contudo isso também pode acabar gerando perda de desempenho, isso porque o journal pode ficar pequeno em relação à quantidade de dados guardados em seu sistema de arquivos.  No geral o Journal criado tem cerca de 128MB! Esse tamanho pode ser duplicado (256MB) e até mesmo triplicado (400MB) se mantido dentro do mesmo sistema de arquivos!  Se colocado fora do mesmo sistema de arquivos, ele pode ser maior que 1GB!  Quanto à localização, ele pode ser colocado fora do mesmo sistema de arquivos, mas dentro do mesmo disco rígido, e pode ser colocado fora do disco rígido onde está o seu sistema de arquivos! Como você pode estar imaginando, o Journal grande e colocado em outro disco rígido que não o do seu sistema de arquivos é a opção mais rápida!  E essa técnica não é nova!  É muito utilizada em servidores, mas devido a sua complexidade ela é evitada no mundo desktop!

   Além das alterações no Journal, podemos inserir novos parâmetros na hora da formatação para acelerar as coisas em nosso sistema de arquivos!  Na hora de formatar é possível criar um índice dos diretórios e usar extent nos blocos! A criação de um índice de diretório acelera a leitura dos mesmos! O uso de extents na hora de guardar as informações dos blocos nos inodes acelera e muito o acesso ao sistema de arquivos!

   Mesmo após a formatação podemos alterar as opções na hora da montagem do sistema de arquivos, fazendo com que a leitura e gravação dos dados possam ficar ainda mais rápidas mas ao custo de segurança dos dados! Então vamos deixar dos entre tantos e partir logo para os finalmentes! :)
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

- Primeira parte - Ações realizadas antes da instalação!


* Opção 1 – Journal externo em outro disco rígido!

   Você realizará uma instalação nova do seu Ubuntu (ou de uma de suas variantes) e deseja aperfeiçoar o seu sistema de arquivos desde o início! Essa é a melhor opção!  

   De posse de um Live-CD do Ubuntu ou do CD do Parted Magic iremos realizar uma formatação em modo texto! É, isso mesmo, você leu corretamente, em modo texto! Assim temos muito mais opções no que alterar! Agora é a hora de você planejar como vai deixar a sua tabela de partições! Vai criar uma instalação simples com duas partições (raiz mais Swap) ou vai criar mais de duas partições, separando também o Home? Isso fica ao seu critério! O que interessa neste tutorial é que você precisará primeiro criar sua tabela de partições para posteriormente inserir as novas opções que farão toda a diferença durante a formatação! Você tem duas maneiras de fazer isso! Você pode utilizar o cfdisk em modo texto (eu sei, eu sei, os que nadam ou já nadaram em águas do Slakware agora abriram o maior sorriso), ou usar o gparted mesmo em modo gráfico! A vantagem desse processo é que você deixa tudo pronto no disco rígido em questão e depois apenas aponta para o particionador da instalação onde vai montar o sistema de arquivos e qual o tipo dele! Você não manda formatar tudo outra vez! Também é ótimo se você quiser usar um Alternate Install CD ou a instalação mínima do Ubuntu!

Usando o cfdisk!

   Use o comando fdisk -l como root para descobrir a atual situação de sua tabela de partições! É importante saber se o disco rígido que você vai alterar é o dispositivo sda/sdb/sdc e etc. . No exemplo a seguir eu vou usar dois discos rígidos vazios de uma máquina virtual! Um com 8GB e outro com 1GB!Como usuário root faça:

#cfdisk /dev/sd?

   Altere a interrogação conforme a letra da unidade do disco rígido a ser modificada! No caso da máquina virtual, o primeiro disco rígido era o /dev/sda!

Você será brindado com a seguinte tela:




Use as setas do teclado para navegar nas opções do utilitário e do disco rígido! Selecione o disco rígido desejado e tecle Enter para criar a nova tabela de partição! Ele vai te perguntar se a nova partição será primária ou lógica, faça a sua escolha e depois defina o tamanho da partição em MB! Defini como sendo 7500MB ou 7.5GB! Depois ele pergunta se você vai querer que a partição seja localizada no início ou no fim do disco. Escolhi no início! Tecle Enter na opção "Iniciali." para tornar essa partição inicializável se esta for a partição raiz! Depois navegue até a opção "Tipo" e tecle Enter. Aí escolha a opção "83", tipo de sistema de arquivos Linux! Se tudo correu bem até aqui, sua tela do cfdisk deve estar igual a essa:




Agora navegue até o espaço livre restante e vamos criar a partição Swap! Novamente tecle enter e escolha entre partição primária e lógica! Defina o tamanho, no caso escolhi o máximo e depois o tipo! Dessa vez escolha a opção "82", partição Swap! Agora chegou a hora de gravar suas alterações no disco! Navegue até a opção "Gravar" e digite "sim" seguido da tecla Enter para que as mudanças tomem efeito! Enquanto você escolhe as alterações, mas não mandar gravar nada, nada está perdido ou alterado!  Feita a primeira parte, saia do cfdisk navegando até a opção "Sair" e teclando Enter! Sua tela deve estar parecida com isso:





Agora vamos repetir o passo de criar uma partição primária no segundo disco rígido que será usado como uma partição Journal externa! Atente para o fato que essa partição deve ser primária!  Se usar uma partição lógica o sistema não instalará! Execute o comando fdisk -l e veja como está a sua tabela de partição. Ela deve estar parecida com esta:





Então fazemos como root: cfdisk /dev/sd?

   Onde novamente a interrogação vai depender da letra da unidade do seu disco rígido. Aqui no meu exemplo foi sdb!  Crie uma partição primária com o tamanho de 1GB (1024MB) tipo Linux ("83"), ela não precisa ser marcada com o "inicializar"! Grave as alterações no segundo disco rígido e saia do cfdisk!

Observações: Isso foi apenas um exemplo! Você pode criar quantas partições julgar necessário no seu disco rígido em que ficará o seu sistema! Contudo, para cada partição criada você terá que criar um journal externo para ela se quiser alto desempenho! Quanto ao segundo disco rígido, nada impede de você usar o restante do mesmo para guardar seus dados! Apenas use o início dele para servir de Journal! Qual o motivo do 1GB?  É que com esse tamanho todo ele tem mais velocidade quando lidando com muitos arquivos dentro de muitos diretórios seja em ações de gravação ou de leitura! Se não quiser usar isso tudo, fique com 256MB ou 400MB! Já estão de bom tamanho também! Porque eu não uso mais de 1GB?  Porque não dá diferença nenhuma para um usuário Desktop!  Só se você tivesse uma grande massa de dados em um único volume! Tipo um LVM!  Em servidores eles podem chegar ou passar dos 8GB de Journal!  



Usando o Gparted!

   Se estiver usando o CD do Parted Magic, é só chamar o "particionador"!  Se estiver com um Live-CD do Ubuntu vá até Sistema > Administração > Gparted!

   Com o Gparted aberto escolha o disco rígido em que vai ficar o sistema e crie apenas a tabela de partição com os tamanhos definidos de acordo com a sua necessidade! Não formate nada! Mas como? Na opção "Sistema de arquivo" escolha "Não formatada"! Como mostrado na figura a seguir:





Veja essa nova foto como exemplo:





Na hora da partição Swap, você escolhe que o sistema de arquivos deve ser formatado! Repita o passo da partição raiz para a partição do segundo disco rígido que será usada como Journal externo! Lembre-se, partição primária!


   Finalizada a fase de criar as partições chegamos ao momento tão aguardado! Vamos formatar as partições! Sempre como usuário root faça os seguintes comandos:

# mke2fs -t ext4 -O dir_index,extent /dev/sda1


   Aqui criamos o sistema de arquivos ext4 com índice de diretórios e extent nos blocos! Altere a letra e o número da unidade conforme for o seu caso!

   Sua tela deve ficar igual a essa:




Agora vamos criar uma partição Journal no segundo disco rígido!

#mke2fs -O journal_dev /dev/sdb1

   Sua tela deve ficar parecida com esta:




Agora vamos dizer ao sistema de arquivos recém criado no "sda1" que ele não possui mais Journal:

#tune2fs -O ^has_journal /dev/sda1

   
Em seguida certifique-se que tudo correu bem com o comando:

#tune2fs -l /dev/sda1


   Sua tela deve ficar parecida como a tela a seguir (atente para a linha "Filesystem Features", você não deve ler a opção "has_journal" se tudo foi executado corretamente, isso indica que o /dev/sda1 não possui mais journal):





O último passo consiste em dizer ao /dev/sda1 que o seu Journal está em outro disco rígido, no caso do exemplo, no /dev/sdb1. Mas não é só isso, aqui vai outro pulo do gato! Lembre-se que existem três tipos de gravação do Journal. Não lembram?  
   
   Relembrando: journal_data (o mais seguro e também mais lento), journal_data_ordered (o padrão, melhor custo/benefício entre velocidade e segurança), journal_data_writeback (maior velocidade a custa de segurança dos seus dados). Agora você pode dizer ao sistema qual deles você quer usar!   Veja que em momento algum eu recomendo que você use o seu sistema de arquivos sem journal! Se for assim use o ext2! Mesmo usando o writeback, você não perde o journal! Perde o que você está fazendo que não foi salvo em uma queda de energia!  Por exemplo, com um documento do Writer aberto, o que foi digitado no documento e não foi salvo, perde-se com uma queda de energia! Mesmo escolhendo a opção mais segura journal_data, mas com o journal em outro disco rígido, você ganhará um aumento em média de 30 a 60% nas taxas de gravação e leitura! Ou seja, seu sistema estará mais seguro e ainda mais rápido do que ao usar o writeback dentro do mesmo disco rígido!  Escolhendo o writeback esse ganho pode passar da casa da dezena! Fica ao seu critério o que escolher!  Fiz o teste com o journal_data e o writeback e os ganhos são assombrosos em relação à utilização do journal dentro do mesmo disco rígido! E notem que não estou me referindo às mudanças que ainda podemos fazer com o fstab!  


Então se quiser unir maior velocidade com segurança:

#tune2fs -o journal_data -j -J device=/dev/sdb1 /dev/sda1

   Se quiser a opção padrão do sistema:

#tune2fs -o journal_data_ordered -j -J device=/dev/sdb1 /dev/sda1

   Se quiser o máximo de desempenho à custa de alguma segurança dos seus dados:

#tune2fs -o journal_data_writeback -j -J device=/dev/sdb1 /dev/sda1

   Em seguida certifique-se que tudo correu bem!

#tune2fs -l /dev/sda1

   Sua tela deve ficar parecida com essa (note que o "has_journal" voltou à linha do "Filesytem features" se tudo correu bem):



Pronto! Agora basta clicar no ícone do instalar Ubuntu e na hora que ele chamar o particionador, você escolhe a opção "especificar particionamento manual – avançado"! Daí você escolhe a partição ext4 e clica em "Alterar" e coloca o "usar como" em "Sistema de arquivos com journaling ext4", NÃO marque a partição para formatação e escolhe o ponto de montagem de sua escolha! Tudo como na figura abaixo:




A partição Swap você não muda nada! E na partição que aparece como ext2 do outro disco rígido, você também não mexe em nada! Na hora de instalar o Ubuntu vai reclamar com você que a partição raiz não foi marcada para formatação, você ignora essa mensagem e manda bala! Se você não errou em nada, sua instalação ocorrerá normalmente. Você não deve sentir muita diferença na instalação agora, pois você está preso a parte mais lenta do seu PC, sua leitora/gravadora de CD/DVD!  Mas aguarde até o primeiro boot! : )



* Opção 2 - Journal externo, mas dentro do mesmo disco rígido!

   Este é o caso se você não tem outro disco rígido, mas possuem muitos dados dentro de muitos diretórios e subdiretórios e quer acelerar um pouco as coisas!  Com essa opção você sentirá uma melhora nas taxas de leitura, mas não das de gravação! Eu só usaria essa opção no caso de grande volume de dados dentro de um disco rígido também grande! Se esse não for o seu caso, não compensa usar essa opção!

   Se você entendeu a opção 1, a opção 2 é idêntica! Basta apenas apontar a partição dentro do mesmo disco rígido com os comandos listados na opção 1!  Ou seja, as letras da unidade continuarão as mesmas, o que vai mudar são os números! Exemplo: sda1/sda2/sda3 e assim por diante! Você pode criar uma partição para o journal não tão grande também, de 256MB ou 400MB! Você decide!



* Opção 3 - Journal dentro do mesmo sistema de arquivos, mas aumentado além do tamanho padrão!

   Como eu disse antes, por padrão o ext4 calcula o tamanho do Journal automaticamente de acordo com o tamanho do seu sistema de arquivos! Em geral ele fica em torno de 128MB! Mas se você quiser aumentar as taxas de leitura, você pode aumentar o tamanho do Journal interno! Contudo, existe um limite! Você não pode passar dos 400MB! Para a grande maioria dos mortais, 256MB já está bom demais! Um journal maior dentro do mesmo sistema de arquivos sobrecarrega as ações de gravação e o seu processador!  Portanto, se não tiver um bom processador eu também não recomendo essa alteração! Você vê logo que na hora de instalar programas algo fica diferente! A barrinha de progresso não se move mais como numa instalação padrão! Ela demora mais para encher, mas na hora de ler os arquivos fica mais rápido! Vocês viram essa opção número três em ação no tópico do Kernel Ominslash! Foi com o vídeo do meu PC com kernel BFQ do Hqxriven!  Ali eu estou usando um journal interno de 400MB para acelerar as taxas de leitura! Isso tudo vale para o ext4! Outros sistemas de arquivos também se lançam deste mesmo recurso, é o caso do XFS e do JFS! Os ganhos no JFS são notáveis e ele não sofre da perda nas taxas de gravação!

   A primeira parte quanto ao uso do cfdisk ou do gparted são iguais em relação à opção 1!
Defina a sua tabela de partição normalmente para o seu disco rígido. Na hora da formatação é que o comando muda! Como root execute:

   Se quiser um journal de 256MB:

#mke2fs -t ext4 -J size=256 -O dir_index,extent /dev/sda1

   Se quiser um journal de 400MB – tamanho máximo permitido para um journal interno:

#mke2fs -t ext4 -J size=400 -O dir_index,extent /dev/sda1

   Você pode estar se perguntando, mas galactus, e o data writeback na opção 3? É possível?  Sim é possível. Mas você tem que formatar primeiro e dizer ao sistema de arquivos que quer mudar a gravação do journal depois! Assim:

#tune2fs -o journal_data_writeback /dev/sda1


Depois é tudo igual à opção 1 em relação à instalação!




* Opção 4 - Deixar as opções padrões do Journal mas melhorando o acesso ao sistema de arquivos!

   Você não quer se incomodar com o tamanho e localização do Journal, mas gostaria de usar as opções que aceleram o acesso ao seu sistema de arquivos!  Então execute o comando:

#mke2fs -t ext4 -O dir_index,extent /dev/sda1

Pronto! Agora é só seguir com sua instalação como mostrado na opção 1!



- Desvantagens do Journal Externo!

Quais seriam as desvantagens ou problemas ao se utilizar de um Journal externo em outro disco rígido?

1- Se o disco rígido em que está o journal externo for acidentalmente desligado, você não poderá iniciar o seu sistema, mas nenhum dado estará perdido! Nem mesmo com um Live-CD você terá acesso aos seus dados! Você precisará do Journal externo para ler os seus dados! Basta então religar o disco rígido em questão na mesma ordem em que tudo foi configurado que tudo volta ao normal!

2- Se o disco rígido em que está o journal externo sofrer uma pane lógica ou física você também não poderá acessar os seus dados e o que você estiver fazendo no momento da pane pode estar perdido! Como então eu volto a ter acesso aos meus dados? Simples, substitua o disco com defeito (se for este o caso), formate uma nova partição journal, repita os comandos onde você diz que o disco rígido não possui Journal e em seguida "mostre" a ele onde está o novo journal externo! Reinicie o sistema normalmente, este primeiro reinicio com o novo journal será mais demorado, mas ele volta a ligar o sistema com os seus dados já gravados antes da pane intactos!

3- Em alguns casos, ao se colocar um novo disco rígido no sistema, aumentando a capacidade de dados do mesmo ou se você quiser fazer uma cópia dos dados de outro disco rígido, o seu sistema pode não iniciar!  Não estou me referindo a um disco rígido externo USB! Isto pode acontecer mais facilmente nos seguintes casos: a) Atente para o fato que você terá que manter a ordem original do disco em que está o seu sistema e o journal externo! Portanto se colocar um disco rígido a mais alterando a ordem de boot, seu sistema não inicializará! b) Se usar um kernel não oficial no seu Ubuntu como é o meu caso onde utilizo o Kernel Omnislash! Neste caso use o Kernel oficial do Ubuntu! c) Ele não inicializa mesmo com o kernel oficial do Ubuntu! Neste caso, você terá que usar um Live-CD para fazer a cópia dos dados! Ainda não tenho uma solução realmente satisfatória para este caso! Se alguém souber como resolver, por favor nos mostre como!

Nota: Independentemente do seu sistema de arquivos e das modificações que você possa fazer no seu sistema, sempre faça backup!  
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

- Segunda Parte – Alterações realizadas após instalação!


   Você já instalou o seu Ubuntu ou qualquer uma das suas variantes e agora quer melhorar ainda mais o desempenho do seu sistema! A boa notícia é que ainda podemos realizar algumas alterações para acelerar o sistema de arquivos que não envolvem formatação! São elas:

1- Adicionar o Índice de diretórios ao seu sistema de arquivos!

   Esta dica é para quem já tem o seu Ubuntu particionado de maneira tradicional e não colocou essa opção na hora de formatar! De posse de um Live-CD do Ubuntu, de o boot normalmente e dentro do terminal como root faça fdisk -l para descobrir como está a sua tabela de partição e depois execute o comando com a partição desmontada:


#tune2fs  -O dir_index /dev/sdxy

Onde o xy vai depender da ordem encontrada na sua tabela e partição! Lembre-se, o comando tune2fs deve ser executado com a partição desmontada!


2- Usar o Journal Writeback para acelerar o seu sistema de arquivos!

   Você já formatou o seu Ubuntu de maneira padrão e não quer formatar tudo novamente, contudo gostaria de usar o modo Writeback do Journal para maior velocidade! Como root faça:

#fdisk -l

   Ele vai listar a tabela de partição do seu sistema! Sabendo qual partição alterar execute como root:

#tune2fs -o journal_data_writeback /dev/sdxy

   Onde o xy vai depender da sua tabela de partição! Lembre-se, o comando tune2fs deve ser executado com a partição desmontada!


3- Realizar alterações no seu fstab para montar o sistema de arquivos com maior velocidade!


   a) Se usar o Journal externo não há necessidade de alterar nada no fstab por causa do journal.

   b) Já tendo alterado a forma de gravar do journal para writeback com o journal interno, seja na formatação inicial ou depois dela, é preciso alterar o seu fstab e o grub2 para que tudo corra bem! Dentro do seu sistema, faça Backup do seu fstab se não estiver seguro do que vai fazer. As dicas a seguir são mais indicadas para sistemas ligados a um No-Break ou Notebooks usados com sua bateria!

Como root use o seu editor de arquivos preferido, como sugestão temos:

   No Ubuntu

#gedit /etc/fstab 

   No Kubuntu

#kedit /etc/fstab

   Para qualquer variante do Ubuntu

#nano /etc/fstab

   Mas o que você pode alterar além do writeback? Temos as seguintes opções entre tantas:

   noatime - Desativa o registro de tempo de acesso do arquivo, que é basicamente uma operação de gravação que deve ser evitada em SSDs. Trocando em miúdos, lembram quando vocês clicam com o botão direito do mouse para acessar as propriedades de um arquivo, lá contém a data de gravação e a data em que o arquivo foi acessado! Com essa opção o sistema não registrará mais quando você acessou o arquivo, apenas quando você modificar o mesmo! Essa opção não envolve risco de perda de dados!
   barrier=0 - Esse assunto é complexo e já levou a muita discussão entre os desenvolvedores, mas vou procurar resumir para vocês. O "barrier" certifica-se que tudo esteja em ordem entre o cache do disco rígido e a sincronização de dados e metadados antes da gravação do journal! Com a opção "0" essa certificação deixa de existir! Barrier=1 atrasa muito o desempenho do disco!  Não é nada seguro você usar a opção "Barrier=0" no ext4 em um sistema sem No-break ou em Notebooks sem bateria! Contudo o ext3 usa o barrier=0 por padrão!
   data=writeback - O writeback oferece o melhor desempenho entre as formas de gravação do Journal, mas deixa seu sistema mais vulnerável a perda de dados ou corrupção dos mesmos!
   nobh (No buffer heads) - Quando um bloco é armazenado na memória (por exemplo, após uma leitura ou uma gravação pendente), ele é armazenado em um buffer. Cada buffer é associado com exatamente um bloco. O buffer serve como o objeto que representa um bloco de disco na memória. Lembre-se que um bloco é composto por um ou mais setores, mas não é mais do que uma página de tamanho. Portanto, uma única página pode conter um ou mais blocos na memória. Com essa opção ativa no fstab, não existe mais essa associação de páginas e buffers, seu consumo de memória RAM pode inclusive diminuir!  A opção nobh implica no uso do Writeback!
   commit=100 - O ext4 pode ser configurado para sincronizar dados e metadados a cada "n" segundos! O valor padrão é 5 segundos. Isso significa que se você sofre uma queda de energia, você ira perder apenas os últimos 5 segundos de trabalho (se o seu sistema de arquivos não for danificado, graças ao Journaling). O valor padrão ou qualquer valor abaixo dele irão afetar o desempenho para pior, mas isso será bom para a integridade dos dados. Colocar um valor igual a zero terá o mesmo efeito do valor padrão, 5 segundos. Aumentar esse valor melhorará o desempenho! Um valor igual a 60 já está bom o bastante para discos rígidos de pratos magnéticos. Valores superiores a esse, como o igual a 100 do exemplo, são mais indicados para discos SSD!
   nouser_xattr - Vamos logo ao ponto, com essa opção ativa seus dados não terão mais a permissão data de gravação/criação e acesso registrados nas informações dele! Ou seja, todas essas ações, que são de ações de gravação no disco, não serão mais realizadas. Isso aumenta o desempenho do sistema e a vida útil dos SSDs. Contudo eu não aconselho a vocês usarem essa opção! Quando vocês precisarem acessar os seus dados de um Live-CD por exemplo, ou remover o disco rígido para usar em outra máquina, será surpreendido por um monte de cadeados nos seus dados, negando uma série de atividades ao seu sistema!

Exemplo de um fstab padrão pós instalação do Ubuntu:

[...]
UUID=d818ddf9-ff01-e21a-a67d-3ceab43a9e2b / ext4 relatime,errors=remount-ro 0 1
UUID=0d339122-74e0-e0ea-805a-7879b1fa3172 /home ext4 relatime 0 2
[...]



   Vou deixar como exemplo as opções que uso no meu fstab (notem que não há espaço entre as opções, apenas vírgulas):

[...]
UUID=d818ddf9-ff01-e21a-a67d-3ceab43a9e2b / ext4 noatime,barrier=0,data=writeback,nobh,commit=60 0 1
UUID=0d339122-74e0-e0ea-805a-7879b1fa3172 /home ext4 noatime,barrier=0,data=writeback,nobh,commit=60 0 2
[...]


   As opções do arquivo anterior:errors=remount-ro podem ser removidas com segurança pois é padrão do sistema! Agora chegou o momento de alterar o GRUB2! É preciso alterar o Grub para que todos os kerneis instalados rodem com o data=writeback! Isso no caso de você usar o journal interno! Não mude se usar o journal externo! Como root dentro do seu sistema mesmo, altere o arquivo /etc/default/grub:

   - Ubuntu

#gedit /etc/default/grub


   - Kubuntu

#kedit /etc/default/grub


   - Outras variantes

#nano /etc/default/grub


   Ao final do arquivo insira a seguinte linha:


rootflags=data=writeback


   Depois rode um:


#update-grub


Nota!

   Ao realizar uma atualização do Ubuntu ou qualquer variante dele nos pacotes do grub2, o sistema vai reclamar com você que o arquivo do grub2 não é original e o que você gostaria de fazer! Mande-o instalar a nova versão sobre a versão alterada e depois da atualização volte a realizar o procedimento descrito logo acima quanto ao rootflags=data=writeback no grub2!

   Até o momento em uma queda de energia, eu perdi o que havia inserido a mais numa planilha do Calc sem ter salvado o arquivo! No mais não houve corrompimento de dados! Mas seu sistema fica mais inseguro com isso tudo no seu fstab!


4- Otimizar e compactar os diretórios!

   Se você é um instalador compulsivo de programas ou tem muitos arquivos espalhados em vários diretórios, você pode melhorar um pouco mais as coisas no que se refere ao desempenho otimizando os diretórios!  Faça isso com o seguinte comando:

#fsck -t ext4 -f -D /dev/sdxy


   O comando acima deve ser realizado como root na partição alvo DESMONTADA! Use um Live-CD ou o modo de recuperação do seu sistema para isso!  O que ele faz é otimizar os diretórios, reindexando e comprimindo os mesmos se possível!  É ótimo de ser usado depois de você ter finalizado toda a instalação do seu sistema, digo de tudo mesmo, codecs e programas afins que você usa!  Também é bom de ser feito se você continuar a inchar o seu sistema com dados em muitos diretórios! Porque alterei o comando em relação à versão anterior do tutorial? Simples, descobri que o comando e2fsck -D só realizava a otimização dos diretórios em sistemas não limpos! Com o fsck -f -D ele obriga a otimização mesmo em um sistema limpo!


5- Tornar o seu disco rígido mais rápido às requisições do seu sistema!

   Antes você precisa saber sobre as características técnicas do seu disco rígido.  É que vamos habilitar dois parâmetros dele que vêm desabilitados por padrão. A gravação em cache do mesmo e fazê-lo funcionar a toda velocidade desde o início da requisição! Para isso execute o comando como root:


#hdparm -I /dev/sdX

   
   Onde o X vai depender do disco rígido que você quer tunar!  O comando acima faz um relatório detalhado sobre o seu disco rígido, listando todas as características técnicas do mesmo!  Procure por duas informações importantes: Write Cache Enable e o Acoustic Management!

O seu sistema pode estar montado sem problemas.  Então faça como root:


#hdparm -W1 -M254  /dev/sdX

   O "W" deve ser maiúsculo mesmo! NÃO erre no "W"! O "w" minúsculo vai detonar o seu sistema! Então, o -W1 ativa a gravação no cache do seu disco e o -M254 fazem com que o disco trabalhe mais barulhento (alta rotação inicial), o padrão é 128, o mais silencioso (baixa rotação inicial)!
   
   Se o seu disco rígido não suportar esses comandos ele vai dar erro na saída do comando! Se tudo correr bem ele vai avisar que tudo foi ligado (On)!  Não se preocupe que não há risco de danos ao disco rígido ou ao seu sistema! Com essas duas mudanças você pode ganhar em média de 2 a 4MB/s a mais nas taxas de leitura do seu disco rígido! É só fazer por três vezes e sem nada sendo usado no sistema o comando e comprovar o que eu digo:

#hdparm -Tt /dev/sdX



   Se tudo correu bem, agora você vai querer colocar esses comandos de forma permanente! Sim, pois só em executar esse comando no terminal não o torna permanente, ele volta ao estado padrão a cada reinicialização do sistema!  Então o que fazer? Ta na mão, coloque o comando no arquivo /etc/rc.local antes do exit = 0 (se tiver isso no seu arquivo)!

#gedit /etc/rc.local

hdparm -W1 -M254 /dev/sdX

   Você pode colocar quantos discos rígidos você tiver no seu sistema que suportem esses comandos, cada disco rígido deve ter a sua linha de comando!  O comando é dado para o disco rígido e não sua partição!


   Não reinventei a roda para escrever este tutorial. Isso tudo é fruto de leitura e pesquisa! Referências para este tuto:

http://www.vivaolinux.com.br/dica/Tunando-o-sistema-de-arquivos-entendendo-o-journal-do-EXT3
http://www.ibm.com/developerworks/linux/library/l-anatomy-ext4/index.html
http://lwn.net/Articles/203915/
http://lwn.net/Articles/283161/
http://blog.loxal.net/2009/04/tuning-ext4-for-performance-with.html
http://ubuntuforums.org/showthread.php?t=1396128
http://linux-kernel-prog.net/Novell.Press-Linux.Kernel.Development.Second.Edition/0672327201/ch13lev1sec2.html
http://manpages.ubuntu.com/manpages/jaunty/man8/e2fsck.static.8.html
http://www.vivaolinux.com.br/artigo/hdparm-Tire-o-maximo-do-seu-HD
http://www.vivaolinux.com.br/dica/hdparm-Aumente-a-velocidade-do-HD

Espero ter ajudado!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

Reservado!


Se preferir você pode ter esse tutorial em PDF: http://www.megaupload.com/?d=Q3SG0SR8
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

niquelnausea

Ja achava o outro tutorial bem completo, dessa vez você se superou, muito bom cara.

Meu pc ja é meio "velho" (soquete AM2) esse tipo de dica ajuda e muito na velocidade, vou testar e volto pra dizer se funcionou (ou se terei que formatar  ;D)

platao

Olha.....o pessoal aqui anda se superando!!!! Os tutoriais matadores do Ucastrobr e do Pidgin esse agora e com direito a pdf de brinde!!!! so nao aprende quem nao quer!!!! parabens galactus esta sendo utilissimo e obrigado pelo pdf tbm.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

ucastrobr

O galactus sempre foi obcecado por desempenho, vou testar algumas dicas acima.
Para quem não sabe quem é o Galactus aqui vai uma sinopse.

Galactus, algumas vezes chamado de Devorador de Mundos, é um personagem de histórias em quadrinhos, uma entidade cósmica dentro do universo Marvel da Marvel Comics. Criado por Jack Kirby e Stan Lee, ele estreou em Fantastic Four nº48, o inicio de um arco de história algumas vezes considerado como a melhor colaboração Lee/Kirby.

Quando Galactus ameaçou destruir a Terra, o Quarteto Fantástico (auxiliado pelo Vigia Uatu e pelo arauto rebelde de Galactus, o Surfista Prateado) o derrotou ameaçando-o com o Nulificador Total. Galactus jurou nunca mais tentar atacar a Terra.

Apresentado inicialmente como vilão, mais tarde teve sua função no Universo esclarecida em um julgamento onde várias raças tentavam decidir o destino de Galactus por suas ações pregressas. Através de um depoimento de Odin foi a público que sua função é a de encontrar um planeta seguro, que fosse capaz de sobreviver a próxima entropia do universo, uma vez que o próprio Galactus seria o único sobrevivente de uma entropia anterior.

Apesar de ser conhecido como Devorador de Mundos, Galactus não conseguiu se alimentar do planeta mãe dos Espectros. A corrupção da raça dos Espectros era tamanha que foi capaz de contaminar o planeta em que viviam, tornando-o inadequado.

Hoje ele vive no mundo Ubuntu tentando sobreviver a próxima entropia do universo.
Spock – "After a time, you may find that having is not so pleasing a thing, after all, as wanting. It is not logical, but it is often true."
("Depois um de tempo você vai perceber que ter algo pode não ser tão prazeroso quanto deseja-lo. Isto não é lógico, mas frequentemente é verdade.")

dtomadon

Citação de: ucastrobr online 29 de Agosto de 2010, 10:58
O galactus sempre foi obcecado por desempenho, vou testar algumas dicas acima.
Para quem não sabe quem é o Galactus aqui vai uma sinopse.

Galactus, algumas vezes chamado de Devorador de Mundos, é um personagem de histórias em quadrinhos, uma entidade cósmica dentro do universo Marvel da Marvel Comics. Criado por Jack Kirby e Stan Lee, ele estreou em Fantastic Four nº48, o inicio de um arco de história algumas vezes considerado como a melhor colaboração Lee/Kirby.

Quando Galactus ameaçou destruir a Terra, o Quarteto Fantástico (auxiliado pelo Vigia Uatu e pelo arauto rebelde de Galactus, o Surfista Prateado) o derrotou ameaçando-o com o Nulificador Total. Galactus jurou nunca mais tentar atacar a Terra.

Apresentado inicialmente como vilão, mais tarde teve sua função no Universo esclarecida em um julgamento onde várias raças tentavam decidir o destino de Galactus por suas ações pregressas. Através de um depoimento de Odin foi a público que sua função é a de encontrar um planeta seguro, que fosse capaz de sobreviver a próxima entropia do universo, uma vez que o próprio Galactus seria o único sobrevivente de uma entropia anterior.

Apesar de ser conhecido como Devorador de Mundos, Galactus não conseguiu se alimentar do planeta mãe dos Espectros. A corrupção da raça dos Espectros era tamanha que foi capaz de contaminar o planeta em que viviam, tornando-o inadequado.

Hoje ele vive no mundo Ubuntu tentando sobreviver a próxima entropia do universo.


CAraca meu , que review de quadrinhos marvel, só faltou meus preferidos o Demolidor e Elektra !!!! Parabéns Galactus ficou show!!!
BacKTrack5 64 bits com Vídeo SIS

kernel omnislash 1.4.4 64 bits , Que venha o 5º Semestre !!!

niquelnausea

.... só da maluco  ;D

acho que o menos pior de ruim da cabeça dorme com camisa de força  :o

Gunss


galactus

Que bom que gostaram!  Me deu o maior serviço mesmo!  :P

Rapaz isso aqui daqui a pouco vai virar fórum da Marvel hein!  

Se formos pegar só os resumos dos personagens desse fórum...  

Só do Wolverine ucastrobr nem se fala. Só do fator de cura e do Adamantium tem várias novelas!

Olha a fuga ao tema em pessoal!

Voltando ao assunto!

Eu e meu amigo Agner estamos usando a opção 1 já faz uns 30 dias! Resistindo bem as quedas de energia e a Resets aleatórios que fizemos de propósito pra ver se a coisa não se destruia, isso com o modo Writeback! Testamos o modo Journal e também fica muito rápido! Nem se compara ao Journal dentro do próprio disco rígido. Parece que o Ubuntu sofreu um upgrade de hardware!

Meu HD do sistema principal, o único que coloquei o journal externo, no uso padrão do journal interno, dava 99MB/s na saída do hdparm! 

Só de ter colocado o journal externo, sem mexer em mais nada, do fstab e etc., ele passou para os 122MB/s! Isso não é pouca coisa mesmo!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

Gunss

uma dica que li, é para mover os diretorios /tmp e /var/tmp para a memória RAM! tenho medo de testar pois só tenho 1GB de ram  :-\

galactus

Citação de: Gunss online 30 de Agosto de 2010, 14:10
uma dica que li, é para mover os diretorios /tmp e /var/tmp para a memória RAM! tenho medo de testar pois só tenho 1GB de ram  :-\

Tem dica de usar o Journal na RAM!  De compartilhar o Journal de vários discos rígidos em um só (essa não tem suporte no Linux)!

Eu acho que não usaria essa dica do tmp na RAM! Não em um desktop! Sem memórias ECC e sem No-break!  Nem pensar! Aí dá um pau na sua RAM, e as informações nela vão passar desta para melhor!  Não sei a te que ponto as coisas contidas no tmp são importantes! No Mandriva eu sei que ele usa muito!  No Ubuntu eu ainda não prestei atenção!  Mas eu tiro só pelas gravações de CDs e DVDs!  Eles usam o tmp para gravar os discos!  Aí bate com o que você disse da sua quantidade de RAM! 
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

irtigor

Citação de: galactus online 30 de Agosto de 2010, 19:48
Eu acho que não usaria essa dica do tmp na RAM! Não em um desktop! Sem memórias ECC e sem No-break!  Nem pensar!
Eu uso em um desktop sem nobreak e não tive problemas (a energia já caiu algumas vezes e está tudo ok), mas é realmente bom ficar atento aos aplicativos usados, alguns gerenciadores de pacotes (não é o caso do apt) usam o /tmp, videos flash também são carregados lá entre outras coisas.

Gunss

Citação de: galactus online 30 de Agosto de 2010, 19:48
Citação de: Gunss online 30 de Agosto de 2010, 14:10
uma dica que li, é para mover os diretorios /tmp e /var/tmp para a memória RAM! tenho medo de testar pois só tenho 1GB de ram  :-\

Tem dica de usar o Journal na RAM!  De compartilhar o Journal de vários discos rígidos em um só (essa não tem suporte no Linux)!

Eu acho que não usaria essa dica do tmp na RAM! Não em um desktop! Sem memórias ECC e sem No-break!  Nem pensar! Aí dá um pau na sua RAM, e as informações nela vão passar desta para melhor!  Não sei a te que ponto as coisas contidas no tmp são importantes! No Mandriva eu sei que ele usa muito!  No Ubuntu eu ainda não prestei atenção!  Mas eu tiro só pelas gravações de CDs e DVDs!  Eles usam o tmp para gravar os discos!  Aí bate com o que você disse da sua quantidade de RAM! 

dei uma conferida aqui, após 48hrs de utilização o diretório /tmp tinha 500KB e o /var/tmp estava vazio