BadBird писал(а): ↑22 окт 2018, 21:54
Вообще то в современных ссд это делает сам ссд (есть у него скрытая область).
Вы немного логику включите - вот как ssd САМ может знать какие блоки заняты полезной нагрузкой а какие - нет? Для этого ему надо как минимум понимать все виды файловых систем, и как в них обозначается занятое и не занятое место. (Когда вы файл стираете - занятое им место отнюдь не затирается физически, изменения делаются только в структурах каталогов, маркируя место как свободное.) Иначе получится, что вот этот ssd, например, знает и поддерживает только ntfs, а этот - ext4 и ntfs и т.д...
Trim - это комплексная задача. Сначала ОС отдает ssd данные о том что такие-то блоки свободны. Только потом ssd может выполнять их очистку. Ранее сам процесс очистки контролировался той же os напрямую, ssd умели только сразу выполнять команду переданную по интерфейсу - "блоки такие-то - очистить". Современные диски умеют чистить блоки фоном, в свободное время, да. Но данные о том какие именно блоки подлежат очистке все равно должна им передать ОС. Вообще-то, делать это по идее должно ядро, и в большинстве случаев, оно это делает. Но иногда до сих пор казусы случаются, и попадаются ядра где эта фича выключена. А вот через fstrim - можно заставить ssd принять данные о свободных блоках.