Question Comment optimiser le système d'exploitation pour les disques SSD?


Quelles mesures devraient être prises avant / pendant / après l'installation d'Ubuntu sur un disque SSD pour optimiser les performances et assurer une durabilité maximale du disque?


143
2017-08-06 14:03


origine




Réponses:


J'ai utilisé avec succès plusieurs techniques différentes pour améliorer la manière dont Ubuntu utilise le périphérique de stockage, qu'il s'agisse d'un disque SSD ou d'un lecteur traditionnel.

Pour les disques SSD, vous cherchez à minimiser le nombre de fois que le disque est écrit, car les lectures ne doivent pas ajouter d’usure au disque.

1) Gérer le fichier d'échange

Si vous ne mettez pas votre ordinateur en veille et que vous disposez d'une mémoire vive suffisante pour exécuter toutes vos applications, vous n'avez en théorie pas besoin de partition de swap.

Si vous avez un mélange de SSD et de disques durs, placez votre partition de swap uniquement sur les disques durs.

2) Pas d'écriture pour l'horodatage de lecture (adapté aux disques durs et SSD)

Monter vos partitions avec les options noatime et nodiratime arrêtera les écritures d’horodatage lorsque vous lisez des fichiers et des dossiers. Ces écritures d'horodatage ne sont généralement pas requises, sauf si vous utilisez un client de serveur de messagerie local tel que mutt. La raison pour laquelle cela est généralement une mauvaise idée est que chaque lecture produira une écriture lors de la mise à jour des horodatages. Cela diminue la durée de vie du disque SSD.

Modifier votre / etc / fstab fichier de configuration (avec précaution - faites une sauvegarde pour être sûr que casser votre configuration fstab peut vous empêcher de fonctionner):

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

Modifiez les options de montage de vos partitions en ajoutant le texte noatime et nodiratime aux lignes définissant votre racine (/) et les autres partitions si vous en avez (/ home) - Note: si vous avez une partition / home, commencez par changer simplement cette partition si vous craignez de casser quelque chose 

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

Vous devrez redémarrer votre ordinateur avant que ces modifications ne prennent effet.

3) Réduire les écritures du système d'exploitation et des applications

En supposant que vous n'exécutiez pas un serveur de produit critique, la plupart des utilisateurs ne consultent pas les journaux en cas de problème (d'autant plus que les erreurs sérieuses sont rares pour la plupart des utilisateurs Ubuntu). Par conséquent, vous pouvez configurer Ubuntu pour que tous les journaux soient écrits sur la mémoire RAM plutôt que sur le disque SSD.

Remarque: apportez uniquement les modifications suivantes lorsque vous avez installé tous les logiciels que vous allez utiliser (en particulier des choses comme le serveur Web Apache), sinon vous risquez de rencontrer des problèmes avec des répertoires manquants dans / var / log

Pour le contexte de cette approche, voir prolonger la vie de votre lecteur flash sur ubuntu-eee.com 

Ouvrir / etc / fstab avec un éditeur (en supposant que vous ayez sauvegardé le fichier / etc / fstab)

gksudo gedit /etc/fstab

Ajoutez les lignes suivantes à la fin du fichier fstab et sauvegardez:

# 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

Vous devrez redémarrer votre ordinateur avant que ces modifications ne prennent effet.

Voir également:


106
2017-08-08 13:09



A propos du dernier bit pour les journaux et autres choses, le tmpfs les lignes sont commentées, alors pourquoi ajouter ces lignes fait-il une différence? Avons-nous besoin de l'ajouter sans commenter? - Oxwivi
Je peux comprendre si cela vise à améliorer la vitesse, mais la plupart de ce que vous avez écrit semble avoir pour but d'améliorer la vie des disques SSD. N'est-il pas vrai qu'avec les SSD modernes, ces améliorations sont inutiles? Et au prix d'une plus grande utilisation de la RAM! (par exemple, voir le lien donné dans cette autre réponse) - Chan-Ho Suh
Il n'y a pas besoin de 2). relatime fait le travail de prévention très bien écrit et il a été actif par défaut depuis noyau 2.6.30. - Mihai Capotă
Juste pour ajouter au commentaire de @ MihaiCapotă il y a un Réponse du serveur avec plus de détails sur la raison pour laquelle noatime n'est pas nécessaire. - Cas
Ils disent que noatime implique nodiratime ici, il suffit donc d'ajouter l'ancienne option. - jarno


