Auteur Sujet: Le SSD de LaFibre.info  (Lu 23220 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« le: 18 novembre 2016 à 09:19:25 »
Savez-vous où sont les données du Forum LaFibre.info ?

Sur un serveur Dell chez Maxnod, avec nouveauté un disque SSD que voici :


Le 4 novembre le disque dur SATA de mon serveur m'a lâché :

Le disque dur du serveur LaFibre.info m'a compétemment lâché, après 4 ans et demi de bon services, je suis passé sur un serveur provisoire avec la sauvegarde de 9h45 de ce matin.

J'ai décidé de choisir un SSD pour remplacer le disque dur à plateau, car ils tombent rapidement en panne quand ils sont souvent sollicités et 4 ans et demi ce n'est pas mal comme endurance. Le choix du SSD s'est porté sur la gamme Samsun Pro :
Endurance sur de gros fichiers :

Malgré quelques baisse de régimes, le Samsung 840 Pro reste supérieur à ses concurrents (crédit : TechReport)

Endurance sur des petits fichiers :

Sur les petits fichiers, le Samsung 840 Pro tient toujours la dragée haute aux autres, tandis que le Kingston HyperX 3K Comp est à la peine (crédit : TechReport).

C'est également des SSD Samung qu'utilise Online sur ses serveurs :
Nous utilisons principalement des SSD Samsung série MZ7LN256HMJP (PM871a). C'est un dérivé en TLC des EVO avec un peu plus d'overprovisionning.
Ils ne sont pas disponibles sur le marché "normal", ce sont des références spécifiques disponibles uniquement en direct constructeur.
Nous avons essayé d'autres marques (notamment Intel et Micron) et n'avons jamais réussi à avoir une endurance convenable, pour un rapport fiabilité/performance/prix nettement inférieur.
Nous en avons déployé plusieurs dizaines de milliers depuis 18 mois, nous avons un taux de casse inférieur à 0,2% (une trentaine à peu près)

Arnaud

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #1 le: 18 novembre 2016 à 09:20:30 »
Depuis le 10 novembre, le forum est de nouveau hébergé chez Maxnod, mais avec un SSD :
Je démarre la migration du forum : A partir de 4h00 le forum sera en lecture seule le temps de l'opération et de la propagation des DNS...

Le SSD de LaFibre.info :



vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #2 le: 18 novembre 2016 à 09:20:53 »
C'est un SSD qui a une garantie de 10ans ou 150 To écrit (la fin de la garantie arrive par le premier des deux qui est terminé)



(cliquez sur la miniature ci-dessous - le document est au format PDF)


150 To sur 10 ans = 15 To par an = 41,06 Go par jour

J'ai donc pour objectif de tuner le serveur pour ne pas dépasser 41 Go par jour

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #3 le: 18 novembre 2016 à 09:21:14 »
Vous allez me dire que je suis fou, qu'un SSD à une durée de vie limitée quand on écrit plusieurs Go de données dessus.

J'ai fait plusieurs choses pour avoir une grande durée de vie :

1/ J'ai choisit un modèle sur-dimensionné de 512 Go : aujourd'hui je pourrait faire tenir tout sur un disque de 40 Go (avec même 1 Go d'espace libre) Or il est important que le SSD ait de nombreux blocs libre pour pouvoir répartir les écritures sur de nombreux blocs. Si sur un disque les 3/4 des données sont occupées et ne sont jamais effacées ou ré-écrites, seul 1/4 des blocs sont utilisés pour l'écriture. Là j'ai beaucoup de blocs libres (même si j'envisage d'utilisées un peu plus de données dans le futur avec des vidéos)

2/ Comme recommandé, j'ai laissé un peu plus de 10% du disque non partitionné, afin d'augmenter l'overprovisionning.

Extrait de la doc :
La fonction Over provisioning permet de redimensionner les partitions d’un lecteur. Les SSD fonctionnement mieux et durent plus longtemps lorsqu’ils disposent d’une grande quantité d’espace utilisable comme espace d’échange.

Durant les périodes d’inactivité, l’espace d’échange est utilisé pour effectuer en arrière-plan les tâches de maintenance courante du SSD (fonctions TRIM et Garbage Collection), ce qui permet au contrôleur SSD de préparer des blocs libres en vue d’une utilisation ultérieure. Dans la mesure où le SSD offre de meilleures performances lorsqu’il écrit dans des blocs libres, il en résulte une meilleure expérience utilisateur.

La fonction Over provisioning contribue à dégager de l’espace libre en redimensionnant les partitions d’un lecteur.



3/ J'ai mis des fichiers de log peu important dans un ramdisque (je perds les données à chaque reboot, mais les fichiers où j'ai besoin d'un historique sont toujours sur le SSD)

4/ Depuis hier, les données Smoking (les .rrd, fichiers qui sont ré-écrits toutes les 5 minutes) sont dans un RamDisque persistant, sauvegardé une fois par jour et avant tout reboot du serveur. Je vais publier les scripts que j'utilise si cela peut servir à d'autres. Les données SmokePing temporaire (les images) sont elles dans un RramDisque non persistant.

5/ vm.swappiness = 10 : Je passe swappiness de la valeur par défaut 60 à 10 : le swap est utilisé uniquement quand la mémoire est utilisée à plus de 90% (100-10) contre 40% par défaut (100-60). Cela diminue fortement l’utilisation du swap. Je n'ai mis que 1 Go de partition de swap sur le SSD.

6/ J'envisage de ne plus écrire les données d'un fichier modifié au bout de 30 seconde (la valeur par défaut), mais de 5 minutes. Ainsi la base de donnée, qui est modifiée des dizaines de fois par secondes ne sera plus écrite sur disque que toutes les 5 minutes et non toutes les 30 secondes.[/size]

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 425
  • Lyon (69) / St-Bernard (01)
    • Twitter
Le SSD de LaFibre.info
« Réponse #4 le: 18 novembre 2016 à 09:28:29 »
Tu ne voudrais pas partager quelques graphs d'avant/après ? :)

Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 5 971
Le SSD de LaFibre.info
« Réponse #5 le: 18 novembre 2016 à 09:35:43 »
2/ Comme recommandé, j'ai laissé un peu plus de 10% du disque non partitionné, afin d'augmenter l'overprovisionning.
Par rapport à ça...

On est bien d'accord qu'il faut que le contrôleur du SSD sache que tu as voulu faire de l'overprovisionning, et que tu utilises moins d'espace que la capacité totale. Sinon, le contrôleur va juste laisser cet espace inutilisé, sans y toucher...
De ce que j'ai compris (attention, je ne suis pas expert), le contrôleur du SSD ne sait pas comment tu partitionnes ton disque.

Du coup, comment ça se passe pour faire comprendre ça au contrôleur du SSD?
* Est-ce que tu utilises un outil du constructeur Samsung pour le configurer?
* Est-ce que le contrôleur détecte ça automatiquement d'une autre façon? Si oui, comment?

Autre question : pourquoi avoir limité l'overprovisionning autour de 10%, vu que tu as besoin de moins de 100Go sur un disque de 500Go? Tu ne pouvais pas monter à 30% ou 40% par exemple?

Leon.

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #6 le: 18 novembre 2016 à 09:43:03 »
D’après ce que j'ai compris, le SSD sait que personne n'a jamais écrit sur ces bloques. (cela ne me semble possible que si on est le premier utilisateur du SSD)

C'est donc pour cette raison que j'ai préféré faire un partitionnement classique : (l partition ft32, c'est pour le démarrage l'UEFI)
# parted -l
Modèle: ATA Samsung SSD 850 (scsi)
Disque /dev/sda : 512GB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : gpt

Numéro  Début   Fin     Taille  Système de fichiers  Nom  Fanions
 1      1049kB  538MB   537MB   fat32                     démarrage
 2      538MB   30,5GB  30,0GB  ext4
 3      30,5GB  31,5GB  1000MB  linux-swap(v1)
 4      31,5GB  452GB   420GB   ext4


vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #7 le: 18 novembre 2016 à 09:46:10 »
Tu ne voudrais pas partager quelques graphs d'avant/après ? :)

Données Smart du SSD neuf (avec l'utilitaire Samsung, sous Windows) :


Données Smart aujourd'hui, après 8 jours d'utilisation :

# smartctl -a /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-47-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     Samsung SSD 850 PRO 512GB
Serial Number:    S39FNWAH978067B
LU WWN Device Id: 5 002538 d703ab405
Firmware Version: EXM02B6Q
User Capacity:    512 110 190 592 bytes [512 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Nov 18 09:45:14 2016 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00)   Offline data collection activity
               was never started.
               Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)   The previous self-test routine completed
               without error or no self-test has ever
               been run.
Total time to complete Offline
data collection:       (    0) seconds.
Offline data collection
capabilities:           (0x53) SMART execute Offline immediate.
               Auto Offline data collection on/off support.
               Suspend Offline collection upon new
               command.
               No Offline surface scan supported.
               Self-test supported.
               No Conveyance Self-test supported.
               Selective Self-test supported.
SMART capabilities:            (0x0003)   Saves SMART data before entering
               power-saving mode.
               Supports SMART auto save timer.
Error logging capability:        (0x01)   Error logging supported.
               General Purpose Logging supported.
Short self-test routine
recommended polling time:     (   2) minutes.
Extended self-test routine
recommended polling time:     ( 265) minutes.
SCT capabilities:           (0x003d)   SCT Status supported.
               SCT Error Recovery Control supported.
               SCT Feature Control supported.
               SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       263
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       4
177 Wear_Leveling_Count     0x0013   100   100   000    Pre-fail  Always       -       0
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   073   072   000    Old_age   Always       -       27
195 Hardware_ECC_Recovered  0x001a   200   200   000    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x003e   100   100   000    Old_age   Always       -       0
235 Unknown_Attribute       0x0012   100   100   000    Old_age   Always       -       0
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       251043383

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]


SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
  255        0    65535  Read_scanning was never started
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #8 le: 18 novembre 2016 à 09:46:29 »
Descriptions de certains attributs SMART des SSD Samsung :
  • ID 5 Reallocated Sector Count : Nombre de secteurs ayant été réalloués. Quand le disque dur obtient une erreur de lecture/écriture/vérification sur un secteur, il note ce secteur comme réalloué et transfère les données vers un nouveau secteur situé dans une zone réservée spéciale.
  • ID 9 Power-On Hours : Nombre d’heures pendant lequel le lecteur a été en fonctionnement. Cette valeur est un simple indicateur du comportement de l’utilisateur, et n’est pas directement liée à l’état de fonctionnement du lecteur. La valeur brute de cet attribut indique le nombre total d’heures (ou, selon le constructeur, de minutes ou de secondes) de fonctionnement du disque. Lorsque l’ordinateur est en mode de veille prolongée, la valeur Power-On Hours n'augmente pas.
  • ID12 Power-on Count : Nombre de cycles de mise sous/hors tension complets du disque.
  • ID 177 Wear Leveling Count : Représente le nombre d’opérations d’effacement effectuées sur le support (le nombre de fois qu’un bloc a été effacé).
  • ID 179 Used Reserved Block Count : Représente le nombre total de blocs réservés ayant été utilisés suite à un échec d’une demande programme ou d’une demande d’effacement.
  • ID 181 Program Fail Count : Nombre de demandes programme (d’écriture) ayant échoué.
  • ID 182 Erase Fail Count : Nombre de demandes d’effacement ayant échoué.
  • ID 183 Runtime Bad Count : Correspond à la somme de Program Fail Count et de Erase Fail Count. Cette valeur récapitulative représente le nombre total cumulé d’échecs de demandes programme et de demandes d’effacement.
  • ID 187 Uncorrectable Error Count : Nombre total d’erreurs n’ayant pas pu être corrigées via ECC.
  • ID 190 Air Flow Temperature : Température actuelle des puces NAND situées à l’intérieur du SSD.
  • ID 195 ECC Error Rate : Nombre d’erreurs corrigibles. Nombre d’erreurs corrigées par le mécanisme interne de correction d’erreurs.
  • ID 199 CRC Error Count : Nombre d'erreurs CRC (Cyclic Redundancy Check). Le moteur CRC utilise cet attribut pour comptabiliser le nombre de problèmes se produisant entre l'hôte et la mémoire flash DRAM ou NAND.
  • ID 235 POR Recovery Count : Nombre de cas de mise hors tension soudaine. En cas de mise hors tension soudaine, le microcode doit récupérer l’ensemble des données de mappage et des données utilisateur lors de la prochaine mise sous tension. Cet attribut comptabilise le nombre de fois où cette séquence s’est produite.
  • ID 241 Total LBAs Written (attribut SMART 241) : Représente la taille totale des blocs LBA (Logical Block Addressing) requis pour traiter l’ensemble des demandes d’écriture envoyées au SSD depuis l’hôte. Pour calculer la taille totale (en octets), il faut multiplier la valeur remontée par SMART par 512.
  • ID 252 Vendor Specific (attribut SMART 252) : Pas d'information sur cet attribut disponible sur certains SSD Samsung.

J'ai déjà donc écrit en 8 jours 251043383 x 512 octets = 128,5 Go ?
Je suis étonné, car avec 36 Go de données restaurées + OS, cela fait 92,5 Go sur 8 jour, soit 11,5 Go par jour.

Or les fichiers RRD de SmokePing font 450 Mo. Si ils sont écrits en entier toutes les 5 minutes, cela fait 450 * 288 = 129,6 Go par jour d'écrit


16 Go = 16 000 000 000 octets.


Les détails ci-après sont renseignés pour chaque attribut SMART :
  • ID : Nom décimal de l’attribut SMART.
  • Description : Nom de l’attribut SMART.
  • Seuil : Seuil à partir duquel la valeur normalisée est considérée comme « dépassant les spécifications ».
  • Valeur actuelle : Valeur normalisée actuelle de l’attribut.
  • Pire valeur : Valeur la plus médiocre signalée relativement au lecteur sélectionné pour un attribut donné.
  • Données brutes : Valeur brute affectée à l’attribut SMART par le fabricant du lecteur.
  • Status : Indique si le système peut ou non effectuer un traitement sur le lecteur.

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 004
  • Conflans Sainte Honorine (78)
Le SSD de LaFibre.info
« Réponse #9 le: 18 novembre 2016 à 16:53:14 »
Par rapport à ça...

On est bien d'accord qu'il faut que le contrôleur du SSD sache que tu as voulu faire de l'overprovisionning, et que tu utilises moins d'espace que la capacité totale. Sinon, le contrôleur va juste laisser cet espace inutilisé, sans y toucher...
De ce que j'ai compris (attention, je ne suis pas expert), le contrôleur du SSD ne sait pas comment tu partitionnes ton disque.

Du coup, comment ça se passe pour faire comprendre ça au contrôleur du SSD?
* Est-ce que tu utilises un outil du constructeur Samsung pour le configurer?
* Est-ce que le contrôleur détecte ça automatiquement d'une autre façon? Si oui, comment?

Autre question : pourquoi avoir limité l'overprovisionning autour de 10%, vu que tu as besoin de moins de 100Go sur un disque de 500Go? Tu ne pouvais pas monter à 30% ou 40% par exemple?

Leon.

Pour le coup, je pourrais répondre à tout ça avec précision (en y ajoutant mes spéculations sur comment cela devrait fonctionner).
Quoi qu'il en soit, le contrôleur n'a aucune raison de connaitre le partitionnement ou le filesystem. En fait le contrôleur ne sert à faire que la relation émulation secteur/piste (enfin numéro de bloc) et adressage linéaire des pages de la flash (blocs de 1024/2048/4096/8192/etc. octets).
Du genre (secteur,piste) = (10/12) => accès à la page de la flash à l'adresse 0x1012.
Lors d'une écriture même d'un seul octet dans le même secteur,piste/bloc, le contrôleur met la page initiale dans son garbage collector (le flags "prèt à être effacé") et réécrit les données+l'octet changé dans une nouvelle page qu'il sait libre (au pif 0x7835).
Du coup toutes lectures suivantes à (10/12) => accès à la page de la flash à l'adresse 0x7835.
En gros ce n'est qu'une espèce d'immense MMU avec translation d'adresse pour parler CPU.
Le garbage collector s'amuse en IDLE à regrouper les données pour toujours avoir un pool de secteurs effacés: quand on efface la flash, on ne peut pas effacer une seule page mais un groupe (genre 32/128 pages ensemble + contrainte sur l'écriture en parallèle, etc.).
Le trim c'est pratique pour marquer directement les secteurs utilisés d'un fichier effacé comme effacé au niveau du contrôleur (au lieu comme sur les FS sur DD de juste mettre un flag dans l'entête du fichier, et les secteurs seront bêtement réécrit).

corrector

  • Invité
Le SSD de LaFibre.info
« Réponse #10 le: 18 novembre 2016 à 23:41:01 »
On ne peut pas écrire un seul octet sur un périphérique "bloc". ;)

vivien

  • Administrateur
  • *
  • Messages: 47 088
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #11 le: 19 novembre 2016 à 06:55:47 »
Autre question : pourquoi avoir limité l'overprovisionning autour de 10%, vu que tu as besoin de moins de 100Go sur un disque de 500Go? Tu ne pouvais pas monter à 30% ou 40% par exemple?
Pour de futur usages, notamment vidéo : aujourd'hui je mets des liens Youtube des vidéos qui sont malheureusement supprimés par les marques.

Exemples : toutes les vidéos de B&You ont été supprimés par Bouygues Telecom

Bref, pour avoir qq chose de pérenne dans le temps un hébergement en interne semble important.

Mettre ces vidéos sur Youtube pose un pb : la musique utilisée est généralement détectée par Youtube qui force la publicité et interdit la vidéo dans certains pays.

J'ai par exemple eu ce pb avec la vidéo d'un pub de 2004 de Bouygues Telecom :