Dostal som náhradu za môj Samsung MZVLW256HEHP-000L7 NVMe 256 GB M.2 PCI Express X4 SSD, známy jednoducho aj ako Samsung PM961. Je to OEM komponent. Po výmene za nový disk Samsung 980 1 TB som starý dal do predaja. Bol to môj každodenný disk, takže som nechcel, aby z neho boli obnoviteľné žiadne zmysluplné dáta. Pripojil som ho k počítaču cez USB na NVME M.2 redukciu (AXAGON EEM2-SG2), ktorú mimochodom teraz môžem odporučiť (bez affiliate odkazu, prepáč), a spustil starý postup bezpečného mazania pre magnetické HDD disky pomocou nástroja shred:

Upozornenie: nasledujúci príkaz(y) NENÁVRATNE zničia tvoje dáta. Pokračuj len vtedy, ak rozumieš dôsledkom!

shred -vfz /dev/sdX

Ale počkaj! shred ani podobný nástroj ako dd nie je najlepší spôsob bezpečného mazania SSD! Vlákno odporúča nástroj blkdiscard:

blkdiscard -s /dev/sdX

Tento príkaz by nemal znižovať životnosť SSD tak drasticky ako shred, no vyzerá to tak, že dáta sú stále celkom obnoviteľné (závisí to od modelu ohrozenia). U mňa to však nefungovalo:

blkdiscard: /dev/nvme0n1: BLKSECDISCARD ioctl failed: Operation not supported

Pri hľadaní ďalej na internete mi zrazu svitlo, že existuje aspoň tucet spôsobov, ako „bezpečne a správne vymazať NVMe SSD”.

Začal som s týmto príspevkom opisujúcim, ako možno ATA SSD disky rýchlo bezpečne vymazať jednoduchou zmenou šifrovacieho hesla pomocou nástroja hdparm:

hdparm --user-master u --security-set-pass hunter1 /dev/sdX
hdparm --user-master u --security-erase hunter1 /dev/sdX

Toto zlyhalo, ale čakal som to, keďže môj disk bol NVME SSD, nie SATA SSD. Výstup pre záznam:

Issuing SECURITY_SET_PASS command, password="hunter1", user=user, mode=high
SECURITY_SET_PASS: Inappropriate ioctl for device

Toto ma však naviedlo na správnu stopu, keďže som o celej tejto „šifrovacej heslá” králičej nore nevedel nič. Ďalšie hľadanie ma priviedlo k ďalšiemu príspevku vysvetľujúcemu rovnaký postup, ale pre NVME disky pomocou nástroja nvme-cli. Presne to som potreboval. Rýchly pohľad na možnosti:

sudo pacman install nvme-cli
man nvme format
man nvme sanitize

Toto je pravdepodobne to, čo som potreboval – bezpečne vymazať disk pri resetovaní kryptografického hesla disku počas procesu (-s2):

nvme list
nvme format -s2 /dev/nvme0n1

Spustenie NVME sanitize by bolo pravdepodobne ešte lepšou možnosťou, keďže sa zdá, že vymaže aj vyrovnávacie pamäte, nielen dáta v namespace, ale na obe by som určite potreboval viac času na štúdium. Navyše sa mi ani nepodarilo správne spustiť, keďže sa sťažoval na neplatný argument sanitize. Odporúčam urobiť vlastný výskum.

Nástroj nvme však zlyhal hneď v prvom kroku pri výpise zariadení pomocou nvme list. Dôvodom je, že USB na NVME M.2 redukcia pravdepodobne neimplementuje všetky požadované príkazy, ako naznačuje tento komentár.

Tak som starý NVME vložil späť do laptopu a nabootoval živý linuxový obraz z USB. Teraz bol NVME pripojený cez natívne PCIe linky bez akejkoľvek USB redukcie a príkaz nvme list správne rozpoznal disk a vypísal podrobné informácie o Node, Generic, SN, Model, Namespace, Usage, Format a FW Revision disku PM961.

Debian live si nesťažoval, ale Arch live, pravdepodobne kvôli novšej verzii nvme-cli, pred výpisom nvme list trochu zaprotestoval, no nakoniec pokračoval:

nvme0: Identify(0x6), Invalid Field in Command (sct 0x0 / sc 0x2)

Opätovné spustenie príkazu nvme format zlyhalo spektakulárne na Debian live:

NVMe status: INVALID_OPCODE: The associated command opcode field in not valid(0x2001)

Na Arch live bola chyba, ako sa dalo čakať, o niečo podrobnejšia:

nvme0: Format NVM(0x80), Invalid Command Opcode (sct 0x0 / sc 0x1)
NVMe status: Invalid Command Opcode: A reserved coded value or an unsupported value in the command opcode field(0x2001)

Au. Je to zdokumentované tu a tu, že ide o známy bug pre Samsung PM951 a PM961 a jednoduché uspanie by malo problém vyriešiť. Na krátku chvíľu som bol šťastný. Žiaľ, ani toto u mňa nefungovalo. Správanie sa nezmenilo. Od tohto bodu to išlo steeple dolu.

Ďalšie návrhy v oboch GitHub vláknach boli použiť Lenovo EFI aplikáciu, čo je bootovateľný obraz fungujúci na ThinkPadoch (vtedy som ešte stále používal verný T470) určený na vymazanie kryptografického kľúča na SSD. Nepodarilo sa mi spustiť tento softvér žiadnymi prostriedkami – ani v UEFI móde, ani v Legacy BIOS móde, ani v žiadnej inej kombinácii, ktorá mi napadla (je tam poznámka, že je podporovaný len v UEFI alebo UEFI First boot móde).

Ďalšou možnosťou je Lenovo NVME Firmware Utility pre Windows (ale môžem dual-bootovať z mSATA PCIex1 Transcend 430S 512 GB interného SSD disku), no podľa týchto inštrukcií sa zdá, že aktualizačný nástroj by sa dal spustiť aj na Archu alebo inej linuxovej distribúcii (opäť, netestované). Pri skúšaní na Windows správne identifikoval prítomnosť Transcend 430S aj Samsung PM961, ale neponúkol aktualizáciu firmvéru pre žiadny z nich. Takže ani tu šťastie.

Ako posledná možnosť som skúsil jednoduchšiu možnosť aktualizácie firmvéru, teda fwupdmgr ktorý je súčasťou balíka fwupd package, ale ako som čakal, Samsung PM961 SSD si nevybral na aktualizáciu. Aktualizoval však môj Intel Management Engine a System Firmware, čo bol podľa mňa BIOS, keďže ďalší reštart aktualizoval BIOS na novú verziu so zmenami v EFI (ktoré boli spomínané počas inštalačného procesu), čo si následne vyžiadalo preinštalovanie GRUBu z live Arch. Život na hrane.

Toto je koniec. Na začiatku som si myslel, že to bude jednoduché formátovanie zariadenia a tu som uprostred noci s diskom, ktorý stále nie je pripravený odovzdať cudziemu človeku. Pravdepodobne pôjdem cestou shred a budem dúfať v to najlepšie. Zaželaj mi šťastie!

Aktualizácia 19. apríla 2024 #

Dostal som email od Tima Smalla tim@seoss.co.uk s pár doplneniami k tejto téme. Súhlasil aj s tým, aby som túto aktualizáciu zverejnil spolu s menom a emailom autora, čo je vždy milé, tak som to urobil. Tu je doslovný preklad príspevku:

Ahoj Peter,

Ďakujem za tvoj blogový príspevok. Narazil som na rovnaký problém pri pokuse o vymazanie PM951.

Našiel som článok v „znalostnej báze” Blanco (komerčný softvér na mazanie diskov). Hovorí:

„Tento problém sa týka diskov Samsung PM951 NVMe (256/512 GB) a Blancco Drive Eraser 6.x verzií.” … „mazanie zlyhá s nasledujúcou správou: ‚FORMAT UNIT command failed. Device is NVMe, see manual for more information’. V tomto prípade disk správne nereaguje na príkaz firmvérového mazania ‚format unit’ nvme.”

Riešením tohto problému je vynútiť proces Freeze Lock Removal v Blancco Drive Eraser pomocou vlastnej možnosti spustenia.”

„Pridaj flr=forced na koniec príkazu.”

Keďže som mal po ruke Dell Optiplex 7070 (a bol som pod časovým tlakom), rozhodol som sa použiť možnosť „Data wipe” v firmvéri tohto stroja, keďže som predpokladal, že bude obsahovať všetky potrebné tajné príkazy na bezpečné vymazanie týchto diskov.

Na zdravie,

Tim.

Ak niekto zistí, že to naozaj funguje, daj mi vedieť, keďže disk už nemám na otestovanie. Enjoy!

Aktualizácia 12. februára 2026 #

Veľká vďaka patrí Lennartovi Finkemu a jeho blogu za opravy preklepy v tomto príspevku. Na zdravie!

Odkazy #