SSD Life

En général, je ne m'embêterais pas - les soucis concernant la vie des SSD sont exagérés. Vous pouvez lire ceci article détaillé sur pourquoi vous ne devriez vraiment pas vous inquiéter. En bref, les circuits à l’intérieur des SSD modernes gèrent le niveau d’usure pour vous, et ils savent comment le faire mieux que vous.

Dans l'article est un calcul de la durée de vie d'un SSD qui reçoit des écritures à un débit continu de 80M / s. La vie est 51 ans. Cela est basé sur la technologie de 2007 - la vie des disques SSD sera plus longue maintenant. Et vous n'allez certainement pas écrire sur votre SSD à 80 M / s 24 heures par jour.

Performance SSD

Cependant, la dégradation des performances au fil du temps peut poser problème et RÉDUIRE est la solution. Il y a deux options

  • automatique / en ligne TRIM, alias jeter
  • manuel TRIM

Vous devez activer le TRIM automatique vous-même . (Fondamentalement, vous ajoutez le discard option à vos options de montage, à condition que vous utilisiez ext4.) J'ai trouvé un article de blog l'option de suppression ralentit votre système lors de la suppression de fichiers.

Vous pouvez parfois le faire manuellement (ou dans un travail cron) en utilisant fstrim. Si vous avez juste une partition, il vous suffit de:

sudo fstrim /

Notez que fstrim est uniquement disponible en 11.10 et plus récent. Pour les systèmes plus anciens, vous aurez besoin du wiper.sh scénario. J'ai trouvé le script à /usr/share/doc/hdparm/contrib/wiper.sh.gz sur mon système.

Si vous vous demandez, le problème que TRIM résout, comme décrit par Wikipedia, est:

Les disques SSD stockent des données dans des cellules de mémoire flash regroupées en pages, les pages (généralement 4 Ko chacune) regroupées en blocs (généralement 128 pages par bloc, pour un total de 512 Ko). Les cellules de mémoire flash NAND ne peuvent être écrites directement que lorsqu'elles sont vides. S'ils sont considérés comme contenant des données, le contenu doit d'abord être effacé avant qu'une opération d'écriture puisse être effectuée de manière fiable. Dans les disques SSD, une opération d'écriture peut être effectuée au niveau de la page, mais en raison des limitations matérielles, les commandes d'effacement affectent toujours des blocs entiers. Par conséquent, l'écriture de données sur un support SSD est très rapide tant que des pages vides peuvent être utilisées, mais ralentit considérablement une fois les pages écrites précédemment remplacées. Comme un effacement des cellules de la page est nécessaire avant de pouvoir être réécrit, mais que seuls des blocs entiers peuvent être effacés, un remplacement lancera un cycle de lecture-effacement-modification-écriture: le contenu de l'ensemble du bloc doit être stocké dans le cache avant qu'il ne soit effacé sur le support flash, puis la page écrasée est modifiée dans le cache pour que le bloc mis en cache soit à jour et que le bloc entier soit mis à jour page) écrit sur le support flash. Ce phénomène est appelé amplification en écriture.


90
2017-08-08 19:03



