it-swarm-pt.tech

Como otimizar o sistema operacional para SSDs?

Quais etapas devem ser tomadas antes/durante/após a instalação do Ubuntu em um Solid State Drive para otimizar o desempenho e garantir a máxima durabilidade da unidade?

145
Lars Haugseth

Eu usei com sucesso várias técnicas diferentes para melhorar a maneira como o Ubuntu usa o dispositivo de armazenamento, seja ele de estado sólido ou tradicional.

Para SSDs, você procura minimizar o número de vezes que a unidade é gravada, pois as leituras não devem adicionar desgaste à unidade.

1) Gerenciar o arquivo de troca

Se você não hibernar seu computador e tiver uma ampla memória RAM para executar todos os seus aplicativos, então, em tese, não será necessária uma partição swap.

Se você tiver uma combinação de SSDs e discos rígidos, coloque sua partição de swap somente nos discos rígidos.

2) Nenhuma Gravação para Leitura de Data e Hora (adequada para SSDs e discos rígidos)

Montando suas partições com as opções noatime e nodiratime irá parar as gravações de timestamp quando você lê arquivos e pastas. Essas gravações de registro de data e hora geralmente não são necessárias, a menos que você use um cliente de servidor de correio local, como o mutt. A razão pela qual isso geralmente é uma má ideia, é porque toda leitura produzirá uma gravação ao atualizar os timestamps. Isso diminui a vida do SSD.

Edite seu arquivo de configuração /etc/fstab (cuidadosamente - faça um backup para ter certeza de que quebrar sua configuração do fstab pode impedir que o sistema funcione):

cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Edite as opções de montagem para suas partições adicionando o texto noatime e nodiratime às linhas que definem sua raiz (/) e outras partições se você as tiver (/ home) - Nota: se você tiver um/home partição, comece com isso apenas mudar essa partição se você está preocupado em quebrar alguma coisa

# / was on /dev/sda2 during installation
UUID=587e0dc5-2db1-4cd9-9792-a5459a7bcfd2 /               ext4    noatime,nodiratime,errors=remount-ro 0       1

# /home was on /dev/sda3 during installation
UUID=2c919dc4-24de-474f-8da0-14c7e1240ab8 /home           ext4    noatime,nodiratime,defaults        0       2

Você precisará reinicializar sua máquina antes que essas alterações entrem em vigor

3) Minimizando gravações do sistema operacional e aplicativos

Supondo que você não esteja executando um servidor de produto de missão crítica, a maioria das pessoas não examinará os logs se algo der errado (especialmente porque erros sérios são raros para a maioria dos usuários do Ubuntu). Portanto, você pode configurar o Ubuntu para que todos os logs sejam gravados em RAM memória em vez do SSD.

Nota: faça as seguintes alterações apenas quando tiver instalado todos os softwares que usar (especialmente coisas como o servidor web Apache), caso contrário você poderá ter alguns problemas com diretórios ausentes em/var/log

Para obter informações sobre essa abordagem, consulte prolongando a duração do seu pendrive em ubuntu-eee.com

Abra /etc/fstab com um editor (supondo que você fez o backup do arquivo/etc/fstab)

gksudo gedit /etc/fstab

Adicione as seguintes linhas no final do arquivo fstab e salve:

# Uncomment these after all server based applications installed - eg. Apache
#tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
#tmpfs /var/log/apt tmpfs defaults,noatime 0 0
# none /var/cache unionfs dirs=/tmp:/var/cache=ro 0 0

Você precisará reinicializar sua máquina antes que essas alterações entrem em vigor

Veja também:

107
jr0cket

Vida SSD

Geralmente eu não me incomodo - as preocupações com a vida SSD são exageradas. Você pode ler isto artigo detalhado sobre porque você realmente não deveria se preocupar . Em suma, o circuito dentro dos modernos SSDs gerencia o nivelamento de desgaste para você, e eles sabem como fazê-lo muito melhor do que você.

No artigo é um cálculo da vida de um SSD que está recebendo gravações em uma taxa contínua de 80M/s. A vida é 51 anos . Isso é baseado na tecnologia de 2007 - a vida do SSD será maior agora. E você quase certamente não escreve no seu SSD a 80M/s 24 horas por dia.

