Come posso ottimizzare il sistema operativo per gli SSD?


146

Quali passi dovrebbero essere presi prima / durante / dopo l'installazione di Ubuntu su un'unità a stato solido per ottimizzare le prestazioni e garantire la massima durata dell'unità?

Risposte:


108

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

Per gli SSD stai cercando di ridurre al minimo il numero di volte in cui viene scritta anche l'unità, poiché le letture non dovrebbero aggiungere usura all'unità.

1) Gestisci il file di scambio

Se non si iberna il computer e si dispone di memoria RAM estesa 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 dischi rigidi)

Il montaggio delle partizioni con le opzioni noatime e nodiratime interromperà le scritture di data e ora durante la lettura di file e cartelle. Queste scritture di data e ora non sono generalmente richieste a meno che non si utilizzi un client del server 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. Ciò riduce la durata dell'SSD.

Modifica il tuo file di configurazione / etc / fstab (fai attenzione: esegui un backup per assicurarti che interrompere la configurazione di fstab può impedire al tuo sistema di funzionare):

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 righe che definiscono la tua radice (/) e altre partizioni se le hai (/ home) - Nota: se hai una partizione / home, inizia con quel solo cambiando quella partizione se sei preoccupato 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) Ridurre al minimo le scritture dal sistema operativo e dalle applicazioni

Supponendo che non si stia eseguendo un server di prodotto mission-critical, la maggior parte delle persone non esamina i registri se qualcosa dovesse andare 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: apportare le seguenti modifiche solo dopo aver installato tutto il software che si intende utilizzare (in particolare cose come il web server Apache), altrimenti potrebbero verificarsi problemi con le directory mancanti in / var / log

Per informazioni di base su questo approccio, vedere prolungare la durata dell'unità flash su ubuntu-eee.com

Apri / etc / fstab con un editor (supponendo di aver 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:


7
Per quanto riguarda l'ultimo bit per i registri e le cose, le tmpfsrighe vengono commentate, quindi perché l'aggiunta di tali righe potrebbe fare la differenza? Dobbiamo aggiungerlo senza commenti?
Oxwivi,

8
Posso capire se questo ha lo scopo di migliorare la velocità, ma la maggior parte di ciò che hai scritto sembra destinato a migliorare la vita dell'SSD. Non è vero che con i moderni SSD questi miglioramenti sono inutili? E a scapito di un maggiore utilizzo della RAM! (ad esempio, vedi il link indicato in questa altra risposta )
Chan-Ho Suh,

7
Non è necessario per 2). relatime fa molto bene a prevenire le scritture ed è attivo di default dal kernel 2.6.30 .
Mihai Capotă,

3
Solo per aggiungere al commento di @MihaiCapotă c'è una risposta di errore del server con maggiori dettagli sul perché il noatime non è necessario.
Cas

1
Dicono che il noatime implichi il nodiratime qui , quindi è sufficiente aggiungere la prima opzione.
jarno,

92

Vita SSD

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

Nell'articolo è riportato un calcolo della durata di un SSD che sta ricevendo scritture a una velocità continua di 80 M / s. La vita è di 51 anni . Questo è basato sulla tecnologia del 2007: la vita degli SSD sarà più lunga ora. E quasi certamente non scrivi sul tuo SSD a 80 M / s 24 ore al giorno.

Prestazioni SSD

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

  • TRIM automatico / online, noto anche come scarto
  • TRIM manuale

