Qual sistema de arquivos linux funciona melhor com SSD

119

Do wiki:

A função TRIM vital é suportada pelo sistema operacional Linux a partir do kernel 2.6.33 (disponível no início de 2010). No entanto, o suporte entre vários sistemas de arquivos ainda é inconsistente ou não está presente. O alinhamento adequado da partição também não é realizado pelo software de instalação.

Então, qual sistema de arquivos funciona melhor para SSD e suporta o alinhamento de partição TRIM + durante a instalação e está disponível no Ubuntu?

hbt
fonte

Respostas:

89

Sistema de arquivos EXT4 + TRIM:

  • O EXT4 com TRIM melhora o desempenho, reduzindo os ciclos de gravação desnecessários na unidade SSD, pois eles limitam os ciclos de gravação e reescrita.
  • O Ubuntu e alguns outros tipos de Linux suportam EXT 4 com o TRIM pronto para uso.

Partição SWAP:

  • Verifique se você não possui um espaço SWAP no SSD, novamente para reduzir os ciclos de gravação.
  • Se você tiver uma unidade mecânica, crie um espaço SWAP na unidade mecânica e evite tê-lo no SSD.

Alinhamento da partição:

  • A partição deve iniciar em um limite de 1 MB limpo, para que o tamanho do bloco do sistema de arquivos seja alinhado ao tamanho do bloco do SSD.

Portanto, use EXT4 + TRIM com um SWAP em um disco rígido mecânico ou sem SWAP no SSD.

O acima pode ser implementado consultando a Fonte: Como maximizar o desempenho do SSD .

aliasgar
fonte
GPT é o método moderno usando gdisk& grub 2.0.x, (acho que alguém mencionou abaixo em uma resposta) e MBR é o método legado usando o antigo grub 0.9.7e fdisk.. você pode encontrar mais aqui: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar
7
Não é necessário especificar nodiratimequando você também especifica noatime. De acordo, parece legal e avançado para colegas nerds, mas como noatimedesativa atime em inodes e os diretórios também são inodes, é como dizer "lave as mãos e lave os polegares também". :)
Redsandro
Por experiência, posso dizer que nenhum agendador ("noop") funciona mais rápido que o prazo.
drumfire
5
Não, " as partições de troca do Linux executam operações TRIM por padrão quando o dispositivo de bloco subjacente suporta TRIM, com a possibilidade de desativá-las ou de selecionar operações TRIM únicas ou contínuas". assim partição swap deve ser colocado em um SSD de aproveitar o tempo de acesso rápido, o que irá suportar uma grande quantidade de tempo a cada troca de página ocorre
phuclv
2
@aliasgar O F2FS é uma boa escolha contra o ext4?
21418 Sebbe
67

Resposta curta

  • Escolha ext4 e monte-o com a discardopção de suporte TRIM , ou use FITRIM (veja abaixo). Também use a noatimeopção se você tem medo de "desgaste do SSD".

  • Não altere seu CFQ (Agendador de E / S) padrão em servidores de vários aplicativos , pois ele oferece justiça entre os processos e possui suporte automático a SSD. No entanto, use o Prazo em áreas de trabalho para obter melhor capacidade de resposta sob carga.

  • Para garantir facilmente o alinhamento adequado dos dados, o setor inicial de cada partição deve ser múltiplo de 2048 (= 1 MiB). Você pode usar fdisk -cu /dev/sdXpara criá-los. Nas distribuições recentes, ele cuidará disso automaticamente.

  • Pense duas vezes antes de usar swap no SSD. Provavelmente será muito mais rápido comparado à troca no HDD, mas também desgastará o disco mais rapidamente (o que pode não ser relevante, veja abaixo).

Resposta longa

  • Sistemas de arquivos:

Ext4 é o sistema de arquivos Linux mais comum (bem conservado). Ele fornece bom desempenho com o SSD e suporta o recurso TRIM (e FITRIM) para manter um bom desempenho do SSD ao longo do tempo (isso limpa blocos de memória não utilizados para acesso rápido e posterior à gravação). NILFS é especialmente concebido para drives de memória flash, mas que não realmente executar melhor do que ext4 em benchmarks. Btrfs ainda é considerado experimental (e realmente não têm melhor desempenho , quer ).

  • Desempenho SSD e TRIM:

O recurso TRIM limpa os blocos SSD que não são mais usados ​​pelo sistema de arquivos. Isso otimizará o desempenho de gravação a longo prazo e é recomendado no SSD devido ao seu design. Isso significa que o sistema de arquivos deve poder informar a unidade sobre esses blocos. A discardopção de montagem do ext4 emitirá esses comandos TRIM quando os blocos do sistema de arquivos forem liberados. Isso é descarte on - line .

No entanto, esse comportamento implica uma pequena sobrecarga de desempenho. Desde o Linux 2.6.37, você pode evitar o uso discarde optar por descartar lotes ocasionalmente com o FITRIM (por exemplo, no crontab). O fstrimutilitário faz isso (online), bem como a -E discardopção de fsck.ext4. Você precisará da versão "recente" dessas ferramentas, no entanto.

  • Desgaste SSD:

Você pode limitar as gravações em sua unidade, pois o SSD tem uma vida útil limitada a esse respeito. No entanto , não se preocupe muito , o pior SSD de 128 GB de hoje pode suportar pelo menos 20 GB de dados gravados por dia por mais de 5 anos (1000 ciclos de gravação por célula). Os melhores (e também os maiores) podem durar muito mais: você provavelmente o terá substituído até então.

Se você deseja usar o swap no SSD, o kernel notará um disco não rotacional e randomizará o uso do swap (nível de desgaste no nível do kernel): você verá um SS(Solid State) na mensagem do kernel quando o swap estiver ativado:

Adicionando 2097148k de swap em / dev / sda1. Prioridade: -1 extensões: 1 em: 2097148k SS

  • Agendadores de E / S:

Além disso, concordo com a maioria das respostas do aliasgar (mesmo que a maioria tenha sido copiada ilegalmente deste site ), mas devo discordar parcialmente da parte do agendador . Por padrão, o agendador de prazos é otimizado para discos rotacionais à medida que implementa o algoritmo do elevador . Então, vamos esclarecer esta parte.

Resposta longa sobre agendadores

A partir do kernel 2.6.29, os discos SSD são detectados automaticamente e você pode verificar isso com:

cat /sys/block/sda/queue/rotational

Você deve comprar 1discos rígidos e 0um SSD.

Agora, o planejador CFQ pode adaptar seu comportamento com base nessas informações. Desde o linux 3.1, o cfq-iosched.txtarquivo de documentação do kernel diz :

O CFQ possui algumas otimizações para SSDs e se detectar uma mídia não rotacional que possa suportar maior profundidade da fila (várias solicitações em voo por vez), [...].

Além disso, o planejador de prazos tenta limitar os movimentos desordenados da cabeça em discos rotativos, com base no número do setor. Citando o documento do kernel deadline-iosched.txt, fifo_batch descrição da opção :

As solicitações são agrupadas em `` lotes '' de uma direção de dados específica (leitura ou gravação) que são atendidas em ordem crescente do setor.

No entanto, ajustar esse parâmetro para 1 ao usar um SSD pode ser interessante:

Este parâmetro ajusta o equilíbrio entre a latência por solicitação e a taxa de transferência agregada. Quando a baixa latência é a principal preocupação, menor é melhor (onde um valor de 1 gera comportamento de primeiro a chegar, primeiro a ser servido). Aumentar o fifo_batch geralmente melhora a taxa de transferência, ao custo da variação da latência.

Alguns benchmarks sugerem que há pouca diferença no desempenho entre os diferentes agendadores. Então, por que não recomendar justiça ? quando CFQ raramente é ruim no banco . No entanto, nas configurações da área de trabalho, você normalmente experimentará uma melhor capacidade de resposta usando o Prazo sob carga, devido ao seu design (provavelmente com um custo de taxa de transferência menor).

Dito isto, um benchmark melhor tentaria usar o Prazo com fifo_batch=1.

Para usar o Prazo em SSDs por padrão, você pode criar um arquivo, /etc/udev.d/99-ssd.rulescomo a seguir:

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
Totor
fonte
O que você quer dizer com o alinhamento de particionamento é resolvido automaticamente nas distribuições recentes? Isso se aplica também quando você usa o particionamento manual durante, por exemplo, a instalação do ubuntu ou quando faz o particionamento pelo gparted?
jarno 17/09/2015
2
@jarno nas distribuições mais recentes (há vários anos), as ferramentas de particionamento, do fdisk até as coisas gráficas, tendem a usar o padrão automático para criar alinhamentos de partição em múltiplos de 1Mb desde o início do dispositivo. Isso se alinha preventivamente com 512 bytes, 4k, 8k e meio bazilhão de outros tamanhos de bloco / cluster com 2 ^ n por natureza. Torna quase impossível desalinhar uma partição, a menos que você faça um esforço significativo para isso.
Killermist
13

O artigo do archlinux Solid State Drives diz na seção Choice of Filesystem :

Existem muitas opções para sistemas de arquivos, incluindo Ext2 / 3/4, Btrfs, etc.

Btrfs O
suporte ao Btrfs foi incluído na versão 2.6.29 da linha principal do kernel do Linux. Alguns acham que ele não está maduro o suficiente para uso em produção, enquanto também existem os primeiros a adotar esse potencial sucessor para ext4. Os usuários são encorajados a ler o artigo Btrfs para obter mais informações.

Ext4
Ext4 é outro sistema de arquivos que suporta SSD. É considerado estável desde 2.6.28 e está maduro o suficiente para uso diário. Ao contrário do Btrfs, o ext4 não detecta automaticamente a natureza do disco; os usuários devem ativar explicitamente o suporte ao comando TRIM usando a opção discard mount no fstab (ou com tune2fs -o discard / dev / sdaX).

O Btrfs e o Ext4 atendem aos dois principais requisitos para o uso eficiente do SSD:

  • O sistema de arquivos deve poder emitir comandos ATA_TRIM para o SSD subjacente
  • O sistema de arquivos não deve executar gravações desnecessárias no disco

Para desempenho, existem outros dois requisitos:

  • As partições precisam ser alinhadas ao tamanho do bloco do SSD
  • O TRIM deve ser ativado explicitamente para cada partição ext4 formatada

O primeiro é hoje em dia automático com a maioria dos instaladores de Linux. O fdisk também criará partições na borda de 1024 KB, se iniciado com os sinalizadores "-cu".

A segunda é automática para Btrfs, mas para o Ext4 isso é feito manualmente adicionando "descarte" à lista de opções de montagem para cada partição Ext4 no arquivo "/ etc / fstab". Para mais detalhes, consulte este tutorial .

Na minha opinião, isso exigia pouca interação com o fstab para Ext4, não é motivo para não usar esse sistema de arquivos maduro e excelente.

harrymc
fonte
-2

BTRFS IMO. O Ubuntu 8.04 e versões posteriores incluíram versões do GRUB com reconhecimento de GPT. Com o GPT e o Gdisk, ele alinhará suas partições para você. Eu acredito que o fdisk fará isso também.

Enfim, aqui está um link para uma instalação do Ubuntu em um sistema de arquivos BTRFS.

http://www.linuxbsdos.com/2011/05/05/how-to-install-ubuntu-11-04-on-a-btrfs-file-system/

Espero que ajude.

Daddy Su
fonte