Desempenho SSD

No entanto, a degradação do desempenho ao longo do tempo pode ser um problema e TRIM é a solução. Existem duas opções

  • automático/online TRIM, também conhecido como descarte
  • manual TRIM

Você tem que ativar o TRIM automático . (Basicamente, você adiciona a opção discard às suas opções de montagem, desde que você esteja usando ext4.) Eu encontrei uma postagem no blog informando a opção de descarte diminui o seu sistema ao excluir arquivos .

Você pode ocasionalmente fazê-lo manualmente (ou em um cron job) usando fstrim . Se você tiver apenas uma partição, tudo o que você precisa fazer é:

Sudo fstrim /

Note que o fstrim só está disponível em 11.10 e mais recente. Para sistemas mais antigos, você precisará do script wiper.sh. Eu encontrei o script em /usr/share/doc/hdparm/contrib/wiper.sh.gz no meu sistema.

Se você está se perguntando, o problema que o TRIM resolve, como descrito pela Wikipedia , é:

Os SSDs armazenam dados em células de memória flash agrupadas em páginas, com as páginas (geralmente 4 kB cada) agrupadas em blocos (normalmente 128 páginas por bloco, totalizando 512 kB). As células de memória flash NAND só podem ser gravadas diretamente quando estão vazias. Se eles forem considerados como contendo dados, o conteúdo primeiro precisa ser apagado antes que uma operação de gravação possa ser executada de forma confiável. Em SSDs, uma operação de gravação pode ser feita no nível de página, mas devido a limitações de hardware, os comandos de exclusão sempre afetam blocos inteiros. Como resultado, a gravação de dados em mídia SSD é muito rápida, contanto que as páginas vazias possam ser usadas, mas diminuem consideravelmente, uma vez que as páginas anteriormente gravadas precisam ser sobrescritas . Uma vez que é necessário apagar as células da página antes que ela possa ser gravada novamente, mas somente blocos inteiros podem ser apagados, uma sobregravação iniciará um ciclo read-erase-modify-write: O conteúdo de todo o bloco tem que ser armazenado em cache antes de ser efetivamente apagado no meio flash, então a página sobrescrita é modificada no cache para que o bloco em cache esteja atualizado, e só então é o bloco inteiro (com página atualizada ) escrito no meio flash . Este fenômeno é conhecido como amplificação de escrita.

92
Hamish Downer

Existem vários pontos:

Alinhamento:

O que é frequentemente apontado é o direito alinhamento da partição. Isso deve ser igual ao tamanho do bloco do SSD. Jogue com segurança e torne suas partições alinhadas aos limites do MiB. Note que você não pode fazer isso com a ferramenta de partição do instalador do Ubuntu (que usa MB não MiB), mas você pode inicializar o live CD, usar o Gparted (que usa o MiB) e clicar em Instalar para usar as partições configuradas.

O agendador certo:

Um ponto importante é o scheduler que deve ser noop. Você pode definir este agendador via kernelparameter elevator=noop ou através de uma entrada echo noop > /sys/block/sda/queue/scheduler em seu rc.local.

Mountflags:

Eu recomendaria noatime e discard

Tmpfs

Colocar tmp em um disco virtual pode aumentar o tempo de vida do ssd. Para usar isso coloque a seguinte linha no seu fstab: none /tmp tmpfs defaults 0 0

Geralmente, se você quiser mergulhar mais fundo neste tópico, eu recomendaria this excelente wiki-article.

20
Sebastian Rühl

Curso de ajuste rápido para o seu SSD no Ubuntu:

sistema de arquivos

Arch wiki menciona poucas opções preferíveis para o sistema de arquivos SSD - um deles é instável, outros são ext * uns. Eu assumo ext4 é uma das melhores escolhas.
Nota: No caso de ext4 você pode querer usar a opção de montagem discard.

fstab

# <file system> <mount point> <type> <options>                                  <dump>  <pass>
proc            /proc         proc   nodev,noexec,nosuid                        0       0
tmpfs           /tmp          tmpfs  nodev,nosuid,noatime,mode=1777             0       0
/dev/sda1       /             ext4   defaults,noatime,discard,errors=remount-ro 0       1
/dev/sda2       /home         ext4   defaults,noatime,discard,user_xattr        0       2
/dev/sda3       /windows      ntfs   defaults,noatime,discard,umask=007,gid=46  0       0

