¿Qué sistema de archivos de Linux funciona mejor con SSD?

119

De wiki:

La función vital TRIM es compatible con el sistema operativo Linux a partir del kernel 2.6.33 (disponible a principios de 2010). Sin embargo, el soporte entre varios sistemas de archivos sigue siendo inconsistente o no está presente. La alineación adecuada de la partición tampoco se realiza mediante el software de instalación.

Entonces, ¿qué sistema de archivos funciona mejor para SSD y admite la alineación de particiones TRIM + durante la instalación y está disponible en Ubuntu?

hbt
fuente

Respuestas:

89

Sistema de archivos EXT4 + TRIM:

  • EXT4 con TRIM mejora el rendimiento al reducir los ciclos de escritura innecesarios en la unidad SSD, ya que limitan los ciclos de escritura y reescritura.
  • Ubuntu y algunos otros sabores de Linux admiten EXT 4 con TRIM listo para usar.

Partición SWAP:

  • Asegúrese de no tener un espacio SWAP en el SSD, nuevamente para reducir los ciclos de escritura.
  • Si tiene una unidad mecánica, debe crear un espacio SWAP en la unidad mecánica y evitar tenerla en el SSD.

Alineación de partición:

  • La partición debe comenzar en un límite limpio de 1 MB para que el tamaño del bloque del Sistema de archivos se alinee con el tamaño del bloque del SSD.

Por lo tanto, use EXT4 + TRIM con SWAP en un disco duro mecánico o sin SWAP en SSD.

Lo anterior se puede implementar haciendo referencia a la Fuente: Cómo maximizar el rendimiento de SSD .

aliasgar
fuente
GPT es el método moderno que usa gdisk& grub 2.0.x, (supongo que alguien lo mencionó a continuación en una respuesta) y MBR es el método heredado que usa el viejo grub 0.9.7y fdisk... puede encontrar más aquí: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar
77
No es necesario especificar nodiratimecuándo también se especifica noatime. De acuerdo, se ve genial y avanzado para otros nerds, pero dado que noatimedeshabilita atime en inodes, y los directorios también son inodos, es como decir "lávese las manos y lávese los pulgares también". :)
Redsandro
Por experiencia, puedo decir que ningún planificador ("noop") funciona más rápido que la fecha límite.
drumfire 01 de
55
No, " las particiones de intercambio de Linux realizan de manera predeterminada operaciones TRIM cuando el dispositivo de bloque subyacente admite TRIM, con la posibilidad de desactivarlas o seleccionar entre operaciones TRIM de una sola vez o continuas". por lo tanto, la partición de intercambio debe colocarse en un SSD para aprovechar el tiempo de acceso rápido, que requerirá mucho tiempo para cada intercambio de página
phuclv
2
@aliasgar ¿Es F2FS una buena opción frente a ext4?
SebMa
67

Respuesta corta

  • Elija ext4 , y móntelo con la discardopción de soporte TRIM , o use FITRIM (ver más abajo). Utilice también la noatimeopción si teme "desgaste de SSD".

  • No cambie su planificador de E / S (CFQ) predeterminado en servidores de múltiples aplicaciones , ya que proporciona imparcialidad entre los procesos y tiene soporte SSD automático. Sin embargo, use Deadline en los escritorios para obtener una mejor capacidad de respuesta bajo carga.

  • Para garantizar fácilmente una alineación de datos adecuada, el sector inicial de cada partición debe ser un múltiplo de 2048 (= 1 MiB). Puedes usar fdisk -cu /dev/sdXpara crearlos. En distribuciones recientes, se encargará automáticamente de esto.

  • Piénselo dos veces antes de usar el intercambio en SSD. Probablemente será mucho más rápido en comparación con el intercambio en HDD, pero también desgastará el disco más rápido (lo que puede no ser relevante, ver más abajo).

Respuesta larga

  • Sistemas de archivos:

Ext4 es el sistema de archivos de Linux más común (bien mantenido). Proporciona un buen rendimiento con SSD y admite la función TRIM (y FITRIM) para mantener un buen rendimiento de SSD a lo largo del tiempo (esto borra los bloques de memoria no utilizados para un acceso de escritura más rápido). NILFS está especialmente diseñado para unidades de memoria flash, pero en realidad no funciona mejor que ext4 en los puntos de referencia. Btrfs todavía se considera experimental (y realmente no funcionan mejor , ya sea ).

  • Rendimiento SSD y TRIM:

La función TRIM borra los bloques SSD que ya no son utilizados por el sistema de archivos. Esto optimizará el rendimiento de escritura a largo plazo y se recomienda en SSD debido a su diseño. Significa que el sistema de archivos debe poder informarle a la unidad sobre esos bloques. La discardopción de montaje de ext4 emitirá dichos comandos TRIM cuando se liberen los bloques del sistema de archivos. Este es un descarte en línea .

Sin embargo, este comportamiento implica una pequeña sobrecarga de rendimiento. Desde Linux 2.6.37, puede evitar usar discardy optar por descartar lotes ocasionales con FITRIM en su lugar (por ejemplo, desde el crontab). La fstrimutilidad hace esto (en línea), así como la -E discardopción de fsck.ext4. Sin embargo, necesitará la versión "reciente" de estas herramientas.

  • Desgaste SSD:

Es posible que desee limitar las escrituras en su unidad, ya que SSD tiene una vida útil limitada a este respecto. Sin embargo , no se preocupe demasiado , el peor SSD de 128 GB de hoy puede admitir al menos 20 GB de datos escritos por día durante más de 5 años (1000 ciclos de escritura por celda). Los mejores (y también los más grandes) pueden durar mucho más tiempo: es muy probable que lo haya reemplazado para entonces.