Devi abilitare TRIM automatico da solo . (Fondamentalmente aggiungi l' discardopzione alle tue opzioni di mount, a condizione che tu stia usando ext4.) Ho trovato un post sul blog che riporta che l'opzione di scarto rallenta il tuo sistema durante l'eliminazione dei file .

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

sudo fstrim /

Nota che fstrim è disponibile solo nella versione 11.10 e successive. Per i sistemi più vecchi è necessario lo wiper.shscript. Ho trovato lo script /usr/share/doc/hdparm/contrib/wiper.sh.gzsul mio sistema.

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

Gli SSD memorizzano i dati in 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, i contenuti devono prima essere cancellati prima che un'operazione di scrittura possa essere eseguita in modo affidabile. Negli SSD, un'operazione di scrittura può essere eseguita a livello di pagina, ma a causa delle limitazioni hardware, i comandi di cancellazione influenzano sempre interi blocchi. Di conseguenza, la scrittura di dati su supporti SSD è molto rapida fintanto che è possibile utilizzare pagine vuote, ma rallenta notevolmente una volta che le pagine precedentemente scritte devono essere sovrascritte. Poiché è necessaria una cancellazione delle celle nella pagina prima che possa essere riscritta, ma è possibile cancellare solo interi blocchi, una sovrascrittura avvia un ciclo di lettura-cancellazione-modifica-scrittura: i contenuti dell'intero blocco devono essere memorizzati nella cache prima che venga effettivamente cancellato 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 la pagina aggiornata) viene scritto sul supporto flash . Questo fenomeno è noto come amplificazione in scrittura.


8
Vorrei poter votare più volte. QUESTA sarebbe una di quelle risposte. Quel collegamento ha risolto una preoccupazione che avevo da molto tempo. Mille grazie Hamish.
Luis Alvarado,

Articolo interessante da storagesearch.com. Vorrei che avesse un appuntamento! Quindi la risposta di cui sopra significa che i proprietari di SSD non devono preoccuparsi di 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 esegue un software di fotoritocco insieme a molti altri programmi ad alta intensità di memoria come Chrome.
Lawrence I. Siden,

@lsiden: l'articolo menziona "Più tardi: - a maggio 2008" a metà strada. E hai ragione che non dovresti preoccuparti di tutte le altre cose nel primo articolo. Abilita TRIM e goditi la velocità :)
Hamish Downer,

2
L'articolo fa riferimento a SSD di livello enterprise: utilizza 2 milioni di cicli di resistenza in scrittura. Gli SSD consumer hanno circa 3000-5000 cicli. Un SSD da 128 GB con 3000 cicli offre 57 giorni di scrittura continua di 80 MB / s.
LeartS,

1
Da Ubuntu 14.10 in poi, TRIMming si verifica automaticamente ogni settimana su tutti gli SSD supportati da fstrim. rif.
KrisWebDev il

20

Ci sono diversi punti:

Allineamento:

Ciò che viene spesso sottolineato è il giusto allineamento della partizione. Questo dovrebbe essere uguale alla dimensione del blocco dell'SSD. Gioca in sicurezza e allinea le tue partizioni ai confini del MiB. Nota che non puoi farlo con lo strumento di partizione del programma di installazione di Ubuntu (che utilizza MB non MiB), ma puoi avviare il CD live, utilizzare Gparted (che utilizza MiB), quindi fare clic su Installa per utilizzare le partizioni impostate.

Lo scheduler giusto:

Un punto importante è lo scheduler che dovrebbe essere noop. Puoi impostare questo programmatore tramite kernelparameter elevator=noopo tramite una voce echo noop > /sys/block/sda/queue/schedulerin rc.local.

mountflags:

Consiglierei noatimeediscard

tmpfs

Mettere tmp su un ramdisk può aumentare la durata della ssd. Per usarlo inserisci la seguente riga in fstab:none /tmp tmpfs defaults 0 0

In genere, se vuoi approfondire questo argomento, consiglierei questo eccellente articolo wiki.


16

Corso di sintonizzazione rapida per il tuo SSD su Ubuntu:

filesystem

Arch wiki menziona alcune opzioni preferibili per il file system SSD: una è instabile, altre sono ext *. Presumo che ext4 sia una delle migliori scelte.
Nota: in caso di ext4 potresti voler usare l' discardopzione mount.

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 GB di memoria, è consigliabile individuare / tmp nella RAM.
  • Nessuna swappartizione Oggi è necessario solo per l'ibernazione, poiché le macchine moderne hanno una quantità piuttosto grande di RAM.
  • noatimee discardopzioni. Le informazioni sono qui .

scheduler

Considera di passare dallo scheduler predefinito, che nella maggior parte delle distro Linux è cfq (accodamento completamente corretto), allo scheduler noop o deadline per un SSD. L'uso dello scheduler noop, ad esempio, elabora semplicemente le richieste nell'ordine in cui sono state ricevute, senza tenere in considerazione la posizione fisica dei dati sul disco. Si ritiene che questa opzione sia vantaggiosa per gli SSD poiché i tempi di ricerca sono identici per tutti i settori sull'SSD.

Aggiungi seguente a /etc/rc.local :

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

Informazioni

uno due


2
Senza swap e con /tmpin RAM, è molto facile arrivare a una situazione di memoria/tmp insufficiente , poiché molti programmi utilizzano come spazio di archiviazione (ad esempio Brasero per la memorizzazione di immagini DVD).
organizzare il

5
Non proprio. tmpfsper impostazione predefinita è il 10% di RAM. La dimensione può essere regolata usando l' sizeopzione però.
Andrejs Cainikovs,

1
Brasero è un cattivo esempio, in primo luogo non dovrebbe farlo come spiega Lennart Poettering nel suo blog 0pointer.de/blog/projects/tmp.html
LiveWireBT,

8

4) abilita TRIM automatico

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