Algumas coisas importantes aqui são:

  • Para sistemas com> = 2 GB de memória, localizar/tmp na RAM é desejável.
  • Nenhuma partição swap. Hoje em dia é necessário apenas para a hibernação, já que as máquinas modernas têm uma grande quantidade de RAM.
  • Opções noatime e discard. Info é aqui .

agendador

Considere mudar do escalonador padrão, que na maioria das distribuições Linux é cfq (filas completamente justas), para o escalonador noop ou prazo final para um SSD. O uso do noop scheduler, por exemplo, simplesmente processa solicitações na ordem em que são recebidas, sem dar qualquer consideração sobre onde os dados residem fisicamente no disco. Esta opção é considerada vantajosa para SSDs, uma vez que os tempos de busca são idênticos para todos os setores no SSD.

Adicione seguinte para /etc/rc.local :

# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler

info

mdois

16
Andrejs Cainikovs

4) ativar o TRIM automático

Se o seu SSD suportar, você também deve ativar o TRIM automático (como descrito aqui )

8
Uli

O TRIM permite que um sistema operacional informe a um SSD quais blocos de dados não são mais considerados em uso e podem ser apagados internamente. O corte permite que o SSD manipule a sobrecarga de coleta de lixo, o que, de outra forma, reduziria significativamente as futuras operações de gravação para os blocos envolvidos, 1

No Ubuntu 14.04, foi adicionado um novo recurso ao pacote util-linux que corta os SSDs automaticamente, mas apenas os SSDs Intel e Samsung têm TRIM habilitado por padrão , porque alguns SSDs baratos podem até se compactar ao executar o TRIM.2 O conteúdo de /etc/cron.weekly/fstrim no Ubuntu 14.04:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

1https://en.wikipedia.org/wiki/Trim_%28computing%29
2Como está o Trim ativado?

3
karel

Eu não adicionaria essa linha ao seu fstab, a pasta var/tmp serve para sobreviver às reinicializações e isso pode causar problemas para você.

tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

Quando eu configuro o novo sistema eu deixo toda a pasta tmp comentada desta forma, se acontecer alguma coisa eu posso verificar os logs e outras coisas. Então, uma vez que eu tenha a configuração principal do sistema, eu vou descomentar-los, mas eu nunca adiciono a linha acima, aqui está o que eu uso:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

E se estou tendo algum problema com o meu sistema, comento-os para poder verificar tudo, mesmo após uma reinicialização ou reinicialização forçada após um bloqueio.

Além disso, você não precisa de um nodiratime, a opção noatime cuida dos dois por si só.

Quanto ao TRIM, se o seu hw/sw suportá-lo, é uma obrigação, não uso descarte no fstab. Eu crio um cron diário, porque meu PC está sempre ligado, fazendo isso:

gksu gedit /etc/cron.daily/trim

