Tunando o JFS para o Desempenho!
Olá amigos da rede Ubuntu! Aqui estou eu com mais um tutorial sobre sistema de arquivos! Se você não gosta de usar o modo texto, por favor pare por aqui! Este não é um tutorial para iniciantes, mas com um pouco de atenção e paciência você poderá realizar todos os passos descritos a seguir! Este tutorial não será tão grande como o do ext4, não temos tantas opções, mesmo assim resolvi dividir o tutorial em 3 partes! Por favor leia todo o tutorial antes de realizar quaisquer mudanças!
1 – Introdução! O JFS é um sistema de arquivos criado pela IBM em 1990 para o sistema operacional AIX! Seu código fonte foi liberado para o Linux em 1999, mas apenas em 2001 ele apareceu de maneira estável na árvore do Kernel Linux! O JFS foi criado para servidores corporativos, onde ele deveria usar poucos recursos do processador e ser capaz de ser redimensionado mesmo em uso! Em 1990 cada pulso de Clock importava pois os processadores eram caríssimos, portanto, ter um sistema de arquivos que tomasse poucos recursos do processador era fundamental! Para vocês terem uma idéia, a Ferrari dos micros em 1990 era um 486 com fantásticos 50MHz!!! Sem falar nos 286 e 386 com incríveis 16 a 33 MHz!
Em 2008 foi noticiado que a IBM não mais desenvolveria o JFS e por isso ele não deveria ser mais usado em ambientes de produção! E assim foi que as distros Linux atuais não dão mais suporte oficial ao JFS! Entretanto ainda existe um grupo de desenvolvedores de dentro da IBM, que se chamam
JFS Core Team, que ainda procuram mudanças no kernel e resolver possíveis Bugs de Software! Tanto é assim que a última versão do
jfsutils (o utilitário de gerenciamento do JFS no Linux) foi lançada em Abril de 2009!
De qualquer maneira, com ou sem suporte oficial, o JFS continua sendo um sistema de arquivos seguro que responde bem a vários tipos diferentes de carga de trabalho! Seus principais atrativos para mim são:
1) O baixo consumo do processador! Com os sistema operacionais modernos cada vez mais gulosos por recursos, hoje se você possui um processador de apenas um núcleo, você tem um processador ultrapassado! Infelizmente nem todos podem ter uma máquina com múltiplos núcleos, por isso hoje, o JFS cai como uma luva para aqueles usuários que ainda não abandonaram aquela velha máquina que presta bons serviços! Eu já usei o JFS em K6II 500, e hoje faço uso dele no meu Atom 330, que se você não sabe, tem desempenho pior que um Celeron 430!
2) Sua segurança! O JFS resiste bravamente a quedas de energia e reinicializações aleatórias, e ontem ele me provou novamente sua grande robustez ao conseguirmos salvar os dados de uma partição cheia de Badblocks de um velho HD de um amigo meu formatado em JFS!
E quanto as suas desvantagens? Bem, nunca espere
taxas de transferências altas com o JFS, por isso o tempo de Boot do seu sistema geralmente é maior com ele, em contra partida o desligamento do seu sistema é super rápido! Ele foi feito para lidar
melhor com arquivos grandes, ele
demora muito para apagar muitos arquivos pequenos! O JFS começa a mostrar a sua idade no que diz respeito a capacidade de armazenamento! Uma única partição pode ter o tamanho
máximo de 2TB, assim como um arquivo! Como ele usa poucos recursos do processador, em máquinas modernas ele pode acabar atrapalhando, pois onde essa sobra de força poderia ser usada para acelerar as coisas, ele não faz uso dela! Mas se você quiser poupar bateria do seu Notebook e quer dar vida nova ao seu velho processador, ele pode ser uma saída!
Como quase todo sistema de arquivos, o JFS vem preparado para dar maior segurança aos seus dados em detrimento do desempenho! O que mostrarei a seguir é como deixar ele mais rápido, mas sem perder segurança! Só existe um meio de conseguir ser realmente rápido com o JFS, é desligando o seu journal! Mas se nem a IBM indica usar o JFS sem Journal, muito menos eu é que o faria! Já se esqueceram do Journal? Aquele do tutorial do ext4? Vamos relembrar então!
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. Então ficou claro que o JFS também possui o famoso journal que a dupla ext3/ext4 também possuem! Mas diferentemente da dupla ext3/ext4, não podemos alterar a forma em que os dados são gravados no Journal! Ou você usa o journal no JFS, ou não usa! Entretanto, temos uma característica peculiar do JFS em relação ao journal, talvez ainda melhor que na dupla ext3/ext4! É que podemos
refazer o arquivo de Log do Journal depois de tudo instalado e pronto para uso! E assim como o Journal da dupla ext3/ext4, podemos aumentar o seu tamanho para ganhar desempenho!
Agora você poderia querer me perguntar, mas galactus, o JFS pode ter o Journal externo do ext4? E eu responderia, sim, pode! Mas como eu nunca usei ele assim, e nem achei qualquer tutorial onde o camarada disse que fez/faz uso de journal externo no JFS, eu não vou colocar aqui os comandos para isso! Nada impede de você ser um pouco mais curioso e tentar! Não é mesmo? Então vamos colocar a mão na massa e deixar de papo!
2 - Ações realizadas antes da instalação! Não temos outra opção ou alternativa melhor a não ser começar a alterar a instalação padrão do JFS desde o início do particionamento! De posse de um Live-CD do Ubuntu ou Desktop-CD, precisaremos instalar o pacote
jfsutils ( o utilitário de gerenciamento do JFS no Linux). Isso acontece pois como o seu suporte foi retirado e poucos usuários fazem uso dele, a equipe de desenvolvimento resolveu remover esse pacote dos Desktop-CDs, mas ele ainda se faz presente na versão Alternate-install (de instalação em modo texto do Ubuntu). Sem ele, não poderemos formatar a partição com JFS! Então abra o Synaptic, procure pelo pacote
jfsutils e instale-o como na figura abaixo:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg121.imageshack.us%2Fimg121%2F6933%2Fjfsutils.th.jpg&hash=d9a834d593060ef8be78fde96e73601af8f77641)
Com o pacote
jfsutils instalado, 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 a nova opção que fará toda a diferença durante a formatação! Aqui vamos 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!
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:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg264.imageshack.us%2Fimg264%2F5837%2Fparticionamento2.th.jpg&hash=7d1ca7472842a7e39cb4bfeb8482a6960429c15e)
Veja outro exemplo com a partição swap criada:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg35.imageshack.us%2Fimg35%2F2227%2Fparticionamento4a.th.jpg&hash=c089a366efcd7974e6b87dcabecd48cdc7e9cbb4)
Agora abra o terminal e como root use o comando
fdisk -l para descobrir com certeza qual ou quais as partições que você deverá formatar! No exemplo que colocarei na foto abaixo é a partição
/dev/sda2 ! Altere o número ou a letra conforme o resultado da saída do comando fdisk -l de seu disco rígido! Em seguida use o seguinte comando para criar a partição JFS com o Journal interno aumentado:
#mkfs.jfs -s 200 /dev/sda2
Veja a foto de exemplo:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg101.imageshack.us%2Fimg101%2F354%2Fparticionamento5a.th.jpg&hash=3031587619f9f95ec9e5afd6ba4bbe2a7b60c5b2)
O comando acima cria uma partição JFS com journal interno de
200MB! Se você não especificar que o journal deve ter o tamanho de 200MB, ele usará a opção padrão que é a de criar um journal interno com
0,4% do tamanho total da partição criada! Duzentos Mega Bytes já está ótimo, não consegui usar mais de 240MB, deu erro, não consegui gravar nada numa partição JFS com journal maior que 240MB! Nos testes que li da IBM eles usam 200MB!
Depois de formatada a partição continue com o processo de instalação normal do Desktop-CD do Ubuntu, apenas preste atenção na hora de usar o particionador do instalador do Ubuntu! Escolha a opção particionamento avançado como na figura abaixo:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg207.imageshack.us%2Fimg207%2F4059%2Fparticionamento6a.th.jpg&hash=d14ed2baa6cac607ad7bf0b8061a6c6967af33da)
Depois indique o tipo de sistema de arquivos e o ponto de montagem da partição em questão e
não a marque para formatação! Veja a figura abaixo como exemplo:
Logo em seguida o particionador deve reclamar com você que a partição não foi marcada para formatação! Mande ele continuar o processo de instalação como no exemplo abaixo:
![](https://ubuntuforum-br.org/proxy.php?request=http%3A%2F%2Fimg836.imageshack.us%2Fimg836%2F2390%2Fparticionamento8a.th.png&hash=f04c7f36fb5d41117f1ac24d2647a369962631f9)
Termine todo o processo de instalação normalmente. A segunda parte deste tutorial foi concluída!
3- Alterações realizadas após instalação!a) Refaça o Log do Journal – Após ter terminado toda a instalação do seu sistema (pronto para uso, você já instalou todos os programas que usa, os codecs e de preferência já colocou seus dados nele), agora é o momento de refazer o Log do Journal para acelerar ainda mais as coisas! Entre com um Live-CD do Ubuntu (lembre-se de instalar o pacote jfsutils) ou do Parted Magic (este você não precisa se preocupar em instalar o jfsutils) e execute o seguinte comando como root
na partição desmontada:
#jfs_fsck -f -v /dev/sdxy
Onde o xy deve ser trocado de acordo com o seu disco rígido em questão! Na dúvida, use o
fdisk -l para descobrir! O comando acima obriga a checagem do sistema de arquivos JFS em seu disco rígido e refaz o Log do Journal mesmo em um sistema marcado como limpo, além disso ele vai mostrar para você todas as etapas durante o processo, qualquer erro encontrado será automaticamente corrigido! Você pode executar esse comando de tempos em tempos se você for um instalador de programas compulsivos ou se encher muito rapidamente o seu disco rígido! Com isso você notará um rápido acesso as pastas, fotos e documentos!
Veja o exemplo abaixo:
b) Recompile o kernel do Ubuntu com o JFS dentro dele para máximo desempenho – Isso mesmo, para o máximo desempenho você deve recompilar o kernel do Ubuntu! O motivo é simples, por padrão o kernel do Ubuntu marca os sistema de arquivos no kernel como módulo! Se ele for colocado dentro do kernel o seu desempenho é maior! A título de curiosidade, com isso o tempo de boot pode cair em até 1,5 segundos! Existem muitos tutoriais espalhados de como recompilar o kernel do Ubuntu. Eu recomendo que você tente usar o Kernel do Hqxriven - o kernel Omnislash - que tem um Mega tópico aqui no fórum!
c) Altere o fstab para melhorar o acesso ao disco – Use a opção
notime (Desativa o registro de tempo de acesso do arquivo, que é basicamente uma operação de gravação. 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!) e a opção
nodiratime se quiser (Desativa o registro de tempo de acesso do diretório. Trocando em miúdos, quando vocês clicam com o botão direito do mouse para acessar as propriedades da pasta, lá contém a data de gravação e a data em que a pasta foi acessada! Com essa opção o sistema não registrará mais quando você acessou a pasta, apenas quando você modificar a mesma! Essa opção não envolve risco de perda de dados!). Eu uso apenas a noatime! 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
Exemplo de um fstab padrão pós instalação do Ubuntu:
[...]
# / was on /dev/sda2 during installation
UUID=00145ac1-ee86-4dab-af5b-fb4854d7ce51 / jfs errors=remount-ro 0 1
# /media/Musica was on /dev/sda5 during installation
UUID=49fe3faf-fc26-4320-a151-15f6cb21253a /media/Musica jfs defaults 0 2
# swap was on /dev/sda1 during installation
UUID=02ce43a2-0e8e-414d-a348-4ee273600222 none swap sw 0 0
[...] Vou deixar como exemplo o que uso no meu fstab (notem que não há espaço entre as opções, apenas vírgulas):
[...]
# / was on /dev/sda2 during installation
UUID=00145ac1-ee86-4dab-af5b-fb4854d7ce51 / jfs noatime 0 1
# /media/Musica was on /dev/sda5 during installation
UUID=49fe3faf-fc26-4320-a151-15f6cb21253a /media/Musica jfs noatime,nodiratime 0 2
# swap was on /dev/sda1 during installation
UUID=02ce43a2-0e8e-414d-a348-4ee273600222 none swap sw 0 0
[...] As opções do arquivo anterior:errors=remount-ro podem ser removidas com segurança pois é padrão do sistema!
d) 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!
Aqui vai um exemplo do que um Atom 330 pode fazer com JFS e seu kernel recompilado (claro que não estou usando o kernel do Ubuntu mas sim o kernel Omnislash do Hqxriven):
http://www.easy-share.com/1912640219/Buble_Bee.aviFontes para este tutorial:
http://en.wikipedia.org/wiki/JFS_(file_system)
http://pt.wikipedia.org/wiki/JFShttp://www.ibm.com/developerworks/linux/linux390/perf/tuning_res_journaling.htmlhttp://manpages.ubuntu.com/manpages/hardy/man8/mkfs.jfs.8.htmlhttp://manpages.ubuntu.com/manpages/hardy/man8/jfs_fsck.8.htmlhttp://jfs.sourceforge.net/