Jaki jest zalecany sposób na opróżnienie dysku SSD?

53

Właśnie otrzymałem nowy dysk SSD od czasu śmierci starego. Ten dysk SSD Intel 320 obsługuje TRIM. Do celów testowych mój dealer umieścił na nim Windows, ale chcę się go pozbyć i zainstalować na nim Kubuntu.

To nie musi być „bezpieczne czyszczenie”, po prostu potrzebuję opróżnić dysk w najbardziej zdrowy sposób. Uważam, że dd if=/dev/zero of=/dev/sdapo prostu wypełnia bloki zerami i tym samym bierze kolejny zapis (popraw mnie, jeśli się mylę).

Widziałem odpowiedź Jak włączyć TRIM , ale wygląda na to, że nadaje się do usuwania pustych bloków, a nie do czyszczenia dysku.

hdparmwydaje się być programem do tego, ale nie jestem pewien, czy wyczyści dysk LUB czy wyczyści puste bloki. Ze strony podręcznika:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

Jak sprawić, aby wszystkie bloki wyglądały na puste przy użyciu TRIM?

Lekensteyn
źródło
Dobre pytanie, może wystarczy usunąć system plików NTFS?
htorque
1
Dlatego to tylko komentarz. ;) Można jednak najpierw sprawdzić niektóre sektory na tej partycji sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, a następnie usunąć partycję NTFS przy użyciu najnowszej wersji Gparted i ponownie sprawdzić za pomocą tego samego polecenia - jeśli dane zostaną wyczyszczone, zobaczysz tylko zera.
htorque
1
@htorque: Właśnie go przetestowałem, ale nie działa, użyłem hexdump -C /sda1i hexdump -C /sda1do określenia bloku początkowego. Fajny pomysł.
Lekensteyn
1
@ Lekensteyn - miałem na myśli, że to trochę język w policzek i poniżej podałem właściwą odpowiedź. Artykuł Jeffa ma również trochę na temat wydajności, dlatego używa ich pomimo wskaźnika awaryjności :-)
Rory Alsop
3
Nadal nie rozumiem, dlaczego musisz go usunąć ... dlaczego nie możesz po prostu sformatować go z Ext4 lub czymkolwiek?
Nathan Osman

Odpowiedzi:

52

Bezpieczne usuwanie ATA

Powinieneś użyć funkcji usuwania zabezpieczeń dysku .

  1. Upewnij się, że zabezpieczenia dysku nie są zablokowane . Jeśli tak, może pomóc w zawieszeniu i wznowieniu pracy komputera.

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    Dane wyjściowe polecenia (filtrowane) oznaczają, że ten dysk nie został „zamrożony” i można kontynuować.

  2. Ustaw hasło użytkownika (to hasło jest również usunięte, dokładny wybór nie ma znaczenia).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Wydaj polecenie ATA Secure Erase

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

Uwaga:

  • /dev/sdX to dysk SSD jako urządzenie blokowe, które chcesz usunąć.
  • Eins to hasło wybrane w tym przykładzie.

Zobacz artykuł ATA Secure Erase na wiki jądra Linux, aby uzyskać pełne instrukcje, w tym rozwiązywanie problemów.

psusi
źródło
Dzięki za link, wygląda dobrze dla tych, którzy mają BIOS, który go obsługuje, ale mój nie wydaje się go obsługiwać. (zamrożony)
Lekensteyn
Hurra! Po ponownym przeczytaniu artykułu przeczytałem, że „Przełączanie mojego systemu w tryb uśpienia” (notebook Clevo M865TU) również działało --- i może to również spowodować zresetowanie innych dysków jako „niezamrożonych”. i wypróbowałem go, ponieważ mój również pochodzi z Clevo (ale BTO go zbudował). Działa, widzę teraz „niezamrożony”. ... ale krok 3 nie powiódł się „ERASE_PREPARE: Zły adres”, ponieważ zastąpiłem sudo czasem zamiast przygotowywać się do polecenia!
Lekensteyn
1
OMG działało i zajęło tylko 19 sekund! Wielkie dzięki! Chciałbym móc cię zagłosować dziesięć razy: D
Lekensteyn
Chciałem tylko zgłosić, że powyższa zaakceptowana odpowiedź ma zepsuty link. Bez wspomnianego linku jest to całkiem bezużyteczne, czy ktoś chce opublikować streszczenie tego linku?
Ashimema,
@Ashimema: Łącze jest obecnie zerwane, ponieważ kernel.org został zhakowany i dlatego nie działa z powodu konserwacji. Pamięć podręczna Google jest pusta, ale ten blog ją skopiował: peter.membrey.hk 2011
09/
30

