it-swarm.it

Come posso ottimizzare il sistema operativo per gli SSD?

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à?

146
Lars Haugseth

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 ampia 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)

Montare le tue partizioni con le opzioni noatime e nodiratime interromperà la scrittura del timestamp quando leggi 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 essere sicuro 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/home partizione, inizia semplicemente 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) Riduzione al minimo delle 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: apporta le seguenti modifiche solo dopo aver installato tutto il software che intendi utilizzare (in particolare cose come il web server Apache), altrimenti potresti riscontrare alcuni 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 che sia stato 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:

108
jr0cket

Vita SSD

Generalmente non mi preoccuperei: le preoccupazioni per la vita dell'SSD sono esagerate. Puoi leggere questo articolo dettagliato sul perché davvero non dovresti 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 è 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 peggioramento 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 abilita il TRIM automatico da solo . (Fondamentalmente aggiungi l'opzione discard alle opzioni di montaggio, a condizione che tu stia usando ext4.) Ho trovato un post sul blog che riportava l'opzione di eliminazione rallenta il sistema quando si eliminano i 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 meno recenti è necessario lo script wiper.sh. Ho trovato lo script 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 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 nuovamente scritta, ma è possibile cancellare solo interi blocchi, una sovrascrittura avvia un ciclo di lettura-cancellazione-modifica-scrittura: il i contenuti dell'intero blocco devono essere archiviati nella cache prima di essere effettivamente cancellati 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 ) scritto sul supporto flash . Questo fenomeno è noto come amplificazione in scrittura.

92
Hamish Downer

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 è scheduler che dovrebbe essere noop. È possibile impostare questo programmatore tramite kernelparameter elevator=noop o tramite una voce echo noop > /sys/block/sda/queue/scheduler in you rc.local.

mountflags:

Vorrei raccomandare noatime e discard

Tmpfs

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

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

20
Sebastian Rühl

Corso di sintonizzazione rapida per il tuo SSD su Ubuntu:

file system

Arch wiki menzioni poche opzioni preferibili per il file system SSD - uno di questi è instabile, altri sono ext *. Presumo ext4 è una delle migliori scelte.
Nota: in caso di ext4 potresti voler usare l'opzione di montaggio 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

Poche cose importanti qui sono:

  • Per i sistemi con> = 2 GB di memoria, è consigliabile individuare/tmp in RAM.
  • Nessuna partizione swap. Oggi è necessario solo per l'ibernazione, poiché le macchine moderne hanno una quantità piuttosto grande di RAM.
  • noatime e discard opzioni. 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

info

nodue

16

4) abilita TRIM automatico

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

8
Uli

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 per impostazione predefinita , perché alcuni SSD economici possono persino murarsi durante l'esecuzione di TRIM.2 I contenuti 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 è abilitato Trim?

3
karel

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

3
JohnRB

Ci sono alcune buone informazioni su come ottimizzare 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
Sue Russell

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

2
user95602

Ok "breve storia":

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

Formatta come ext4 durante l'installazione e crea un piccolo scambio ~ 1 GB. Dopo l'installazione, modifica fstab con Sudo gedit /etc/fstab e 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,discard alla tua linea ext4 dopo i valori predefiniti. Ciò ridurrà anche l'usura e abiliterà la funzione TRIM. Salva e riavvia.

2
gajdipajti

È richiesto UPS. Nel file /etc/sysctl.conf

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

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

/var/log/mail.err

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

usa FS btrfs e usa l'opzione -o ssd

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

Come modificare 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
1
user223973

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 avresti bisogno di molto di più RAM ovviamente.

Vorrei ad es. posiziona 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.

0
Michael K