¿Cómo optimizo el sistema operativo para SSD?

146

¿Qué pasos se deben tomar antes / durante / después de la instalación de Ubuntu en una unidad de estado sólido para optimizar el rendimiento y garantizar la máxima durabilidad de la unidad?

Lars Haugseth
fuente

Respuestas:

108

He utilizado con éxito varias técnicas diferentes para mejorar la forma en que Ubuntu usa el dispositivo de almacenamiento, ya sea en estado sólido o en una unidad tradicional.

Para los SSD, también busca minimizar la cantidad de veces que se escribe la unidad, ya que las lecturas no deberían agregar desgaste a la unidad.

1) Administrar el archivo de intercambio

Si no hiberna su computadora y tiene suficiente memoria RAM para ejecutar todas sus aplicaciones, entonces, en teoría, no necesita una partición de intercambio.

Si tiene una combinación de SSD y discos duros, coloque su partición de intercambio solo en los discos duros.

2) Sin escrituras para marcas de tiempo de lectura (adecuado para SSD y discos duros)

Montar sus particiones con las opciones noatime y nodiratime detendrá las escrituras de marcas de tiempo cuando lea archivos y carpetas. Estas escrituras de marca de tiempo generalmente no son necesarias a menos que use un cliente de servidor de correo local como mutt. La razón por la que generalmente es una mala idea, es porque cada lectura producirá una escritura al actualizar las marcas de tiempo. Esto disminuye la vida de la SSD.

Edite su archivo de configuración / etc / fstab (con cuidado: realice una copia de seguridad para asegurarse de que romper la configuración de fstab puede evitar que su sistema funcione):

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

Edite las opciones de montaje para sus particiones agregando el texto noatime y nodiratime a las líneas que definen su raíz (/) y otras particiones si las tiene (/ home) - Nota: si tiene una partición / home, comience con eso simplemente cambiando esa partición si le preocupa romper algo

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

Deberá reiniciar su máquina antes de que estos cambios surtan efecto

3) Minimizar las escrituras desde el sistema operativo y las aplicaciones

Suponiendo que no está ejecutando un servidor de producto de misión crítica, la mayoría de las personas no miran los registros si algo sale mal (especialmente porque los errores graves son raros para la mayoría de los usuarios de Ubuntu). Por lo tanto, puede configurar Ubuntu para que todos los registros se escriban en la memoria RAM en lugar de en la SSD.

Nota: solo realice los siguientes cambios cuando haya instalado todo el software que va a utilizar (especialmente cosas como el servidor web Apache), de lo contrario, puede experimentar algunos problemas con la falta de directorios en / var / log

Para conocer los antecedentes de este enfoque, consulte la prolongación de la vida útil de su unidad flash en ubuntu-eee.com

Abra / etc / fstab con un editor (suponiendo que haya realizado una copia de seguridad del archivo / etc / fstab)

gksudo gedit /etc/fstab

Agregue las siguientes líneas al final del archivo fstab y guarde:

# 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

Deberá reiniciar su máquina antes de que estos cambios surtan efecto

Ver también:

jr0cket
fuente
77
Sobre el último bit para registros y demás, las tmpfslíneas se comentan, entonces, ¿por qué agregar esas líneas haría alguna diferencia? ¿Necesitamos agregarlo sin comentar?
Oxwivi
8
Puedo entender si esto está destinado a mejorar la velocidad, pero la mayor parte de lo que escribiste parece mejorar la vida útil de SSD. ¿No es el caso de que con los SSD modernos estas mejoras no tienen sentido? ¡Y a expensas de más uso de RAM! (por ejemplo, vea el enlace en esta otra respuesta )
Chan-Ho Suh
77
No hay necesidad de 2). relatime hace el trabajo de prevenir las escrituras muy bien y ha estado activo por defecto desde el kernel 2.6.30 .
Mihai Capotă
3
Solo para agregar al comentario de @ MihaiCapotă hay una respuesta de falla del servidor con más detalles sobre por qué no se necesita noatimeime.
Cas
1
Dicen que noatime implica nodiratime aquí , por lo que es suficiente agregar la opción anterior.
jarno
92

SSD Life