3

Non aggiungerei questa linea alla tua cartella fstab, var / tmp è destinata a sopravvivere al riavvio e ciò potrebbe causare problemi.

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

Quando configuro un nuovo sistema lascio tutta la cartella tmp commentata in questo modo se succede qualcosa, posso controllare i registri e le cose. Quindi, una volta installato il sistema principale, li annullerò come commento, 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 riscontro problemi con il mio sistema, li commento per poter controllare tutto anche dopo un riavvio o un riavvio forzato dopo un blocco.

Inoltre non hai bisogno di nodiratime, l'opzione noatime si occupa di entrambi da sola.

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

gksu gedit /etc/cron.daily/trim

Quindi aggiungi questo al file e salva (Se non hai una partizione separata / home su ssd, o hai altre parti che sono 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 eseguibile il file:

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

Puoi copiare e incollare da qui in modo che non ci siano errori, al profano sembra fuori di testa, non lo è.

Ho anche letto che lasciare il 10% del disco ssd non formattato può aiutare a prolungare la vita, che resta da vedere. Non ho letto molto 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 trovato una guida, dovresti dare un'occhiata QUI


L'idea è di aggiungere tutte le directory sotto regolare / var / log a /etc/rc.local? Cosa succede se non aggiungi le directory? Suppongo che potrebbero essere necessarie più directory da aggiungere se si installano alcuni nuovi pacchetti. /Etc/rc.local potrebbe essere aggiornato durante l'arresto per creare tutte le directory al prossimo avvio?
jarno,

In Ubuntu 14.04 e versioni successive c'è un cron job /etc/cron.weekly/fstrim impostato di default per tagliare i file system settimanalmente. Per quanto riguarda il 14.04, vedi qui . Ubuntu 15.10 utilizza /sbin/fstrim --all || truenello script fstrim.
jarno,

Almeno directory / var / log / installer ha una sottodirectory chiamata ubiquity-apt-clone in Xubuntu 15.10. Dovresti creare sottodirectory ricorsivamente?
jarno,

3

TRIM consente a un sistema operativo di informare un SSD quali blocchi di dati non sono più considerati in uso e possono essere cancellati internamente. Il taglio consente all'SSD di gestire l'overhead della garbage collection, che altrimenti rallenterebbe in modo significativo future operazioni di scrittura sui blocchi interessati, in anticipo. 1

In Ubuntu 14.04 è stata aggiunta una nuova funzionalità al pacchetto util-linux che taglia automaticamente gli SSD automaticamente, ma solo gli SSD Intel e Samsung hanno TRIM abilitato di default, perché alcuni SSD economici possono persino murarsi quando si esegue TRIM. 2 I contenuti di /etc/cron.weekly/fstrimUbuntu 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

1 https://en.wikipedia.org/wiki/Trim_%28computing%29
2 Come è abilitato Trim?



2

Ok "breve storia":

  1. Sì. È come un normale hdd. Ecco una buona panoramica.
  2. Alcuni extra speciali che tratterò.
  3. Abbastanza buono. Lo uso con un server.

Formatta come ext4durante l'installazione e crea un piccolo scambio ~ 1 GB. Dopo l'installazione, modifica fstab con sudo gedit /etc/fstabe aggiungi la seguente riga

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

Questo creerà un ramdrive per i tuoi file temporanei, che ridurrà l'invecchiamento. Aggiungi anche noatime,nodiratime,discardalla tua linea ext4 dopo le impostazioni predefinite. Ciò ridurrà anche l'usura e abiliterà la funzione TRIM. Salva e riavvia.


Molte grazie. Sono confuso perché ho sempre usato Linux dual boot e sarà la prima volta che installerò Linux su un nuovo SSD, quindi il processo e l'archiviazione sono entrambi nuovi per me. ma sembra che sia uguale all'installazione di Ubuntu su HDD, giusto?
Varun,

È lo stesso. All'installazione potrebbe essere richiesto di creare la tabella delle partizioni, ma questo è un clic.
gajdipajti,

Un'altra domanda, devo apportare qualsiasi modifica al BIOS per il mio laptop Dell. Installerò SSD e Ubuntu oggi?
Varun,

No, il bios moderno rileva automaticamente i dischi rigidi di tipo.
gajdipajti,

Grazie mille, molto utile, ti farà sapere cosa succede domani :)
Varun,

