Domanda Come ottimizzo il SO per SSD?


Quali misure dovrebbero essere prese prima / durante / dopo l'installazione di Ubuntu su Solid State Drive per ottimizzare le prestazioni e garantire la massima durata dell'unità?


143
2017-08-06 14:03


origine




risposte:


Ho utilizzato con successo diverse tecniche per migliorare il modo in cui Ubuntu utilizza il dispositivo di archiviazione, sia esso a stato solido o unità tradizionale.

Per gli SSD si sta cercando di ridurre al minimo il numero di volte che l'unità è stata scritta, poiché le letture non dovrebbero aggiungere usura al disco.

1) Gestisci il file di scambio

Se non si iberna il computer e si dispone di un'ampia memoria RAM per eseguire tutte le applicazioni, in teoria non è necessaria una partizione di swap.

Se si dispone di un mix di SSD e dischi rigidi, posizionare la partizione di swap solo sui dischi rigidi.

2) Nessuna scrittura per i timestamp di lettura (adatto per SSD e hard disk)

Montando le tue partizioni con le opzioni noatime e nodiratime interromperà le scritture di timestamp durante la lettura di file e cartelle. Queste scritture di timestamp non sono generalmente richieste a meno che non si utilizzi un client di posta locale come mutt. Il motivo per cui questa è generalmente una cattiva idea, è perché ogni lettura produrrà una scrittura durante l'aggiornamento dei timestamp. Questo diminuisce la vita dell'SSD.

Modifica il tuo / Etc / fstab file di configurazione (con attenzione - eseguire un backup per essere sicuro che la rottura della configurazione di fstab possa impedire il corretto funzionamento del sistema):

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

Modifica le opzioni di montaggio per le tue partizioni aggiungendo il testo noatime e nodiratime alle linee che definiscono la tua root (/) e le altre partizioni se ne hai (/ home) - Nota: se si dispone di una partizione / home, iniziare con quella modifica della partizione solo se si è preoccupati di rompere qualcosa 

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

Sarà necessario riavviare il computer prima che queste modifiche abbiano effetto

3) Riduzione al minimo delle scritture dal sistema operativo e dalle applicazioni

Supponendo che non si stia utilizzando un server di prodotto mission critical, la maggior parte delle persone non guarda i log se qualcosa va storto (soprattutto perché gli errori gravi sono rari per la maggior parte degli utenti di Ubuntu). Pertanto è possibile configurare Ubuntu in modo che tutti i registri vengano scritti nella memoria RAM anziché nell'SSD.

Nota: apporta le seguenti modifiche solo quando hai installato tutto il software che utilizzerai (specialmente cose come il server web Apache), altrimenti potresti riscontrare alcuni problemi con le directory mancanti in / var / log

Per lo sfondo di questo approccio, vedi prolungare la vita del tuo flash drive su ubuntu-eee.com 

Aperto / Etc / fstab con un editor (assumendo che tu abbia eseguito il backup del file / etc / fstab)

gksudo gedit /etc/fstab

Aggiungi le seguenti righe alla fine del file fstab e salva:

# 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

Sarà necessario riavviare il computer prima che queste modifiche abbiano effetto

Guarda anche:


106
2017-08-08 13:09



Circa l'ultimo bit per i log e le cose, il tmpfs le linee sono commentate, quindi perché aggiungere quelle linee fa qualche differenza? Dobbiamo aggiungerlo senza commenti? - Oxwivi
Posso capire se questo è destinato a migliorare la velocità, ma la maggior parte di ciò che hai scritto sembra destinato a migliorare la vita SSD. Non è il caso che con i moderni SSD questi miglioramenti siano inutili? E a spese di un maggiore utilizzo della RAM! (per esempio, vedi il link fornito in questa altra risposta) - Chan-Ho Suh
Non c'è bisogno di 2). relatime fa il lavoro di prevenzione delle scritture molto bene ed è attivo di default da allora kernel 2.6.30. - Mihai Capotă
Solo per aggiungere al commento @ MihaiCapotă c'è un Risposta all'errore del server con maggiori dettagli sul perché noatime non è necessario. - Cas
Dicono noatime implica nodiratime Qui, quindi è sufficiente aggiungere l'opzione precedente. - jarno