En general, no me molestaría: las preocupaciones sobre la vida del SSD son exageradas. Puede leer este artículo detallado sobre por qué realmente no debería preocuparse . En resumen, los circuitos dentro de los SSD modernos administran la nivelación del desgaste por ti, y saben cómo hacerlo mucho mejor que tú.

En el artículo hay un cálculo de la vida útil de un SSD que está recibiendo escrituras a una velocidad continua de 80M / s. La vida es de 51 años . Eso se basa en la tecnología de 2007: la vida útil del SSD será más larga ahora. Y casi seguro que no escribe en su SSD a 80M / s las 24 horas del día.

Rendimiento SSD

Sin embargo, la degradación del rendimiento con el tiempo puede ser un problema, y TRIM es la solución. Hay dos opciones

  • TRIM automático / en línea, también conocido como descarte
  • Recorte manual

Tiene que habilitar el ajuste automático usted mismo . (Básicamente, agrega la discardopción a sus opciones de montaje, siempre que esté usando ext4.) He encontrado una publicación de blog que informa que la opción de descarte ralentiza su sistema al eliminar archivos .

Ocasionalmente puede hacerlo manualmente (o en un trabajo cron) usando fstrim . Si solo tiene una partición, todo lo que necesita hacer es:

sudo fstrim /

Tenga en cuenta que fstrim solo está disponible en 11.10 y posteriores. Para sistemas más antiguos, necesitará el wiper.shscript. Encontré el script en /usr/share/doc/hdparm/contrib/wiper.sh.gzmi sistema.

Si se está preguntando, el problema que TRIM resuelve, como lo describe Wikipedia , es:

Los SSD almacenan datos en celdas de memoria flash que se agrupan en páginas, con las páginas (típicamente 4 kB cada una) agrupadas en bloques (típicamente 128 páginas por bloque, totalizando 512 kB). Las celdas de memoria flash NAND solo se pueden escribir directamente cuando están vacías. Si se considera que contienen datos, primero se debe borrar el contenido antes de que una operación de escritura se pueda realizar de manera confiable. En los SSD, se puede realizar una operación de escritura en el nivel de página, pero debido a limitaciones de hardware, los comandos de borrado siempre afectan a bloques enteros. Como resultado, la escritura de datos en medios SSD es muy rápida siempre que se puedan usar páginas vacías, pero se ralentiza considerablemente una vez que se deben sobrescribir las páginas previamente escritas. Como es necesario borrar las celdas de la página antes de que se pueda volver a escribir, pero solo se pueden borrar bloques completos, una sobrescritura iniciará un ciclo de lectura-borrado-modificación-escritura: el contenido de todo el bloque debe almacenarse en el caché antes de que se borre efectivamente en el medio flash, luego la página sobrescrita se modifica en el caché para que el bloque en caché esté actualizado, y solo entonces se escribe todo el bloque (con la página actualizada) en el medio flash . Este fenómeno se conoce como amplificación de escritura.

Hamish Downer
fuente
8
Desearía poder votar varias veces. ESTA sería una de esas respuestas. Ese enlace ha resuelto una preocupación que he tenido durante mucho tiempo. Muchas gracias Hamish.
Luis Alvarado
Interesante artículo de storagesearch.com. ¡Ojalá le diese una cita! Entonces, ¿la respuesta anterior significa que los propietarios de SSD no necesitan molestarse con las sugerencias en la primera respuesta, con la excepción de TRIM? No tengo mucha necesidad de tiempos de acceso a los archivos, pero con 2G de memoria, tener una partición de intercambio aún podría ser útil al ejecutar algún software de edición de fotos junto con varios otros programas intensivos en memoria como Chrome.
Lawrence I. Siden
@lsiden: el artículo menciona "Más tarde: en mayo de 2008" a mitad de camino. Y tiene razón en que no debe preocuparse por todas las demás cosas en el primer artículo. Simplemente habilite TRIM y disfrute de la velocidad :)
Hamish Downer
2
El artículo se refiere a los SSD de grado empresarial: utiliza 2 millones de ciclos de resistencia de escritura. Los SSD de consumo tienen aproximadamente 3000-5000 ciclos. Un SSD de 128 GB con 3000 ciclos proporciona 57 días de escritura continua de 80 MB / s.
LeartS
1
En Ubuntu 14.10 en adelante, TRIMming ocurre automáticamente todas las semanas en todos los SSD compatibles con fstrim. árbitro.
KrisWebDev
20