2

Ci sono alcune buone informazioni su come modificare e ottimizzare SSD per Ubuntu, Linux Mint da http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html potresti essere interessato a

Usa il precarico

Per installare il precarico su Ubuntu, Linux Mint o distribuzioni basate su debian

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

Disattiva lo scambio

Per modificare le impostazioni di swappiness:

$ su -
# nano /etc/sysctl.conf

E aggiungi questa riga nel file sysctl.conf.

vm.swappiness = 10

2

È richiesto UPS. Nel /etc/sysctl.conffile

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

Trova il demone del file di configurazione, di solito /etc/syslog.confили /etc/rsyslog.d/e tutti i percorsi del modulo /var/log/cambiano scrivendo un segno meno ("-") davanti ai modi. Prima di mail.err

/var/log/mail.err

Dopo
mail.err -/var/log/mail.err

usa FS btrfse usa l' -o ssdopzione

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


1

Come ottimizzare e ottimizzare SSD per Ubuntu, Linux Mint

Abilita TRIM

TRIM (il comando Trim indica a un sistema operativo quali blocchi SSD non vengono utilizzati e possono essere cancellati)

Eseguire prima il backup di fstab nel caso succeda qualcosa di sbagliato.

# cp /etc/fstab ~/fstab.bk

Modifica il file fstab

# nano /etc/fstab

Aggiungi scarta alle tue unità o partizioni sdd, dopo ext4

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

noatime e nodiratime sono opzioni di mount in linux per il file system linux. noatime disabilita gli aggiornamenti atime sul file system e nodiratime disabilita gli aggiornamenti atime sul sistema di directory. Aggiungendo noatime e nodiratime si ridurrà notevolmente il carico ssd significa un aumento delle prestazioni.

Modifica il file fstab

# nano /etc/fstab

Aggiungi noatime, nodiratime alle tue unità o partizioni sdd, dopo ext4

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

0

Suggerisco di posizionare solo quelle cose che vengono lette al momento dell'avvio sull'unità SSD, forse applicazioni che richiedono molto tempo per il caricamento. Dati e registri e altre cose non critiche che vorrei localizzare su un normale HDD. Inoltre, è possibile configurare Ubuntu in modo da caricare solo un grande initramfs da SSD al momento dell'avvio e non riscrivere le modifiche a ssd. Questo ha il vantaggio che le modifiche a questa partizione non sono persistenti, il che è come una protezione per il tuo sistema di avvio. Pertanto, ovviamente, avrai bisogno di molta più RAM.

Vorrei ad esempio posizionare le partizioni /, / etc, / usr, / boot, / lib 32/64 su SSD mentre sth piace

/ opt, / bin, / sbin, / root, / home e persino swap (aumenta la RAM !!!) su HDD

Wikipedia dice:

Il kernel Linux supporta la funzione TRIM a partire dalla versione 2.6.33. Il file system ext4 è supportato quando montato utilizzando il parametro "discard". Le utilità disco più recenti (e quindi i software di installazione che le utilizzano) applicano anche il corretto allineamento delle partizioni.

Per i backup ci sono molti modi, il più semplice dei quali è (r) sync più cron job.


Sai a cosa servono le posizioni? Tutte le posizioni menzionate ad eccezione di /root, /homee lo swap dovrebbero essere messe sull'SSD per la velocità perché è principalmente di sola lettura. Per un vantaggio in termini di velocità, indossare anche /varl'SSD.
Lekensteyn,

Dipende da cosa intendi accelerare e da quanto è grande il tuo SSD. 120 GB dovrebbero essere sufficienti, va bene, ma con SSD più piccoli si raggiungono facilmente i bordi.
Michael K,

La /partizione per Kubuntu Oneiric richiede 4,5 GB sul mio SSD. 20 GB sono sufficienti per /meno /home. Gli sforzi per modificare il layout del filesystem, diffondendolo su più partizioni non ne valgono la pena.
Lekensteyn,
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.