Vita SSD

Generalmente non mi preoccuperei: le preoccupazioni sulla vita SSD sono esagerate. Puoi leggere questo articolo dettagliato sul motivo per cui non dovresti davvero preoccuparti. In breve, i circuiti nei moderni SSD gestiscono il livellamento dell'usura per te e sanno come farlo molto meglio di te.

Nell'articolo è un calcolo della durata di un SSD che sta ricevendo scritture a un tasso continuo di 80 M / s. La vita è 51 anni. Questo si basa sulla tecnologia del 2007 - la vita SSD sarà più lunga ora. E quasi certamente non scrivi al tuo SSD a 80M / s 24 ore al giorno.

Prestazioni SSD

Tuttavia, il degrado delle prestazioni nel tempo può essere un problema, e TRIM è la soluzione. Ci sono due opzioni

  • TRIM automatico / online, alias scarto
  • TRIM manuale

Devi abilitare il TRIM automatico autonomamente . (Fondamentalmente si aggiunge il discard opzione per le opzioni di mount, a patto che stiate usando ext4.) Ho trovato un post sul blog che lo riportava l'opzione di scarto rallenta il sistema quando si eliminano i file.

Occasionalmente puoi farlo manualmente (o in un cron job) usando fstrim. Se hai solo una partizione, tutto ciò che devi fare è:

sudo fstrim /

Nota che fstrim è disponibile solo in 11.10 e successivi. Per i sistemi più vecchi è necessario il wiper.sh script. Ho trovato il copione su /usr/share/doc/hdparm/contrib/wiper.sh.gz sul mio sistema.

Se ti stai chiedendo, il problema che TRIM risolve, come descritto da Wikipedia, è:

Gli SSD memorizzano i dati nelle celle di memoria flash raggruppate in pagine, con le pagine (in genere 4 kB ciascuna) raggruppate in blocchi (in genere 128 pagine per blocco, per un totale di 512 kB). Le celle di memoria flash NAND possono essere scritte direttamente solo quando sono vuote. Se si ritiene che contengano dati, è necessario prima cancellare i contenuti prima che un'operazione di scrittura possa essere eseguita in modo affidabile. In SSD, un'operazione di scrittura può essere eseguita a livello di pagina, ma a causa di limitazioni hardware, i comandi di cancellazione riguardano sempre interi blocchi. Di conseguenza, scrivere dati su supporti SSD è molto veloce fintanto che le pagine vuote possono essere utilizzate, ma rallenta notevolmente una volta che le pagine scritte in precedenza devono essere sovrascritte. Poiché una cancellazione delle celle nella pagina è necessaria prima che possa essere riscritta, ma solo interi blocchi possono essere cancellati, una sovrascrittura avvierà un ciclo read-erase-modify-write: il contenuto dell'intero blocco deve essere memorizzato nella cache prima che venga cancellato efficacemente sul supporto flash, quindi la pagina sovrascritta viene modificata nella cache in modo che il blocco memorizzato nella cache sia aggiornato e solo allora l'intero blocco (con aggiornamento pagina) scritto sul supporto flash. Questo fenomeno è noto come amplificazione della scrittura.


90
2017-08-08 19:03



