Ještě doplním, že jsem to podrobně rozebíral před rokem v blogu: Proč u SSD disků používáním klesá výkon.
Článků jsem přečetl několik, ale všechny "mlží". Pořád nechápu, když smažu soubor, co se přesně kam zapíše.
"Disk samotný tedy doopravdy neví, že se jedná o sektory k novému použití, data tam přeci zůstala. Ví to jen operační systém, který si to zapsal někam na disk a příště se rozhodne, že tam zapíše něco nového."
Výrobci o tomhle samozřejmě vědí a existuje několik řešení, tím nejpoužívanějším a nejzajímavějším je TRIM. Je to vlastně příkaz, kterým systém informuje SSD disk o tom, že je možné interně vymazat určité bloky, protože systém je považuje za nepoužívané.
Systém info o smazání musí zapsat na disk, protože po restartu by se to info jinak ztratilo. Pokud ale na disku leží info, co je smazáno, proč je pak nutné, aby OS posílal TRIM, když si FW disku tohle info může přečíst?
Nevím, zda se ptáte na to, co myslím, ale pokud ano, pak by Vám mohlo pomoci toto:
Uvědomte si, že disk jako takový neví nic o funkci souborového systému, který je na něm uložen. Když se tedy smažou data, OS si v souborovém systému poznačí, že blok je volný, ale pro disk to znamená jen nějaký zápis dat někam. To je důvod, proč smazané soubory lze z disku (ale i paměťových karet obnovit).
TRIM proti tomu říká SSD disku, že tento logický sektor/blok je uvolněný a je ho možno ho smazat a mít tak připravený pro budoucí zápis dat. Aby to nebylo tak jednoduché, tak se v tomto typu paměti nebude mazat po sektorech, ale po blocích (128 kB -> několik MB).
Někdo by mohl napsat, zda TRIM platí pro celý blok, nebo pouze pro daný sektor, a teprve, když jsou volné všechny sektory v bloku, tak se prování na pozadí TRIMming (něco jako Garbage collection ve vyšších prog. jazycích).
Mimochodem, forenzní analýza takového disku bude stále možná, ale výrazně složitější a možná destruktivní - bude nutno data vyčítat přímo z pamětí, možná by ještě šlo nahrát upravený FW, s vypnutím TRIMmingu? Obojí je ale zásahem do disku.
No nevim, problem nejdriv cteni a pak zapisu byl, ze interne ma SSD 4kB sektory, ale OS to bral jako 512B bloky. Takze pokud bylo treba zmenit jen par bajtu, tak se poslal jeden 512B blok, jenze SSD muselo nacit cely 4kB blok a ten modifikovat. Dnes uz to davno neplati. SSDcku OS posila proste nejmene 4kB bloky (nebo jeho nasobky) a hotovo. Pocitam, ze na SSD uz OS ani nedovoli dat mensi velikost sektoru pro filesystem nez 4kB. Cili nejake operace mazani jsou naprosty nesmysl. Navic i kdyby neposilal 4kB sektory, tak by nebyl duvod cosi kdesi fyzicky mazat a prepisovat na nuly, jen v lookup tabulce by se dany sektor oznacil jako smazany a tudiz potencialne vyuzitelny. Navic s tim, ze lookup tabulka by kvuli zpetne kompatibilite musela byt 8x vetsi. Pochybuju, ze nejaky novejsi (rekneme rok, dva) vubec jeste 512bajtove adresovani podporuje.
Problem je, ze tych 4kB je "logicky" sektor, ktory SSD emuluje. V skutocnosti su fyzicke bloky na SSD radovo MB az desiatky MB. Vyplyva to z typu pouzitych FLASH pamati - FLASH znamena blesk, cize aby sa blok vymazal, musi sa aktivovat "vybojka" nad danym blokom, ktora blok vymaze. Az potom sa tam moze zapisovat. Zvycajne to funguje tak, ze sa vsetky bity v bloku nastavia na 1 a zapisuju sa len nuly. Toto sa moze lisit od vyrobcu. Takisto "vybojka" je realizovana rozne. Kedysi sa dal vymazat iba cely chip naraz, teraz su uz chipy delene do mensich blokov, kvoli zjednoduseniu zapisu.