Hay varios puntos:

Alineación:

Lo que a menudo se señala es la alineación correcta de la partición. Esto debería ser igual al tamaño de bloque de la SSD. Juega seguro y alinea tus particiones con los límites de MiB. Tenga en cuenta que no puede hacer esto con la herramienta de partición del instalador de Ubuntu (que usa MB, no MiB), pero puede iniciar el CD en vivo, usar Gparted (que usa MiB), luego hacer clic en Instalar para usar las particiones que configuró.

El planificador correcto:

Un punto importante es el planificador que debería ser noop. Puede configurar este programador mediante el parámetro kernel elevator=noopo mediante una entrada echo noop > /sys/block/sda/queue/scheduleren su rc.local.

Banderas de montaje:

Yo recomendaría noatimeydiscard

Tmpfs

Poner tmp en un ramdisk puede aumentar el tiempo de vida del ssd. Para usar esto, ponga la siguiente línea en su fstab:none /tmp tmpfs defaults 0 0

En general, si desea profundizar en este tema, recomendaría este excelente artículo wiki.

Sebastian Rühl
fuente
16

Curso de ajuste rápido para su SSD en Ubuntu:

sistema de archivos

Arch wiki menciona algunas opciones preferibles para el sistema de archivos SSD: una de ellas es inestable, otras son ext *. Supongo que ext4 es una de las mejores elecciones.
Nota: en caso de ext4, es posible que desee utilizar la discardopción de montaje.

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

Algunas cosas importantes aquí son:

  • Para sistemas con> = 2 gigas de memoria, es deseable ubicar / tmp en la RAM.
  • Sin swappartición Hoy en día solo se necesita para la hibernación, ya que las máquinas modernas tienen una cantidad bastante grande de RAM.
  • noatimey discardopciones La información está aquí .

planificador

Considere cambiar del planificador predeterminado, que en la mayoría de las distribuciones de Linux es cfq (colas completamente justas), al planificador noop o de fecha límite para un SSD. El uso del planificador noop, por ejemplo, simplemente procesa las solicitudes en el orden en que se reciben, sin tener en cuenta dónde residen físicamente los datos en el disco. Se cree que esta opción es ventajosa para los SSD, ya que los tiempos de búsqueda son idénticos para todos los sectores en el SSD.

Agregue lo siguiente a /etc/rc.local :

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

informacion

uno dos

Andrejs Cainikovs
fuente
2
Sin intercambio , y con /tmpRAM, es muy fácil llegar a una situación de falta de memoria , ya que muchos programas se usan /tmpcomo espacio de almacenamiento (por ejemplo, Brasero para almacenar imágenes de DVD).
organizar el
55
Realmente no. tmpfspor defecto es el 10% de la RAM. Sin sizeembargo, el tamaño se puede ajustar usando la opción.
Andrejs Cainikovs
1
Brasero es un mal ejemplo, no debería hacerlo en primer lugar como explica Lennart Poettering en su blog 0pointer.de/blog/projects/tmp.html
LiveWireBT
8

4) habilitar el ajuste automático

Si su SSD lo admite, también debe habilitar TRIM automático (como se describe aquí )

Uli
fuente
3

No agregaría esta línea a su carpeta fstab, var / tmp está destinada a sobrevivir reinicios, y eso podría causarle problemas.

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

Cuando configuro un nuevo sistema, dejo toda la carpeta tmp comentada de esta manera, si sucede algo, puedo verificar los registros y demás. Luego, una vez que tenga la configuración principal del sistema, los descomentaré, pero nunca agrego la línea anterior, esto es lo que 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

Y si tengo algún problema con mi sistema, los comento para poder verificar todo incluso después de un reinicio o reinicio forzado después de un bloqueo.

Además, no necesita nodiratime, la opción noatime se ocupa de ambos por sí misma.