Vorrei poter votare più volte. QUESTA sarebbe una di quelle risposte. Quel collegamento ha risolto una preoccupazione che ho avuto per molto tempo. Molte grazie Hamish. - Luis Alvarado♦
Articolo interessante da storagesearch.com. Mi piacerebbe dare un appuntamento! Quindi la risposta sopra indica che i proprietari di SSD non devono preoccuparsi dei suggerimenti nella prima risposta, ad eccezione di TRIM? Non ho molto bisogno di tempi di accesso ai file, ma con 2G di memoria, avere una partizione di swap potrebbe essere ancora utile quando si eseguono alcuni software di fotoritocco insieme a molti altri programmi ad alta intensità di memoria come Chrome. - Lawrence I. Siden
@lsiden: l'articolo menziona "Più tardi: - nel maggio 2008" in parte. E hai ragione a non dovresti preoccuparti di tutte le altre cose nel primo articolo. Basta abilitare TRIM e goditi la velocità :) - Hamish Downer
L'articolo fa riferimento a SSD di livello enterprise: utilizza 2 milioni di cicli di scrittura endurance. Gli SSD consumer hanno circa 3000-5000 cicli. Un SSD da 128 GB con 3000 cicli fornisce 57 giorni di scrittura continua di 80 MB / s. - LeartS
In Ubuntu 14.10 in poi, TRIMming viene eseguito automaticamente ogni settimana su tutti gli SSD supportati da fstrim. rif. - KrisWebDev


Ci sono diversi punti:

Allineamento:

Ciò che viene spesso indicato è il diritto allineamento della partizione. Questo dovrebbe essere uguale alla dimensione del blocco dell'SSD. Gioca al sicuro e allinea le tue partizioni ai confini del MiB. Nota che non puoi farlo con lo strumento di partizione dell'installer di Ubuntu (che usa MB non MiB), ma puoi avviare il live CD, usare Gparted (che usa MiB), quindi fare clic su Installa per usare le partizioni che hai impostato.

Lo schedulatore giusto:

Un punto importante è il scheduler quale dovrebbe essere noop. È possibile impostare questo programmatore tramite kernelparameter elevator=noop o tramite una voce echo noop > /sys/block/sda/queue/scheduler in te rc.local.

mountflags:

io raccomanderei noatime e discard

tmpfs

Mettere il tmp su un ramdisk può aumentare la vita del ssd. Per usare questo metti la seguente riga in te fstab: none /tmp tmpfs defaults 0 0

Generalmente, se vuoi approfondire questo argomento, ti consiglierei Questo ottimo articolo wiki.


20
2018-02-03 21:28





Corso di tuning veloce per il tuo SSD su Ubuntu:

filesystem

Wiki dell'arco menziona alcune opzioni preferibili per il file system SSD - uno di questi è instabile, altri lo sono ext* quelli Presumo ext4 è una delle migliori scelte.
Nota: in caso di ext4 potresti volerlo usare discard opzione di montaggio.

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

Poche cose importanti qui sono:

  • Per i sistemi con> = 2 giga di memoria, è desiderabile localizzare / tmp nella RAM.
  • No swap partizione. Al giorno d'oggi è necessario solo per ibernazione, dal momento che le macchine moderne hanno una quantità piuttosto grande di RAM.
  • noatime e discard opzioni. L'informazione è Qui.

scheduler

Prendi in considerazione il passaggio dallo scheduler predefinito, che nella maggior parte delle distro Linux è cfq (completamente equa in coda), al programmatore di noop o di scadenza per un SSD. L'utilizzo dello strumento di pianificazione noop, ad esempio, elabora semplicemente le richieste nell'ordine in cui vengono ricevute, senza considerare il punto in cui i dati risiedono fisicamente sul disco. Si ritiene che questa opzione sia vantaggiosa per gli SSD poiché i tempi di ricerca sono identici per tutti i settori dell'SSD.

Aggiungi di seguito a /etc/rc.local:

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

Informazioni

uno  Due


16
2017-12-09 17:24



Senza scambiare, e con /tmp nella RAM, è molto facile arrivare a fuori dalla memoria situazione, come molti programmi usano /tmp come spazio di archiviazione (ad esempio Brasero per la memorizzazione di immagini DVD). - arrange
Non proprio. tmpfs di default è il 10% della RAM. La dimensione può essere regolata usando size opzione però. - Andrejs Cainikovs
Brasero è un cattivo esempio, non dovrebbe farlo in primo luogo, come spiega Lennart Poettering nel suo blog 0pointer.de/blog/projects/tmp.html - LiveWireBT