util-linux 2.23 oferuje blkdiscardodrzucanie danych bez ich bezpiecznego czyszczenia. Testowałem: działa na SATA i mmcblk, ale nie na USB.

Fragment strony podręcznika blkdiscard(8):

IMIĘ

blkdiscard - odrzuca sektory na urządzeniu

STRESZCZENIE

blkdiscard [-o offset] [-l length] [-s] [-v] device

OPIS

Blkdiscard służy do odrzucania sektorów urządzeń. Jest to przydatne w przypadku sterowników półprzewodnikowych (SSD) i pamięci masowej alokowanej elastycznie. W przeciwieństwie do fstrim (8) polecenie to jest używane bezpośrednio na urządzeniu blokowym.

Domyślnie blkdiscard odrzuca wszystkie bloki na urządzeniu. Opcje mogą być użyte do modyfikacji tego zachowania w oparciu o zakres lub rozmiar, jak wyjaśniono poniżej.

Argumentem urządzenia jest ścieżka do urządzenia blokowego.

OSTRZEŻENIE: Wszystkie dane w odrzuconym regionie urządzenia zostaną utracone!

Komenda jest dostępna od wersji Ubuntu 15.04 i OpenSUSE 13.1 (tak, OpenSUSE ma ją 2 lata przed Ubuntu).

Tankman 六四
źródło
dziękuję za dodanie informacji do tego przestarzałego postu i zapraszamy do askubuntu.
mondjunge 30.09.13
Arch Linux ma już ten pakiet, ponieważ program util-linux 2.23 został wydany 25 kwietnia 2013 r.
Lekensteyn
4
Dzięki za powitanie. Nieaktualny post? Stare, ale nieaktualne, o ile pojawia się na 1. stronie wyników wyszukiwania Google, zawsze pojawiają się nowi faceci szukający tej samej odpowiedzi. Dla mnie to jest przestarzałe tylko wtedy, gdy lepsze strony wypychają go z 1. strony wyników Google.
Tankman 六四
3
Jeśli zastanawiasz się różnicę między blkdiscardi hdparmpolecenie, to zostanie odebrane tutaj : „Podczas korzystania blkdiscard, dysk SSD (zakładając SATA SSD) otrzyma polecenie TRIM ATA, natomiast hdparm --security kasowanie wyda ATA Security ERASE Polecenie UNIT. To, co napęd faktycznie robi, zależy od szczegółów implementacji oprogramowania wewnętrznego tego dysku SSD. ”
Lekensteyn,
2
Tak naprawdę nie chcesz używać blkdiscard. Po pierwsze, ma na celu poinformowanie dysku, że niektóre jego części mogą zostać wyrzucone, a nie wyczyszczenie całości. Dysk może, ale nie musi, faktycznie usunąć dane. Polecenie bezpiecznego wymazywania musi usunąć wszystkie dane, w tym wszelkie dane znajdujące się w częściach dysku, które nie są obecnie dostępne. Edycja: wystarczy ponownie przeczytać pytanie i zdać sobie sprawę, że nie wymagało to usunięcia, ale nadal warto je odnotować.
psusi
5

Jeśli nie potrzebujesz bezpiecznego czyszczenia, dlaczego po prostu nie zainstalujesz kubuntu, korzystając z opcji „użyj całego dysku” i odpowiednika „szybkiego formatu” (nie pamiętam teraz dokładnej terminologii)

W ten sposób porzucisz tabelę alokacji plików, a dysk zostanie skutecznie opróżniony w celu zastąpienia. W rzeczywistości nie musisz go opróżniać.

