Quel système de fichiers linux fonctionne le mieux avec SSD


119

De wiki:

La fonction vitale TRIM est prise en charge par le système d’exploitation Linux à partir du noyau 2.6.33 (disponible au début de 2010). Cependant, la prise en charge entre différents systèmes de fichiers est toujours incohérente ou inexistante. L'alignement correct des partitions n'est également pas effectué par le logiciel d'installation.

Ainsi, quel système de fichiers fonctionne le mieux pour les disques SSD et prend en charge l’alignement des partitions TRIM + pendant l’installation et est disponible sur Ubuntu?

Réponses:


89

Système de fichiers EXT4 + TRIM:

  • EXT4 avec TRIM améliore les performances en réduisant les cycles d'écriture inutiles sur le lecteur SSD car ils limitent les cycles d'écriture / réécriture.
  • Ubuntu et d'autres versions de Linux prennent en charge EXT 4 avec TRIM immédiatement.

Partition SWAP:

  • Assurez-vous de ne pas avoir d'espace SWAP sur le SSD, encore une fois pour réduire les cycles d'écriture.
  • Si vous avez un lecteur mécanique, vous devez créer un espace SWAP sur le lecteur mécanique et éviter de le placer sur le SSD.

Alignement de partition:

  • La partition doit démarrer sur une limite propre de 1 Mo afin que la taille de bloc du système de fichiers s'aligne sur la taille de bloc du disque SSD.

Utilisez donc EXT4 + TRIM avec un SWAP sur un disque dur mécanique ou sans SWAP sur SSD.

Ce qui précède peut être implémenté en faisant référence à Source: Comment optimiser les performances SSD .


GPT est la méthode moderne utilisant gdisk& grub 2.0.x, (je suppose que quelqu'un l'a mentionné ci-dessous dans une réponse) et MBR est la méthode traditionnelle utilisant l'ancien grub 0.9.7et fdisk.. vous pouvez trouver plus ici: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
Il est inutile de spécifier nodiratimequand vous spécifiez également noatime. D'accord, cela a l'air cool et avancé pour les autres nerds, mais comme il noatimedésactive atime sur les inodes, et que les répertoires sont aussi des inodes, c'est comme dire "lavez-vous les mains et lavez-vous les pouces aussi". :)
Redsandro

Par expérience, je peux dire qu’aucun ordonnanceur («noop») ne fonctionne plus rapidement que l’échéance.
drumfire

5
Non, " Les partitions swap Linux effectuent par défaut des opérations TRIM lorsque le périphérique bloc sous-jacent prend en charge TRIM, avec la possibilité de les désactiver ou de choisir entre des opérations TRIM uniques ou continues." La partition d'échange doit donc être placée sur un disque SSD pour tirer parti du temps d'accès rapide, ce qui prendra beaucoup de temps à chaque permutation de pages
phuclv

2
@ aliasgar Est-ce que F2FS est un bon choix contre ext4?
SebMa

67

Réponse courte

  • Choisissez ext4 et montez-le avec l' discardoption de support TRIM ou utilisez FITRIM (voir ci-dessous). Utilisez également l' noatimeoption si vous craignez "l'usure des disques SSD".

  • Ne changez pas votre planificateur d'E / S (CFQ) par défaut sur des serveurs multi-applications , car il assure une équité entre les processus et prend en charge automatiquement les disques SSD. Cependant, utilisez Date limite sur les ordinateurs de bureau pour obtenir une meilleure réactivité sous charge.

  • Pour garantir facilement un alignement correct des données, le secteur de départ de chaque partition doit être un multiple de 2048 (= 1 Mio). Vous pouvez utiliser fdisk -cu /dev/sdXpour les créer. Lors des récentes distributions, cela s’occupera automatiquement de vous.

  • Réfléchissez à deux fois avant d'utiliser swap sur SSD. Il sera probablement beaucoup plus rapide que le swap sur disque dur, mais le disque s'use également plus rapidement (ce qui peut ne pas être pertinent, voir ci-dessous).

