Quale filesystem linux funziona meglio con SSD


119

Dal wiki:

La vitale funzione TRIM è supportata dal sistema operativo Linux a partire dal kernel 2.6.33 (disponibile all'inizio del 2010). Tuttavia, il supporto tra vari filesystem è ancora incoerente o non presente. Inoltre, il software di installazione non esegue il corretto allineamento delle partizioni.

Quindi, quale filesystem funziona meglio per SSD e supporta l'allineamento delle partizioni TRIM + durante l'installazione ed è disponibile su Ubuntu?

Risposte:


89

File system EXT4 + TRIM:

  • EXT4 con TRIM migliora le prestazioni riducendo i cicli di scrittura non necessari sull'unità SSD poiché limitano i cicli di scrittura / riscrittura.
  • Ubuntu e alcune altre versioni di Linux supportano EXT 4 con TRIM pronto all'uso.

Partizione SWAP:

  • Assicurarsi di non disporre di uno spazio SWAP sull'SSD, di nuovo per ridurre i cicli di scrittura.
  • Se si dispone di un'unità meccanica, è necessario creare uno spazio SWAP sull'unità meccanica ed evitare di averlo sull'unità SSD.

Allineamento delle partizioni:

  • La partizione dovrebbe iniziare su un limite pulito di 1 MB in modo che la dimensione del blocco del filesystem sia allineata con la dimensione del blocco dell'SSD.

Quindi utilizzare EXT4 + TRIM con uno SWAP su un disco rigido meccanico o senza SWAP su SSD.

Quanto sopra può essere implementato facendo riferimento a Source: How to Maximize SSD Performance .


GPT è il metodo moderno che utilizza gdisk& grub 2.0.x, (immagino che qualcuno lo abbia menzionato di seguito in una risposta) e MBR è il metodo legacy che utilizza il vecchio grub 0.9.7e fdisk.. puoi trovare di più qui: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
Non è necessario specificare nodiratimequando si specifica anche noatime. D'accordo, sembra bello e avanzato agli altri nerd, ma poiché noatimedisabilita l'atime sugli inode e anche le directory sono inode, è come dire "lavati le mani e lava anche i pollici". :)
Redsandro il

Per esperienza, posso dire che nessuno scheduler ("noop") funziona più velocemente della scadenza.
drumfire

5
No, " Le partizioni di swap Linux eseguono per impostazione predefinita operazioni TRIM quando il dispositivo a blocchi sottostante supporta TRIM, con la possibilità di disattivarle o di selezionare tra operazioni TRIM singole o continue." quindi la partizione di swap dovrebbe essere posizionata su un SSD per sfruttare il tempo di accesso rapido, il che comporterà un sacco di tempo in cui si verifica ogni scambio di pagine
phuclv

2
@aliasgar F2FS è una buona scelta rispetto a ext4?
SebMa,

67

Risposta breve

  • Scegli ext4 e montalo con l' discardopzione per il supporto TRIM , oppure usa FITRIM (vedi sotto). Utilizzare anche l' noatimeopzione se si teme "usura SSD".

  • Non modificare lo scheduler I / O predefinito (CFQ) su server multi-applicazioni , poiché fornisce equità tra i processi e dispone del supporto SSD automatico. Tuttavia, utilizzare Scadenza sui desktop per ottenere una migliore reattività sotto carico.

  • Per garantire facilmente un corretto allineamento dei dati, il settore iniziale di ciascuna partizione deve essere un multiplo di 2048 (= 1 MiB). Puoi usarli fdisk -cu /dev/sdXper crearli. Nelle recenti distribuzioni, questo si occuperà automaticamente di questo.

  • Pensaci due volte prima di utilizzare lo scambio su SSD. Probabilmente sarà molto più veloce rispetto allo scambio su HDD, ma indosserà anche il disco più velocemente (il che potrebbe non essere rilevante, vedi sotto).