Si desea usar el intercambio en SSD, el núcleo notará un disco no rotativo y aleatorizará el uso del intercambio (nivelación de desgaste a nivel del núcleo): verá un SS(Estado sólido) en el mensaje del núcleo cuando el intercambio esté habilitado:

Añadiendo 2097148k swap en / dev / sda1. Prioridad: -1 extensiones: 1 a través de: 2097148k SS

  • Programadores de E / S:

Además, estoy de acuerdo con la mayoría de las respuestas de aliasgar (incluso si la mayor parte ha sido copiada ilegalmente de este sitio web ), pero debo estar en parte en desacuerdo con la parte del planificador . Por defecto, el planificador de fecha límite está optimizado para discos rotativos a medida que implementa el algoritmo de ascensor . Entonces, aclaremos esta parte.

Respuesta larga en planificadores

A partir del kernel 2.6.29, los discos SSD se detectan automáticamente y puede verificar esto con:

cat /sys/block/sda/queue/rotational

Debe obtener 1discos duros y 0un SSD.

Ahora, el planificador CFQ puede adaptar su comportamiento en función de esta información. Desde linux 3.1, el cfq-iosched.txtarchivo de documentación del núcleo dice :

CFQ tiene algunas optimizaciones para SSD y si detecta un medio no rotativo que puede admitir una mayor profundidad de cola (múltiples solicitudes en vuelo a la vez), [...].

Además, el planificador Deadline intenta limitar los movimientos de cabeza desordenados en los discos rotativos, en función del número de sector. Citando el kernel doc deadline-iosched.txt, fifo_batch descripción de la opción :

Las solicitudes se agrupan en `` lotes '' de una dirección de datos particular (lectura o escritura) que se atiende en orden creciente del sector.

Sin embargo, ajustar este parámetro a 1 cuando se usa un SSD puede ser interesante:

Este parámetro ajusta el equilibrio entre la latencia por solicitud y el rendimiento agregado. Cuando la baja latencia es la principal preocupación, más pequeño es mejor (donde un valor de 1 produce un comportamiento de orden de llegada). El aumento de fifo_batch generalmente mejora el rendimiento, a costa de la variación de latencia.

Algunos puntos de referencia sugieren que hay poca diferencia en el rendimiento entre los diferentes planificadores. Entonces, ¿por qué no recomendar la justicia ? cuando CFQ rara vez es malo en el banquillo . Sin embargo, en las configuraciones de escritorio, generalmente experimentará una mejor capacidad de respuesta utilizando Deadline bajo carga, debido a su diseño (probablemente a un costo de rendimiento más bajo).

Dicho esto, un mejor punto de referencia trataría de usar Deadline con fifo_batch=1.

Para usar Deadline en SSD de forma predeterminada, puede crear un archivo, por ejemplo /etc/udev.d/99-ssd.rules:

# 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"
Totor
fuente
¿Qué quiere decir con que la alineación de partición se ocupa automáticamente en las distribuciones recientes? ¿Se aplica también cuando usa particiones manuales durante, por ejemplo, la instalación de ubuntu o cuando hace particiones por gparted?
jarno
2
@jarno en las distribuciones más recientes (desde hace varios años), las herramientas de partición, desde fdisk en adelante a través de las cosas gráficas, tienden a la configuración predeterminada automática para crear alineaciones de partición en múltiplos de 1Mb desde el inicio del dispositivo. Esto se alinea de manera preventiva con 512bytes, 4k, 8k y medio billón de otros tamaños de bloque / grupo que son de naturaleza 2 ^ n. Hace que sea casi imposible desalinear una partición a menos que haga un esfuerzo significativo para hacerlo.
killermist
13

El artículo de Archlinux Solid State Drives dice en la sección Elección del sistema de archivos :

Existen muchas opciones para los sistemas de archivos, incluidos Ext2 / 3/4, Btrfs, etc.

Btrfs El
soporte de Btrfs se ha incluido con la versión mainline 2.6.29 del kernel de Linux. Algunos piensan que no es lo suficientemente maduro para el uso en producción, mientras que también existen los primeros en adoptar este potencial sucesor de ext4. Se alienta a los usuarios a leer el artículo de Btrfs para obtener más información.

Ext4
Ext4 es otro sistema de archivos que admite SSD. Se considera estable desde 2.6.28 y es lo suficientemente maduro para el uso diario. Al contrario de Btrfs, ext4 no detecta automáticamente la naturaleza del disco; los usuarios deben habilitar explícitamente el soporte del comando TRIM utilizando la opción de montaje de descarte en fstab (o con tune2fs -o descartar / dev / sdaX).

Tanto Btrfs como Ext4 cumplen los dos requisitos principales para el uso eficiente de la SSD:

  • El sistema de archivos debe poder emitir comandos ATA_TRIM al SSD subyacente
  • El sistema de archivos no debe realizar escrituras innecesarias en el disco

Para el rendimiento, hay otros dos requisitos:

  • Las particiones deben alinearse con el tamaño de bloque del SSD
  • TRIM debe habilitarse explícitamente para cada partición formateada Ext4

El primero es hoy en día automático con la mayoría de los instaladores de Linux. fdisk también creará particiones en el borde de 1024 KB si se inicia con las banderas "-cu".

El segundo es automático para Btrfs, pero para Ext4 esto se hace manualmente agregando "descartar" a la lista de opciones de montaje para cada partición Ext4 en el archivo "/ etc / fstab". Para más detalles vea este tutorial .

En mi opinión, esto requirió un pequeño retoque con fstab para Ext4, no hay razón para no usar este sistema de archivos maduro y excelente.

harrymc
fuente