J'aimerais pouvoir voter plusieurs fois. Ce serait une de ces réponses. Ce lien a résolu un problème que j'ai depuis longtemps. Merci beaucoup Hamish. - Luis Alvarado♦
Article intéressant de storagesearch.com. Je souhaite que cela donne une date! La réponse ci-dessus signifie-t-elle que les propriétaires de SSD n'ont pas besoin de se soucier des suggestions de la première réponse, à l'exception de TRIM? Je n'ai pas vraiment besoin de temps d'accès aux fichiers, mais avec la mémoire 2G, disposer d'une partition de swap peut toujours être utile lors de l'exécution d'un logiciel de retouche photo avec plusieurs autres programmes gourmands en mémoire comme Chrome. - Lawrence I. Siden
@lsiden: l'article mentionne "Later: - en mai 2008" en cours de route. Et vous avez raison de dire que vous ne devriez pas vous inquiéter de toutes les autres choses du premier article. Activez simplement TRIM et profitez de la vitesse :) - Hamish Downer
L'article fait référence aux SSD de qualité professionnelle: il utilise 2 millions de cycles d'endurance en écriture. Les SSD grand public ont environ 3000-5000 cycles. Un SSD de 128 Go avec 3 000 cycles donne 57 jours d'écriture continue à 80 Mo / s. - LeartS
Dans Ubuntu 14.10 et ultérieur, TRIMming se produit automatiquement chaque semaine sur tous les disques SSD pris en charge par fstrim. réf. - KrisWebDev


Il y a plusieurs points:

Alignement:

Ce qui est souvent souligné est le droit alignement de la partition. Cela devrait être égal à la taille de bloc du SSD. Jouez en toute sécurité et alignez vos partitions sur les limites de MiB. Notez que vous ne pouvez pas faire cela avec l'outil de partition de l'installateur Ubuntu (qui utilise MB pas avec MiB), mais vous pouvez démarrer le CD en direct, utiliser Gparted (qui utilise MiB), puis cliquer sur Installer pour utiliser les partitions que vous configurez.

Le bon programmateur:

Un point important est la planificateur qui devrait être noop. Vous pouvez définir ce planificateur via kernelparameter elevator=noop ou via une entrée echo noop > /sys/block/sda/queue/scheduler en vous rc.local.

Mountflags:

je recommanderais noatime et discard

Tmpfs

Mettre tmp sur un disque virtuel peut augmenter la durée de vie du SSD. Pour l'utiliser, placez la ligne suivante dans votre fstab: none /tmp tmpfs defaults 0 0

En général, si vous voulez approfondir ce sujet, je vous recommande ce excellent article de wiki.


20
2018-02-03 21:28





Cours de réglage rapide pour votre SSD sur Ubuntu:

système de fichiers

Wiki Arch mentionne peu d'options préférables pour le système de fichiers SSD - l'un d'eux est instable, d'autres sont ext* ceux je suppose ext4 est l'un des meilleurs choix.
Note: En cas de ext4 vous voudrez peut-être utiliser discard option de montage.

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

Peu de choses importantes ici sont:

  • Pour les systèmes avec> = 2 Go de mémoire, la localisation / tmp dans la mémoire vive est souhaitable.
  • Non swap cloison. De nos jours, il n'est nécessaire que pour l'hibernation, car les machines modernes ont une grande quantité de mémoire vive.
  • noatime et discard options Info est ici.

planificateur

Envisagez de passer du programmateur par défaut, qui sous la plupart des distributions Linux, est cfq (mise en file d'attente entièrement correcte), au planificateur Noop ou de délai pour un SSD. L'utilisation du planificateur noop, par exemple, traite simplement les demandes dans l'ordre où elles sont reçues, sans tenir compte de l'emplacement physique des données sur le disque. Cette option est considérée comme avantageuse pour les disques SSD car les temps de recherche sont identiques pour tous les secteurs du disque SSD.

Ajouter à la suite /etc/rc.local:

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

Info

un  deux


16
2017-12-09 17:24



Sans pour autant échanger, et avec /tmp en RAM, il est très facile d'arriver à un Mémoire insuffisante situation, comme beaucoup de programmes utilisent /tmp comme un espace de stockage (par exemple Brasero pour stocker des images DVD). - arrange
Pas vraiment. tmpfs par défaut, 10% de la RAM. La taille peut être ajustée en utilisant size option cependant. - Andrejs Cainikovs
Brasero est un mauvais exemple, il ne devrait pas le faire en premier lieu, comme l'explique Lennart Poettering dans son blog. 0pointer.de/blog/projects/tmp.html - LiveWireBT


4) activer le TRIM automatique 