En cuanto a TRIM, si su hw / sw lo admite, es imprescindible, no uso descartar en fstab. Creo un cron diario, porque mi PC siempre está encendida, al hacer esto:

gksu gedit /etc/cron.daily/trim

Luego agregue esto al archivo y guárdelo (si no tiene una partición separada / de inicio en ssd, o tiene otras partes que están en ssd, debe tener la idea de cómo modificar esto:

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

Luego haga que el archivo sea ejecutable:

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

También edito mi rc.local así:

gksu gedit /etc/rc.local

Agregue esto arriba de "salir 0" y debajo del último #:

# 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

Puede copiar y pegar desde aquí para que no haya errores, para el lego se ve fuera de control, no lo es.

También he leído que dejar el 10% de su unidad ssd sin formato puede ayudar a extender la vida, eso está por verse. No he leído mucho sobre esto, así que no puedo responder si tiene sentido hacerlo.

Esta es la mejor guía completa, no pasó por Google por un día y luego ideó una guía, debe consultarla AQUÍ

JohnRB
fuente
¿Es la idea agregar todos los directorios en regular / var / log a /etc/rc.local? ¿Qué sucede si no agrega los directorios? Supongo que puede haber más directorios necesarios para agregar, si instala algunos paquetes nuevos. ¿Podría /etc/rc.local actualizarse durante el apagado para crear todos los directorios en el próximo arranque?
jarno
En ubuntu 14.04 y posteriores hay un trabajo cron /etc/cron.weekly/fstrim configurado de forma predeterminada para recortar los sistemas de archivos semanalmente. En cuanto a 14.04, ver aquí . Ubuntu 15.10 se usa /sbin/fstrim --all || trueen el script fstrim.
jarno
Al menos el directorio / var / log / installer tiene un subdirectorio llamado ubiquity-apt-clone en Xubuntu 15.10. ¿Debería crear subdirectorios de forma recursiva?
jarno
3

TRIM permite que un sistema operativo informe a un SSD qué bloques de datos ya no se consideran en uso y pueden borrarse internamente. El recorte permite que el SSD maneje la sobrecarga de recolección de basura, lo que de otro modo reduciría significativamente las futuras operaciones de escritura en los bloques involucrados, de antemano. 1

En Ubuntu 14.04, se ha agregado una nueva característica al paquete util-linux que recorta regularmente las SSD de forma automática, pero solo las SSD de Intel y Samsung tienen TRIM habilitado de forma predeterminada, porque algunas SSD baratas pueden incluso bloquearse al ejecutar TRIM. 2 Los contenidos de /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 ¿Cómo se habilita Trim?

karel
fuente
2

Está claro que /var/tmpno debería estar en tmpfs ya que, por definición, su contenido debe conservarse más allá de los reinicios:

usuario95602
fuente
2

Ok "larga historia corta":

  1. Si. Es como un disco duro normal. Aquí hay una buena descripción general.
  2. Algunos extras especiales que cubriré.
  3. Bastante bien. Lo uso con un servidor.

Formatee como ext4durante la instalación y cree un pequeño intercambio ~ 1 GB. Después de instalar, edite fstab con sudo gedit /etc/fstaby agregue la siguiente línea

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

Esto creará una memoria RAM para sus archivos temporales, lo que reducirá el envejecimiento. También agregue noatime,nodiratime,discarda su línea ext4 después de los valores predeterminados. Esto también reducirá el desgaste y habilitará la función TRIM. Guardar y reiniciar.

gajdipajti
fuente
Muchas gracias. Estoy confundido porque siempre he usado Linux de arranque dual y será la primera vez que instale Linux en un SSD nuevo, por lo que el proceso y el almacenamiento son nuevos para mí. pero parece que es lo mismo que instalar Ubuntu en HDD, ¿verdad?
Varun
Es lo mismo. En la instalación, se le puede pedir que cree la tabla de particiones, pero eso es un clic.
gajdipajti
Otra pregunta, ¿necesito hacer algún cambio en el BIOS de mi computadora portátil Dell? ¿Voy a instalar SSD y Ubuntu hoy?
Varun
No, la BIOS moderna autodetecta el tipo de discos duros.
gajdipajti
Muchas gracias, muy serviciales, les haré saber lo que pasa mañana :)
Varun
2