Rory Alsop
źródło
2
Zobacz anandtech.com/show/2865/2 . Usunięcie bloku to nie to samo, co usunięcie go i oznaczenie go jako pustego.
Lekensteyn
@Lekensteyn Usunięcie nic nie znaczy dla urządzenia blokowego. Instalator wywoła mkfs.ext4 i odrzuci całe urządzenie; jest to tak samo bezpieczne jak „bezpieczne kasowanie”, w tym sensie, że w obu przypadkach ufasz oprogramowaniu SSD.
Tobu
1
@Tobu Tak, to się zmieniło w pewnym momencie. mkfs.ext4(8)mówi: odrzuć - Próba odrzucenia bloków w czasie mkfs (początkowo odrzucanie bloków jest przydatne na urządzeniach półprzewodnikowych i pamięciach rzadkich / cienko wyposażonych). Gdy urządzenie ogłosi, że odrzuć również zeruje dane (każdy kolejny odczyt po odrzuceniu i przed zapisem zwraca zero), a następnie zaznacz wszystkie niezerowane tabele i-węzłów jako wyzerowane. To znacznie przyspiesza inicjalizację systemu plików. Jest to ustawione jako domyślne.
Lekensteyn
@Tobu W moim przypadku użycia funkcja „Bezpieczne wymazywanie” nie musiała tak naprawdę wymazywać danych z układów pamięci flash, powinna po prostu upewnić się, że nie występują negatywne skutki wydajności wynikające z używania niektórych bloków.
Lekensteyn
1

Jeśli na dysku znajduje się plik systemu Linux, możesz użyć fstrim. Domyślnie najnowsza wersja Ubuntu działa fstrimna dyskach następujących dostawców:

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

Raz w tygodniu.

Tak więc jedną odpowiedzią na twoje pytanie jest uruchomienie systemu i poczekaj tydzień!

Bryce
źródło
1
fstrim jest wspomniany w tym poście blkdiscard , możesz go również wywołać ręcznie za pomocą sudo fstrim /(gdzie /jest punktem montowania systemu plików, który obsługuje tę discardopcję).
Lekensteyn,
-4

Wystarczy usunąć partycję, nie trzeba usuwać całego dysku, stare dane zostaną nadpisane, gdy pamięć będzie potrzebna na coś innego.

Aby włączyć TRIM:

gksudo gedit /etc/fstab

Zmień „ext4 error = remount-ro 0” na „ext4 discard, error = remount-ro 0”. (Dodaj odrzucenie)

Zapisz i uruchom ponownie, TRIM powinien być teraz włączony.

Sprawdź, czy TRIM jest włączony:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

Użyj pierwszego adresu begin_LBA.

hdparm --read-sector [begin_LBA] /dev/sda

Teraz powinien zwrócić cyfry i znaki. Usuń plik i zsynchronizuj.

rm tempfile
sync

Teraz uruchom ponownie następujące polecenie. Jeśli zwraca zero, TRIM jest włączony.

hdparm --read-sector [begin_LBA] /dev/sda
Alex
źródło
2
NIE chcesz wypełniać dysku SSD zerami, ponieważ będą one zapisywane do każdego bloku kasowania, powodując większe zużycie i pozostawiając każdy blok kasowania pełny. Również wiele napędów NIE od razu zeruje przycięte sektory.
psusi
Jasne, wymaga wielu zapisów, ale nie uszkadza dysku. Używam Corsaira F120 już od 10-11 miesięcy i często wypełniam go zerami. (Robi to przed każdym testem porównawczym) Tak więc po 30-35-krotnym wykonaniu wydajność jest nadal taka sama. (~ 285 MB odczytu, 275 MB / zapisu) SMART mówi: Dysk jest zdrowy
Alex
9
Alex, każdy zapis na SSD nieco go uszkadza. Zapis do każdego bloku kasowania powoduje, że wszystkie są zaznaczone w użyciu, co uniemożliwi prawidłowe działanie GC napędu i pogorszy wydajność. Możesz myśleć o tym jako o całym dysku unTRIM.
psusi