Si votre SSD le prend en charge, vous devez également activer le TRIM automatique (comme décrit ici)


8
2017-12-30 23:37





Je ne voudrais pas ajouter cette ligne à votre fstab, le dossier var / tmp est destiné à survivre aux redémarrages, et cela pourrait causer des problèmes pour vous.

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

Lorsque je configure le nouveau système, je laisse tout le dossier tmp commenté de cette façon si quelque chose arrive, je peux vérifier les journaux et autres. Ensuite, une fois que j'aurai la configuration du système principal, je les dé-commenterai, mais je n’ajoute jamais la ligne ci-dessus, voici ce que j’utilise:

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

Et si je rencontre des problèmes avec mon système, je les commente pour pouvoir tout vérifier même après un redémarrage ou un redémarrage forcé après un blocage.

Aussi, vous n'avez pas besoin de nodiratime, l'option noatime prend soin des deux par lui-même.

En ce qui concerne TRIM, si votre hw / sw le supporte, c'est un must, je n'utilise pas la fonction de suppression dans fstab. Je crée un cron quotidien, car mon PC est toujours allumé en procédant comme suit:

gksu gedit /etc/cron.daily/trim

Ajoutez ensuite ceci au fichier et sauvegardez (si vous n'avez pas de partition séparée / home sur ssd, ou si vous avez d'autres parties sur SSD, vous devriez avoir l'idée de modifier ceci:

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

Ensuite, rendez le fichier exécutable par:

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

Je modifie aussi mon rc.local comme ceci:

gksu gedit /etc/rc.local

Ajoutez ceci au dessus de "exit 0" et en dessous du dernier #:

# 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

Vous pouvez copier et coller à partir d'ici afin qu'il n'y ait pas d'erreurs, pour le profane, il semble hors de question, ce n'est pas le cas.

J'ai également lu que laisser 10% de votre disque SSD non formaté peut aider à prolonger la vie, ce qui reste à voir. Je n'ai pas lu grand chose à ce sujet, donc je ne peux pas garantir si cela est logique.

C'est le meilleur guide complet, il n'a pas parcouru Google pendant un jour et a ensuite trouvé un guide, vous devriez le consulter. ICI


3
2017-07-28 22:53



L'idée est-elle d'ajouter tous les répertoires sous / var / log à /etc/rc.local? Que se passe-t-il si vous n'ajoutez pas les répertoires? Je suppose qu'il pourrait y avoir plus de répertoires à ajouter si vous installez de nouveaux paquets. Est-ce que /etc/rc.local pourrait être mis à jour lors de l'arrêt pour créer tous les répertoires au prochain démarrage? - jarno
Dans Ubuntu 14.04 et versions ultérieures, un travail cron /etc/cron.weekly/fstrim est défini par défaut pour ajuster les systèmes de fichiers chaque semaine. Quant à 14.04, voir ici. Ubuntu 15.10 utilise /sbin/fstrim --all || true dans le script fstrim. - jarno
Au moins le répertoire / var / log / installer a un sous-répertoire appelé ubiquity-apt-clone dans Xubuntu 15.10. Devriez-vous créer des sous-répertoires de manière récursive? - jarno


TRIM permet à un système d'exploitation d'informer un SSD des blocs de données qui ne sont plus considérés comme utilisables et peuvent être effacés en interne. Le découpage permet au SSD de gérer la surcharge de la récupération de place, ce qui ralentirait de manière significative les futures opérations d'écriture sur les blocs concernés.1 

Dans Ubuntu 14.04, une nouvelle fonctionnalité a été ajoutée à la util-linux paquet qui coupe régulièrement les SSD automatiquement, mais seuls les SSD Intel et Samsung ont le TRIM activé par défaut, car certains SSD bon marché peuvent même se bricoler lors de l'exécution de TRIM.2 Le contenu de /etc/cron.weekly/fstrim dans 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
2Comment Trim est-il activé?


3
2017-12-25 01:52