Hay buena información Cómo ajustar y optimizar SSD para Ubuntu, Linux Mint desde http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html que podría estar interesado en

Usar precarga

Para instalar preload en Ubuntu, Linux Mint o distribuciones basadas en Debian

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

Apaga tu intercambio

Para cambiar la configuración de intercambio:

$ su -
# nano /etc/sysctl.conf

Y agregue esta línea al archivo sysctl.conf.

vm.swappiness = 10
Sue Russell
fuente
2

Se requiere UPS. En el /etc/sysctl.confarchivo

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

Busque el daemon del archivo de configuración, generalmente /etc/syslog.confили, /etc/rsyslog.d/y todas las rutas del formulario /var/log/cambian escribiendo un signo menos ("-") delante de las formas. Antes de mail.err

/var/log/mail.err

Después
mail.err -/var/log/mail.err

usa FS btrfsy usa la -o ssdopción

Más http://vasilisc.com/speedup_ubuntu_eng#speedup_fs

Василий Алексеенко
fuente
1

Cómo ajustar y optimizar SSD para Ubuntu, Linux Mint

Habilitar TRIM

TRIM (el comando Trim le permite a un sistema operativo saber qué bloques SSD no se están utilizando y se pueden borrar)

Haga una copia de seguridad de fstab primero en caso de que ocurra algo incorrecto.

# cp /etc/fstab ~/fstab.bk

Editar archivo fstab

# nano /etc/fstab

Agregue el descarte a sus unidades o particiones ssd, después de ext4

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

noatime y nodiratime son opciones de montaje en linux para el sistema de archivos de linux. noatime deshabilita las actualizaciones de atime en el sistema de archivos, y nodiratime deshabilita las actualizaciones de atime en el sistema de directorio. Al agregar noatime y nodiratime se reducirá en gran medida la carga ssd significa ganancias de rendimiento.

Editar archivo fstab

# nano /etc/fstab

Agregue noatime, nodiratime a sus unidades o particiones ssd, después de ext4

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

fuente
0

Sugiero colocar solo aquellas cosas que se leen en el momento del arranque en el SSD, cualquier aplicación que requiera mucho tiempo para cargar. Datos y registros y otras cosas no críticas que localizaría en un HDD normal. También puede configurar su ubuntu para cargar solo un gran initramfs de SSD en el momento del arranque y no escribir cambios en ssd. Esto tiene la ventaja de que los cambios en esta partición no son persistentes, lo que es algo así como una protección para su sistema de arranque. Por lo tanto, necesitaría mucha más RAM, por supuesto.

Por ejemplo, colocaría las particiones /, / etc, / usr, / boot, / lib 32/64 en SSD mientras algo así

/ opt, / bin, / sbin, / root, / home e incluso intercambiar (aumentar RAM !!!) en HDD

Wikipedia dice:

El kernel de Linux admite la función TRIM a partir de la versión 2.6.33. El sistema de archivos ext4 es compatible cuando se monta utilizando el parámetro "descartar". Las utilidades de disco más recientes (y, por lo tanto, el software de instalación que las utiliza) también aplican una alineación de partición adecuada.

Para las copias de seguridad hay muchas formas, la más simple de las cuales es (r) sincronización más trabajo cron.

Michael K
fuente
¿Sabes para qué se utilizan cada una de las ubicaciones? Todas las ubicaciones mencionadas, excepto /root, /homey el intercambio deben colocarse en el SSD para la velocidad porque es principalmente de solo lectura. Para obtener un beneficio de velocidad, también coloque /varel SSD.
Lekensteyn
Depende de lo que pretendas acelerar y qué tan grande sea tu SSD. 120 GB deberían ser suficientes, está bien, pero con un SSD más pequeño se alcanzan los límites fácilmente.
Michael K
La /partición para Kubuntu Oneiric toma 4.5GB en mi SSD. 20 GB es suficiente para /menos /home. Los esfuerzos para ajustar el diseño del sistema de archivos, distribuirlo en varias particiones no valen la pena.
Lekensteyn