Então adicione isto ao arquivo e salve (Se você não tem uma partição/home separada no ssd, ou tem outras partes que estão no ssd você deve ter a idéia de como modificar isso:

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

Em seguida, torne o arquivo executável por:

Sudo chmod +x /etc/cron.daily/trim

Eu também edito meu rc.local assim:

gksu gedit /etc/rc.local

Adicione isto acima de "exit 0" e abaixo do último #:

# Modification for SSD
# you may want to add more folders to be checked/created to this list
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

Você pode copiar e colar a partir daqui para que não haja erros, para o leigo parece fora do whack, não é.

Eu também li que deixando 10% de sua unidade ssd não formatada pode ajudar a prolongar a vida, que continua a ser visto. Eu não li muito sobre isso, então não posso garantir se faz sentido fazê-lo.

Este é o melhor guia em todo o mundo, ele não percorreu o Google por um dia e, em seguida, apresentou um guia, você deve verificar isso AQUI

3
JohnRB

Há algumas boas informações Como ajustar e otimizar o SSD para o Ubuntu, Linux Mint de http://namhuy.net/1563/how-to-Tweak-and-optimize-ssd-for-ubuntu-linux-mint .html você pode estar interessado em

Use o pré-carregamento

Para instalar o pré-carregamento no Ubuntu, Linux Mint ou distribuições baseadas no Debian

# apt-get update && apt-get install preload

Desligue o seu swap

Para alterar a configuração de swappiness:

$ su -
# nano /etc/sysctl.conf

E adicione essa linha no arquivo sysctl.conf.

vm.swappiness = 10
2
Sue Russell

É claro que /var/tmp não deve estar no tmpfs, pois, por definição, seu conteúdo precisa ser preservado além das reinicializações:

2
user95602

Ok "longa história curta":

  1. Sim. É como um disco rígido normal. Aqui é uma boa visão geral.
  2. Alguns extras especiais, que eu cobrirei.
  3. Muito bom. Eu uso com um servidor.

Formate como ext4 durante a instalação e crie um pequeno swap ~ 1 GB. Depois de instalar, edite fstab com Sudo gedit /etc/fstab e adicione a seguinte linha

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

Isso criará uma ramdrive para seus arquivos temporários, o que diminuirá o tempo de uso. Adicione também noatime,nodiratime,discard à sua linha ext4 após os padrões. Isso também diminuirá o desgaste e ativará a função TRIM. Salve e reinicie.

2
gajdipajti

O no-break é obrigatório. No arquivo /etc/sysctl.conf

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

Encontre o daemon do arquivo de configuração, geralmente /etc/syslog.conf или /etc/rsyslog.d/ e todos os caminhos do formulário /var/log/ mudam escrevendo um sinal de menos ("-") na frente das formas.Antes de mail.err

/var/log/mail.err

Depois de
mail.err -/var/log/mail.err

use FS btrfs e use a opção -o ssd

Mais http://vasilisc.com/speedup_ubuntu_eng#speedup_fs

Como ajustar e otimizar o SSD para o Ubuntu, Linux Mint

Ativar TRIM

TRIM (comando Trim permite que um sistema operacional saiba quais blocos SSD não estão sendo usados ​​e podem ser limpos)

Faça backup do fstab primeiro para o caso de algo errado acontecer.

# cp /etc/fstab ~/fstab.bk

Editar arquivo fstab

# nano /etc/fstab

Adicione o descarte às suas unidades ou partições ssd, após ext4

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,errors=remount-ro 0 1
Adding noatime and nodiratime

noatime e nodiratime são opções de montagem no linux para o sistema de arquivos linux. o noatime desativa as atualizações do atime no sistema de arquivos e o nodiratime desabilitará as atualizações do atime no sistema de diretórios. A adição de noatime e nodiratime reduzirá bastante a carga de ssd, o que significa ganhos de desempenho.

Editar arquivo fstab

# nano /etc/fstab

Adicionar noatime, nodiratime às suas unidades ssd ou partições, após ext4

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
1
user223973

Eu sugiro colocar apenas as coisas que são lidas no momento da inicialização no SSD qualquer talvez aplicativos que exigem muito tempo para carregar.Data e logs e outras coisas não críticas que gostaria de localizar em um disco rígido normal.Also você pode configurar o seu Ubuntu para carregar apenas um grande initramfs do SSD no momento da inicialização e não gravar as alterações no ssd.Isso tem o benefício de que as alterações nessa partição não são persistentes, o que é como uma proteção para o seu sistema de inicialização.Para você precisaria de muito mais RAM claro.

Eu gostaria, por exemplo coloque as partições /,/etc,/usr,/boot,/lib 32/64 no SSD enquanto sth como

/ opt,/bin,/sbin,/root,/home e até mesmo trocar (aumentar RAM !!!) no HDD

Wikipedia diz:

O kernel do Linux suporta a função TRIM a partir da versão 2.6.33. O sistema de arquivos ext4 é suportado quando montado usando o parâmetro "discard". Os utilitários de disco mais recentes (e, portanto, o software de instalação que os utiliza) também aplicam o alinhamento adequado da partição.

Para backups, existem várias maneiras, das quais a mais simples é (r) sync plus cron job.

0
Michael K