web-dev-qa-db-fra.com

Devrais-je utiliser btrfs ou Ext4 pour mon SSD?

Devrais-je utiliser les options btrfs (avec les options discard, compress = lzo et space_cache) ou Ext4 (avec l'option discard) pour le disque SSD de la partition racine de mon ordinateur de bureau Ubuntu 11.10 (Oneiric) AMD64?

/ home sera un disque dur, donc la fiabilité de fs affecte le système d’exploitation, pas mes données.

16
Graham

Selon les tests effectués par phoronix , cela dépend toujours de nombreux facteurs. Dans un cas, Btrfs réussira beaucoup mieux que EXT4 lors de la lecture de fichiers volumineux sur un disque SSD. De même, tout en prenant en compte les performances des transactions sur disque, Ext4 peut fonctionner mieux que les suivants.

Vous pouvez consulter ces tests ici , ici et ici (AVERTISSEMENT: articles trop longs).

Mais pour résumer, Btrfs n’a pas pour l’instant un avantage en performances quantitatives par rapport au système de fichiers EXT4 , même en mode SSD.

Vous pouvez donc choisir parmi Ext4 pour le moment.

13
nbkdotdev

Pour ceux qui tombent sur cette question en 2016 ... Utilisez ext4. J'ai essayé btrfs et la différence est substantielle. Sur une période de 10 jours, les écritures d’écriture sur ext4 représentaient 17 800 secteurs. Btrfs? 490 400 secteurs. Même SSD, système de fichiers identique, partitions différentes. Fondamentalement, même charge de travail.

Ext4 et btrfs deviennent tous deux "silencieux" lorsqu'il n'y a aucune activité d'écriture sur le lecteur. C'est bon.

Ext4 écrira les données modifiées, plus une surcharge. Les frais généraux concernent les données écrites. Une écriture 4K (1 bloc) pousse environ 50 à 80 blocs de temps système au prochain commit. (Le journal ext4 est complètement activé)

Modifiez un seul bloc 4K sur btrfs et vous passerez entre 4000 et 5000 blocs de temps système lors de la prochaine validation. Le commit par défaut est de 30 secondes, je crois. J'ai utilisé 120.

Maintenant, cela dépend de la façon dont vous utilisez le SSD. En tant que root, il existe généralement un flux d’écritures relativement constant et de faible niveau. Fichiers journaux, fichiers ntp drift, reconstitutions de la base de données man, mises à jour de la topologie opensm, etc., etc. Chaque événement martèlera un lecteur btrfs avec 4 000 à 5 000 autres écritures.

Les numéros de 10 jours ci-dessus concernent mon disque SSD "à écriture limitée". La majeure partie de ces 17 800 secteurs est le résultat d’une mise à jour système simpliste. Une copie de btrfs n'a pas souffert. Mes écrivains sont, exactement, ntp drift, opensm topology et man db updates (nightly). Rien d’autre n’atteint ce disque, à l’exception d’initiatives telles que les mises à jour du système, "vim/etc/what", etc.

Les disques SSD dans leur ensemble vont beaucoup souffrir d'écritures. Je ne vois vraiment pas l'intérêt de les gaspiller juste parce que les médias poursuivent des lapins et des arcs-en-ciel. Si vous voulez payer ce prix pour la vache, allez-y. Pour "performance", pas tellement. Il s’agit d’un disque SSD sur lequel vous pouvez probablement placer le pire "système de fichiers" que l’on connaisse, tout en obtenant un niveau de performances équivalent à la force brutale. Ext4 n'est, de loin, pas le pire système de fichiers connu de l'homme.

Pas de chèque mensuel. Essayez le script ci-dessous. C'est un hack à 100%, cela ne fonctionnera pas pour les points de montage md,

#! /bin/bash

dev = cat /proc/mounts | grep " $1 " | awk '{print $1}'

x = basename $dev

vmnam = lsblk $dev -o MOUNTPOINT,PKNAME | grep "$1" | awk '{print $2}'

vmx = vmstat -d | grep $vmnam | awk '{print $8}'

lbax = smartctl -a $dev | grep LBA | awk '{print $10}'

tmpnam = mktemp XXX

echo "Dispositif de suivi: $ dev, monté sur $ 1 (vmstat sur $ vmnam)"

tim = date +%s

timx = date +%s

en tant que vrai

faire

vm=`vmstat -d | grep "$vmnam" | awk '{print $8}'`

lba=`smartctl -a $dev | grep LBA | awk '{print $10}'`

if [ "$vm" != "$vmx" ]

then

    tim=`date +%s`

    dif=`dc <<< "$vm $vmx - p"`

    lbad=`dc <<< "$lba $lbax - p"`

    timd=`dc <<< "$tim $timx - p"`

    echo `date` " (sec=$timd) writes=$vm (dif=$dif) (lba=$lbad)"

    vmx="$vm"

    lbax="$lba"

    timx="$tim"

    find "$1" -mount -newer "$tmpnam" -print | grep -v "/tmp"

    touch "$tmpnam" 

fi

sleep 1 

terminé

Il vous dira combien de blocs ont été écrits, en fonction du lecteur, et quels fichiers ont été mis à jour. Nécessite des privilèges root. Voir par vous-même. J'exécute SSD sur le système de fichiers racine et appelle le script stat.sh. Alors ... "Sudo ./stat.sh /"

6
wkirk

La dernière fois que je l’ai testée, et je n’ai encore entendu parler d’aucune façon, nulle part ailleurs, ext4 mange média à l’état solide. (clés USB, disques SSD, etc.) Je ne recommande pas de l’utiliser sur un tel périphérique. Utilisez ext3 à la place. Dans la plupart des cas sur SSD, vous ne pourrez de toute façon pas faire la différence.

BTRFS n'est pas encore assez stable. Cependant, il est suffisamment stable pour les applications non critiques. C'est ce que j'utilise pour créer des lecteurs flash amorçables. Si vous utilisez compress = zlib et ssd comme options de montage, la compression compensera les vitesses d’écriture inférieures de la plupart des supports à semi-conducteurs et ssd changera l’algorithme d’allocation en un algorithme plus performant sur de tels périphériques et mauvaise usure par le matériel. Le seul domaine de performances qui reste un problème est que les appels de synchronisation sont lents. Ce n'est pas un problème pour une utilisation générale, mais dpkg appelle la synchronisation après chaque opération. L'installation et la mise à jour du logiciel peuvent donc être lentes. BTRFS offre également des fonctions de capture instantanée et d’autres fonctionnalités avancées qui sont très utiles dans certaines circonstances.

Si vous décidez d'utiliser BTRFS, veillez à utiliser une distribution utilisant le noyau 3.2.0-2 ou une version ultérieure. 3.1.x est réalisable si nécessaire. Pour les noyaux plus anciens, vous aurez besoin de compiler vous-même les derniers modules BTRFS. Les versions intégrées sont presque stables, mais la correction d'erreur ne fonctionne pas dans les versions antérieures, ce qui peut vous laisser dans un ruisseau en cas de problème. Fsck peut être corrigé dans les versions les plus récentes.

Un dernier avertissement, j'ai entendu dire que des fichiers swap sur un système de fichiers BTRFS le corrompraient. Ce problème a peut-être été résolu, mais assurez-vous de vérifier soigneusement avant de le mettre en œuvre.

Si vous avez besoin d’aide pour la configuration de votre système BTRFS, faites-le moi savoir. J'ai fait quelques folies qui fonctionnent plutôt bien pour des choses spécifiques.

2
Perkins

Je ne voudrais pas utiliser ext4 sur un disque SSD basé sur des preuves anecdotiques et ma propre expérience en ce sens suggère que ext4 peut considérablement réduire la durée de vie d'un disque SSD en raison du nombre de lectures et d'écritures associées au système de fichiers. Un article que j'ai lu récemment suggérait qu'ext4 non optimisé sur un SSD (compte pour la taille de la page, etc.) pouvait réduire de moitié la durée de vie du disque. Après une semaine de problèmes, je suis parvenu à la conclusion que mes propres disques SSD n'avaient duré que huit mois à cause de ce problème. Si vous utilisez un disque SSD, lisez comment optimiser le système de fichiers en fonction d'éléments tels que la taille de la page Flash, qui peut être différente de la taille de cylindre type pour laquelle le système de fichiers est configuré.

2
user75153