Longue réponse

  • Systèmes de fichiers:

Ext4 est le système de fichiers Linux le plus répandu (bien entretenu). Il offre de bonnes performances avec les disques SSD et prend en charge la fonctionnalité TRIM (et FITRIM) pour conserver de bonnes performances SSD au fil du temps (cela efface les blocs de mémoire inutilisés pour un accès en écriture rapide et ultérieur). NILFS est spécialement conçu pour les lecteurs de mémoire flash, mais ne fonctionne pas vraiment mieux que ext4 sur les tests. Btrfs est toujours considéré comme expérimental (et ne fait pas vraiment mieux non plus ).

  • SSD performance & TRIM:

La fonction TRIM efface les blocs SSD qui ne sont plus utilisés par le système de fichiers. Cela optimisera les performances en écriture à long terme et est recommandé sur les disques SSD en raison de leur conception. Cela signifie que le système de fichiers doit pouvoir indiquer au lecteur ces blocs. L' discardoption de montage de ext4 émettra de telles commandes TRIM lorsque les blocs du système de fichiers seront libérés. Ceci est un rejet en ligne .

Cependant, ce comportement implique une légère surcharge de performances. Depuis Linux 2.6.37, vous pouvez éviter d'utiliser discardet choisir de supprimer occasionnellement un lot avec FITRIM (par exemple, à partir de la crontab). L’ fstrimutilitaire le fait (en ligne), ainsi que l’ -E discardoption de fsck.ext4. Vous aurez cependant besoin de la version "récente" de ces outils.

  • Usure SSD:

Vous voudrez peut-être limiter les écritures sur votre lecteur, car les disques SSD ont une durée de vie limitée à cet égard. Ne vous inquiétez pas trop , cependant , le pire disque dur SSD de 128 Go peut prendre en charge au moins 20 Go de données écrites par jour pendant plus de 5 ans (1 000 cycles d'écriture par cellule). Les meilleurs (et aussi les plus grands) peuvent durer beaucoup plus longtemps: vous les aurez probablement remplacés d'ici là.

Si vous souhaitez utiliser le swap sur SSD, le noyau remarquera un disque non rotatif et procédera à une randomisation de l'utilisation du swap (nivellement de l'usure au niveau du noyau): vous verrez alors un SSmessage (Solid State) dans le message du noyau lorsque le swap est activé:

Ajout de 2097148k swap sur / dev / sda1. Priorité: -1 étendue: 1 sur: 2097148k SS

  • Planificateurs d'E / S:

De plus, je suis d’accord avec la plupart des réponses d’ aliasgar (même si la plupart d’entre elles ont été copiées de manière non conforme sur ce site Web ), mais je ne suis pas tout à fait d’accord sur le rôle du planificateur . Par défaut, le planificateur d'échéance est optimisé pour les disques en rotation lorsqu'il implémente l' algorithme d'ascenseur . Alors, clarifions cette partie.

Réponse longue sur les planificateurs

À partir du noyau 2.6.29, les disques SSD sont automatiquement détectés et vous pouvez le vérifier avec:

cat /sys/block/sda/queue/rotational

Vous devriez obtenir 1pour les disques durs et 0pour un SSD.

Désormais, le planificateur CFQ peut adapter son comportement en fonction de ces informations. Depuis Linux 3.1, le cfq-iosched.txtfichier de documentation du noyau dit :

CFQ dispose d’optimisations pour les disques SSD et s’il détecte un support non rotatif pouvant prendre en charge une plus grande profondeur de file d’attente (plusieurs demandes en vol à la fois), [...].

De plus, le planificateur d'échéance tente de limiter les mouvements de tête non ordonnés sur les disques de rotation, en fonction du numéro de secteur. Citation de la documentation sur le noyau deadline-iosched.txt, fifo_batch description de l'option :

Les demandes sont regroupées dans des "lots" d'une direction de données particulière (lecture ou écriture), qui sont traités dans un ordre de secteur croissant.

