Jinými slovy, ten disk jste ve skutečnosti nikdy nedostal do srágorek, ze kterých se nejsnáz dostane jen tak, že ho prostě celý vygumujete, otrimujete, zkontrolujete zarovnání, naformátuje na NULY, znovu otrimujete a znovu naplníte.
Zrovna tenhle kousek jsem opravdu nešetřil, za těch šest let byl fakt na spoustě různých místech, včetně toho že byl téměř úplně plný, měsíce se netrimoval oddíl (NTFS3G) a byly na něm něm torrenty u RPi, měl jsem na něm i qcow2 image s nějakými pokusy, když už se mi nevešly primární pool atp.
Nicméně to je teď vcelku jedno.
Spíš mě trochu zarazily ty doporučované procedury.
Předpokládejme, že tam není chyba v zarovnání (nepravděpodobné, a jednoduše jde ověřit).
Přesunete data jinam, spustíte TRIM (všechny položky na neobsazených LBA se ve FTL mapě v SSD zneplatní), zkopírujete data zpátky.
Po tom kopírování zpátky to už bude kontinuálně zapsané, ideálně rozložené na všechny čipy a odstraní se všechny "díry" a diskontinuity po předchozím GC, když se na původním filesystému modifikovaly soubory.
Tohle v drtivé většině úplně stačí a nejsou potřeba další kroky.
Jestli to z nějakého důvodu chci odstranit sakumprásk včetně filesystémů s jejich metadaty, tabulky s oddíly atp., použiju blkdiscard, který TRIMuje všechna LBA na daném zařízení. Ale zas jako předtím to pracuje jen s tou mapou.
Byť jak jsem předtím zmiňoval, byť moc nevěřím na nějaký magický refresh, tak pokud bych chtěl jít opravdu do všech buňek i mimo uživatelskou oblast, tak rozhodně nebudu posílat žádné "NULY", ať už při inicializaci fs, nebo třeba přes dd if=/dev/zero of=/dev/sda.
Už i třeba kvůli tomu, že krom toho, že to trvá dlouho a leze to zas přes SLC, tak na buňkách to ve valné většině jako žádné nuly nekončí. Je tam po cestě typicky nějaká forma scramblingu.
Kdybych tohle chtěl, tak použiju přímo ATA command.. SECURITY ERASE UNIT, který se dá spustit na Linuxu přes hdparm a na Windows přes ty vendor utilitky.
https://www.putorius.net/securely-erase-a-sata-hard-drive-hdparm-linux.htmlTo je blokující operace, která typicky udělá to, že firmware SSD smaže komplet všechny položky ve FTL mapě a restartne firmware.
Je tam ale i varianta příkazu SECURITY ERASE UNIT ENHANCED. Tam už buňky přepíše výchozí hodnotou (u NANDů to bude nejspíš 1) a trvá to déle, i když pořád řádově rychleji než z hosta.
Nicméně pořád záleží, co tam přesně konkrétní výrobce ve FW implementuje, někdy oba příkazy udělají to samé.
Trochu novější variantou, která byla přidána až do pozdějších variant toho ATA standardu, je pak SANITIZE. Ten je ve třech variantách BLOCK ERASE, OVERWRITE a CRYPTO SCRAMBLE. Ta první víceméně odpovídá staršímu SECURITY ERASE, další
má pak možnost přepsat bloky nějakým čtyřbajtovým patternem s volitelným počtem přepisů (ale používá se primárně na HDD a SSD ji moc neimplementují) a poslední je pak verze pro SEC (self-encrypting) SSD, kde to smázne klíče.
Taky se to dá spustit z hdparm (i když to není v manuálových stránkách, jen v helpu po spuštění příkazu).
Víceméně analogické příkazy jsou pak i na SCSI/SAS nebo NVMe.. tzn. spustitelné přes sg3_utils nebo nvme-cli.