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).