4) abilitare TRIM automatico 

Se il tuo SSD lo supporta, dovresti anche abilitare il TRIM automatico (come descritto Qui)


8
2017-12-30 23:37





Non aggiungerei questa riga al tuo fstab, la cartella var / tmp è pensata per sopravvivere ai reboot e questo potrebbe causare problemi.

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

Quando configuro il nuovo sistema lascio tutta la cartella tmp commentata in questo modo se succede qualcosa, posso controllare i log e tutto il resto. Poi, una volta che avrò configurato il sistema principale, anniderò i loro commenti, ma non aggiungo mai la riga sopra, ecco cosa 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 ho problemi con il mio sistema, commento a quelli che sono in grado di controllare tutto anche dopo un riavvio o un riavvio forzato dopo un blocco.

Inoltre non hai bisogno di nodiratime, l'opzione noatime si prende cura di entrambi.

Per quanto riguarda TRIM, se il tuo hw / sw lo supporta, è un must, non uso scard in fstab. Creo un cron giornaliero, perché il mio PC è sempre acceso, in questo modo:

gksu gedit /etc/cron.daily/trim

Quindi aggiungi questo file e salva (Se non hai una partizione separata / home su ssd, o hai altre parti su ssd dovresti avere l'idea di come modificarlo:

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

Quindi rendere il file eseguibile da:

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

Modifico anche il mio rc.local in questo modo:

gksu gedit /etc/rc.local

Aggiungi questo sopra "exit 0" e sotto l'ultimo #:

# 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

È possibile copiare e incollare da qui in modo che non ci siano errori, per il profano sembra fuori whack, non lo è.

Ho anche letto che lasciare il 10% della tua unità SSD non formattata può aiutare a prolungare la vita, che resta da vedere. Non ho letto così tanto in questo quindi non posso garantire se ha senso farlo.

Questa è la migliore guida a tutto tondo, non ha sfogliato Google per un giorno e poi ha inventato una guida, dovresti verificarlo QUI


3
2017-07-28 22:53



L'idea di aggiungere tutte le directory sotto regolare / var / log su /etc/rc.local? Cosa succede se non aggiungi le directory? Immagino che ci potrebbero essere più directory da aggiungere, se installerai dei nuovi pacchetti. Potrebbe /etc/rc.local essere aggiornato durante l'arresto per creare tutte le directory all'avvio successivo? - jarno
In ubuntu 14.04 e successive c'è un cron job /etc/cron.weekly/fstrim impostato di default per tagliare i file system settimanalmente. Come per il 14.04, vedi Qui. Ubuntu 15.10 utilizza /sbin/fstrim --all || true nello script fstrim. - jarno
Almeno directory / var / log / installer ha una sottodirectory chiamata ubiquity-apt-clone in Xubuntu 15.10. Dovresti creare le sottodirectory in modo ricorsivo? - jarno


TRIM consente a un sistema operativo di informare un SSD che i blocchi di dati non sono più considerati in uso e possono essere cancellati internamente. La funzione di ritaglio consente all'unità SSD di gestire il sovraccarico della raccolta di dati inutili, che altrimenti rallenterebbe in modo significativo le operazioni di scrittura future sui blocchi coinvolti, in anticipo.1 

In Ubuntu 14.04 è stata aggiunta una nuova funzionalità al util-linux pacchetto che ritaglia automaticamente gli SSD automaticamente, ma solo gli SSD Intel e Samsung hanno il TRIM abilitato di default, perché alcuni SSD economici possono persino attivarsi automaticamente durante l'esecuzione di TRIM.2 Il contenuto di /etc/cron.weekly/fstrim in 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
2Come viene abilitato Trim?


3
2017-12-25 01:52





È chiaro che /var/tmp non dovrebbe essere in tmpfs poiché per definizione il contenuto deve essere preservato oltre i riavvii:


2
2017-10-09 16:12