Risposta lunga

  • Filesystem:

Ext4 è il filesystem Linux più comune (ben mantenuto). Fornisce buone prestazioni con SSD e supporta la funzione TRIM (e FITRIM) per mantenere buone prestazioni SSD nel tempo (questo cancella i blocchi di memoria non utilizzati per un rapido accesso successivo alla scrittura). NILFS è stato appositamente progettato per le unità di memoria flash, ma non senza in realtà prestazioni migliori rispetto ext4 sui parametri di riferimento. Btrfs è ancora considerato sperimentale (e in realtà non prestazioni migliori sia ).

  • Prestazioni SSD e TRIM:

La funzione TRIM cancella i blocchi SSD che non sono più utilizzati dal filesystem. Ciò ottimizzerà le prestazioni di scrittura a lungo termine ed è consigliato su SSD a causa del loro design. Significa che il filesystem deve essere in grado di dire all'unità di quei blocchi. L' discardopzione mount di ext4 emetterà tali comandi TRIM quando i blocchi del filesystem vengono liberati. Questo è scarto online .

Tuttavia, questo comportamento implica un leggero sovraccarico di prestazioni. A partire da Linux 2.6.37, è possibile evitare di utilizzare discarde scegliere invece di eseguire scarti batch occasionali con FITRIM (ad es. Dal crontab). L' fstrimutilità esegue questa operazione (online) e l' -E discardopzione di fsck.ext4. Tuttavia, avrai bisogno della versione "recente" di questi strumenti.

  • Usura SSD:

Potresti voler limitare le scritture sul tuo disco poiché SSD ha una durata limitata in questo senso. Tuttavia , non preoccuparti troppo , il peggior SSD da 128 GB di oggi può supportare almeno 20 GB di dati scritti al giorno per più di 5 anni (1000 cicli di scrittura per cella). Quelli migliori (e anche quelli più grandi) possono durare molto più a lungo: molto probabilmente lo avrai sostituito da allora.

Se vuoi usare lo swap su SSD, il kernel noterà un disco non rotazionale e randomizzerà l'uso dello swap (livellamento dell'usura a livello del kernel): vedrai un SS(Stato solido) nel messaggio del kernel quando lo swap è abilitato:

Aggiunta dello scambio 2097148k su / dev / sda1. Priorità: -1 estensioni: 1 attraverso: 2097148k SS

  • Scheduler I / O:

Inoltre, sono d'accordo con la maggior parte della risposta di aliasgar (anche se la maggior parte è stata -illegalmente? - copiata da questo sito Web ), ma devo essere in parte in disaccordo con la parte dello scheduler . Per impostazione predefinita, lo scheduler delle scadenze è ottimizzato per i dischi rotazionali poiché implementa l' algoritmo dell'elevatore . Quindi, chiariamo questa parte.

Risposta lunga sugli scheduler

A partire dal kernel 2.6.29, i dischi SSD vengono rilevati automaticamente e puoi verificarlo con:

cat /sys/block/sda/queue/rotational

Dovresti ottenere 1dischi rigidi e 0un SSD.

Ora, lo scheduler CFQ può adattare il suo comportamento sulla base di queste informazioni. Da linux 3.1, il cfq-iosched.txtfile della documentazione del kernel dice :

CFQ ha alcune ottimizzazioni per gli SSD e se rileva un supporto non rotazionale in grado di supportare una maggiore profondità della coda (più richieste in volo alla volta), [...].

Inoltre, lo schedulatore Deadline cerca di limitare i movimenti della testa non ordinati sui dischi rotazionali, in base al numero di settore. Citando il documento del kernel deadline-iosched.txt, fifo_batch descrizione dell'opzione :

Le richieste sono raggruppate in `` batch '' di una particolare direzione dei dati (lettura o scrittura) che vengono gestite in ordine crescente di settore.

Tuttavia, sintonizzare questo parametro su 1 quando si utilizza un SSD può essere interessante:

Questo parametro regola l'equilibrio tra latenza per richiesta e throughput aggregato. Quando la latenza bassa è la preoccupazione principale, minore è meglio (dove un valore di 1 produce un comportamento di primo arrivato, primo servito). L'aumento di fifo_batch generalmente migliora la velocità effettiva, a scapito della variazione di latenza.

Alcuni benchmark suggeriscono che c'è poca differenza nelle prestazioni tra i diversi programmatori. Quindi, perché non raccomandare l' equità ? quando il CFQ è raramente male in panchina . Tuttavia, nelle configurazioni desktop, di solito si verificherà una migliore reattività utilizzando Deadline sotto carico, a causa del suo design (probabilmente a un costo di throughput inferiore però).

Detto questo, un benchmark migliore proverebbe a utilizzare Deadline con fifo_batch=1.

Per utilizzare Deadline su SSD per impostazione predefinita, è possibile creare un file, ad esempio /etc/udev.d/99-ssd.rulescome segue:

# 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"

Cosa intendi con che l'allineamento del partizionamento viene automaticamente curato nelle recenti distribuzioni? Si applica anche quando si utilizza il partizionamento manuale durante l'installazione di Ubuntu o quando si esegue il partizionamento tramite gparted?
jarno,

2
@jarno nelle distribuzioni più recenti (ormai da diversi anni), gli strumenti di partizionamento, da fdisk in su attraverso le cose grafiche, tendono automaticamente al default per creare allineamenti di partizioni a multipli di 1 Mb dall'inizio del dispositivo. Questo si allinea preventivamente con 512byte, 4k, 8k e mezzo bazillion altre dimensioni di blocchi / cluster che sono 2 ^ n in natura. Rende quasi impossibile allineare erroneamente una partizione a meno che non si faccia uno sforzo significativo per farlo.
assassino

13

L'articolo di Archlinux Solid State Drives dice nella sezione Scelta del filesystem :

Esistono molte opzioni per i file system tra cui Ext2 / 3/4, Btrfs, ecc.

Btrfs Il
supporto Btrfs è stato incluso con la versione 2.6.29 mainline del kernel Linux. Alcuni ritengono che non sia abbastanza maturo per l'uso in produzione mentre ci sono anche i primi ad adottare questo potenziale successore di ext4. Gli utenti sono incoraggiati a leggere l' articolo di Btrfs per maggiori informazioni.

Ext4
Ext4 è un altro file system che supporta SSD. È considerato stabile dal 2.6.28 ed è abbastanza maturo per l'uso quotidiano. Contrariamente a Btrfs, ext4 non rileva automaticamente la natura del disco; gli utenti devono abilitare esplicitamente il supporto del comando TRIM usando l'opzione discard mount in fstab (o con tune2fs -o discard / dev / sdaX).

Sia Btrfs che Ext4 soddisfano i due requisiti principali per un uso efficiente dell'SSD:

  • Il filesystem deve essere in grado di inviare comandi ATA_TRIM all'SSD sottostante
  • Il filesystem non deve eseguire scritture non necessarie sul disco

Per le prestazioni, ci sono altri due requisiti:

  • Le partizioni devono essere allineate alla dimensione del blocco dell'SSD
  • TRIM deve essere abilitato esplicitamente per ogni partizione formattata Ext4

Il primo è oggi automatico con la maggior parte dei programmi di installazione di Linux. fdisk creerà anche partizioni al bordo di 1024 KB se avviato con i flag "-cu".

Il secondo è automatico per Btrfs, ma per Ext4 questo viene fatto manualmente aggiungendo "discard" all'elenco delle opzioni di mount per ogni partizione Ext4 nel file "/ etc / fstab". Per maggiori dettagli vedi questo howto .

A mio avviso, questo richiede un po 'di manipolazione con fstab per Ext4 non è un motivo per non usare questo filesystem maturo ed eccellente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.