Toutefois, il peut être intéressant de régler ce paramètre sur 1 lors de l’utilisation d’un disque SSD:

Ce paramètre ajuste la balance entre la latence par requête et le débit global. Lorsque la latence est la principale préoccupation, le plus petit est le mieux (où une valeur de 1 correspond au comportement du premier arrivé, premier servi). L'augmentation de fifo_batch améliore généralement le débit, au détriment de la variation de latence.

Certains points de repère suggèrent qu'il y a peu de différence de performance entre les différents ordonnanceurs. Alors, pourquoi ne pas recommander l' équité ? quand CFQ est rarement mauvais sur le banc . Toutefois, sur les configurations de bureau, vous obtiendrez généralement une meilleure réactivité en utilisant Deadline sous charge, en raison de sa conception (probablement à un coût de débit inférieur).

Cela dit, un meilleur point de repère essaierait d'utiliser Deadline avec fifo_batch=1.

Pour utiliser Deadline sur les SSD par défaut, vous pouvez créer un fichier, par exemple, /etc/udev.d/99-ssd.rulescomme suit:

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

Qu'entendez-vous par le fait que l'alignement du partitionnement est automatiquement pris en charge sur les distributions récentes? Cela s'applique-t-il également lorsque vous utilisez le partitionnement manuel lors de l'installation d'ubuntu, par exemple, ou lorsque vous effectuez un partitionnement avec gparted?
jarno

2
@jarno Dans les distributions les plus récentes (depuis plusieurs années), les outils de partitionnement, de fdisk à graphique, ont tendance à créer automatiquement des alignements de partition à des multiples de 1 Mo à partir du démarrage de l'appareil. Cela correspond de façon préemptive à 512 octets, 4k, 8k et un demi-bazillion d'autres tailles de bloc / cluster de 2 ^ n dans la nature. Il est presque impossible d'aligner une partition à moins que vous ne fassiez des efforts importants pour le faire.
Killermist

13

L'article d'archlinux Solid State Drives dit dans la section Choix du système de fichiers :

De nombreuses options existent pour les systèmes de fichiers, notamment Ext2 / 3/4, Btrfs, etc.

Btrfs Le
support de Btrfs a été inclus dans la version principale 2.6.29 du noyau Linux. Certains pensent qu'il n'est pas assez mature pour une utilisation en production alors qu'il existe également des adopteurs précoces de ce successeur potentiel à ext4. Les utilisateurs sont encouragés à lire l' article de Btrfs pour plus d'informations.

Ext4
Ext4 est un autre système de fichiers prenant en charge SSD. Il est considéré comme stable depuis le 2.6.28 et est suffisamment mature pour un usage quotidien. Contrairement à Btrfs, ext4 ne détecte pas automatiquement la nature du disque; les utilisateurs doivent explicitement activer la prise en charge de la commande TRIM à l’aide de l’option de suppression de montage dans fstab (ou avec tune2fs -o discard / dev / sdaX).

Btrfs et Ext4 répondent tous deux aux deux exigences principales pour une utilisation efficace du SSD:

  • Le système de fichiers doit pouvoir émettre des commandes ATA_TRIM sur le SSD sous-jacent
  • Le système de fichiers ne doit pas effectuer d’écritures inutiles sur le disque.

Pour la performance, il existe deux autres exigences:

  • Les partitions doivent être alignées sur la taille de bloc du SSD
  • TRIM doit être explicitement activé pour chaque partition formatée Ext4

Le premier est aujourd'hui automatique avec la plupart des installateurs Linux. fdisk créera également des partitions à la frontière de 1024 Ko si les indicateurs "-cu" sont lancés.

La seconde est automatique pour Btrfs, mais pour Ext4 cela se fait manuellement en ajoutant "discard" à la liste des options de montage pour chaque partition Ext4 dans le fichier "/ etc / fstab". Pour plus de détails, voir ce howto .

À mon avis, cela nécessite peu de manipuler fstab car Ext4 n’est pas une raison pour ne pas utiliser ce système de fichiers mature et excellent.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.