Was ist der empfohlene Weg, um eine SSD zu leeren?


53

Ich habe gerade meine neue SSD erhalten, seit die alte gestorben ist. Diese Intel 320 SSD unterstützt TRIM. Zu Testzwecken hat mein Händler Windows darauf installiert, aber ich möchte dies loswerden und Kubuntu darauf installieren.

Es muss nicht unbedingt ein "sicheres Abwischen" sein, ich brauche nur das Leeren der Festplatte auf die gesündeste Art und Weise. Ich glaube, das dd if=/dev/zero of=/dev/sdafüllt die Blöcke nur mit Nullen und nimmt dadurch einen anderen Schreibzugriff (korrigiert mich, wenn ich mich irre).

Ich habe die Antwort Wie man TRIM aktiviert gesehen , aber es sieht so aus, als ob es zum Löschen leerer Blöcke und nicht zum Löschen der Festplatte geeignet ist.

hdparmscheint das Programm zu sein, aber ich bin nicht sicher, ob es die Festplatte löscht oder leere Blöcke löscht. Von seiner Handbuchseite:

  --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

Wie kann ich mit TRIM alle Blöcke als leer erscheinen lassen?


Gute Frage, reicht es vielleicht aus, nur das NTFS-Dateisystem zu löschen?
htorque

1
Daher ist es nur ein Kommentar. ;) Sie könnten jedoch zuerst einige Sektoren auf dieser Partition überprüfen sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, dann die NTFS-Partition mit einer aktuellen Gparted-Version löschen und mit demselben Befehl erneut überprüfen - wenn die Daten gelöscht würden, würden Sie nur Nullen sehen.
htorque

1
@htorque: Ich habe es gerade getestet, aber es funktioniert nicht, ich habe hexdump -C /sda1und verwendet hexdump -C /sda1, um den Startblock zu bestimmen. Gute Idee.
Lekensteyn

1
@Lekensteyn - ich meinte es leicht mit der Zunge in der Wange und tauchte eine richtige Antwort für Sie unten auf. Jeffs Artikel hat auch ein bisschen Performance, weshalb er sie trotz der Fehlerrate benutzt :-)
Rory Alsop

3
Ich verstehe immer noch nicht, warum Sie es löschen müssen ... warum können Sie es nicht einfach mit Ext4 oder was auch immer neu formatieren?
Nathan Osman

Antworten:


52

ATA Secure Erase

Sie sollten die Sicherheitslöschfunktion des Laufwerks verwenden .

  1. Stellen Sie sicher, dass die Laufwerkssicherheit nicht eingefroren ist . In diesem Fall kann es hilfreich sein, den Computer anzuhalten und fortzusetzen.

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

    Die (gefilterte) Befehlsausgabe bedeutet, dass dieses Laufwerk "nicht eingefroren" ist und Sie fortfahren können.

  2. Legen Sie ein Benutzerkennwort fest (dieses Kennwort wird ebenfalls gelöscht, die genaue Auswahl spielt keine Rolle).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Setzen Sie den Befehl ATA Secure Erase ab

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

Hinweis:

  • /dev/sdX ist die SSD als Blockgerät, das Sie löschen möchten.
  • Eins ist das in diesem Beispiel gewählte Passwort.

Ausführliche Anweisungen, einschließlich der Fehlerbehebung, finden Sie im ATA Secure Erase- Artikel im Linux-Kernel-Wiki .


Danke für den Link, es sieht gut aus für diejenigen, die ein BIOS haben, das es unterstützt, aber meines scheint es nicht zu unterstützen. (eingefroren)
Lekensteyn

Hurra! Nachdem ich den Artikel noch einmal gelesen habe, habe ich gelesen, dass das Versetzen des Systems in den Energiesparmodus (Clevo M865TU Notebook) ebenfalls funktioniert hat. Dadurch werden möglicherweise auch andere Laufwerke auf "Nicht eingefroren" zurückgesetzt. und habe es ausprobiert, da meins auch ursprünglich von Clevo ist (aber BTO baut es). Es funktioniert, ich sehe jetzt "nicht eingefroren". ... aber Schritt 3 schlug mit "ERASE_PREPARE: Bad address" fehl, weil ich sudo durch time ersetzt habe, anstatt dem Befehl voranzustellen!
Lekensteyn,

1
OMG es hat funktioniert und nur 19 Sekunden gedauert! Vielen Dank! Ich wünschte, ich könnte dich zehnmal verbessern: D
Lekensteyn

Ich wollte nur melden, dass die oben akzeptierte Antwort einen fehlerhaften Link hat. Es ist ziemlich nutzlos ohne diesen Link. Möchte jemand eine Zusammenfassung dessen posten, was dieser Link gesagt hat?
Ashimema

@Ashimema: Der Link ist momentan defekt, da kernel.org gehackt wurde und daher wegen Wartungsarbeiten nicht erreichbar ist. Google Cache ist leer, aber dieser Blog hat ihn kopiert: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

util-linux 2.23 bietet an blkdiscard, Daten zu verwerfen, ohne sie sicher zu löschen . Ich habe getestet: funktioniert über SATA und mmcblk, aber nicht über USB.

Ein Auszug aus der Manualpage von blkdiscard(8):

NAME

blkdiscard - verwirft Sektoren auf einem Gerät

ZUSAMMENFASSUNG

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

BESCHREIBUNG

Mit blkdiscard werden Gerätesektoren verworfen. Dies ist nützlich für Solid-State-Treiber (SSDs) und dünn bereitgestellten Speicher. Im Gegensatz zu fstrim (8) wird dieser Befehl direkt auf dem Blockgerät verwendet.

Standardmäßig verwirft blkdiscard alle Blöcke auf dem Gerät. Mit Optionen kann dieses Verhalten basierend auf dem Bereich oder der Größe geändert werden, wie unten erläutert.

Das Geräteargument ist der Pfadname des Blockgeräts.

WARNUNG: Alle Daten im verworfenen Bereich des Geräts gehen verloren!

Der Befehl gibt es seit Ubuntu 15.04 und OpenSUSE 13.1 (ja, OpenSUSE hat es 2 Jahre vor Ubuntu).


Vielen Dank für das Hinzufügen von Informationen zu diesem veralteten Beitrag und willkommen bei askubuntu.
Mondjunge

Arch Linux hat dieses Paket bereits, da util-linux 2.23 am 25. April 2013 veröffentlicht wurde.
Lekensteyn

4
Danke für die Begrüßung. Veralteter Beitrag? Alt, aber nicht veraltet, solange es auf der ersten Seite des Google-Suchergebnisses auftaucht, gibt es immer neue Leute, die nach der gleichen Antwort suchen. Für mich ist es nur veraltet, wenn bessere Seiten es aus der ersten Google-Ergebnisseite herausschieben.
Tankman 六四

3
Wenn Sie sich den Unterschied zwischen blkdiscardund dem hdparmBefehl fragen , wird hier geantwortet : "Wenn Sie blkdiscard verwenden, erhält die SSD (unter der Annahme einer SATA-SSD) einen ATA-TRIM-Befehl, während hdparm --security-erase einen ATA-SECURITY-ERASE-Befehl ausgibt UNIT-Befehl. Was das Laufwerk dann tatsächlich tut, hängt von den Implementierungsdetails der jeweiligen SSD-Firmware ab. "
Lekensteyn

2
Sie wollen eigentlich nicht verwenden blkdiscard. Erstens ist es beabsichtigt , das Laufwerk , das bestimmte Teile davon zu informieren , können werden hinausgeworfen, das Ganze nicht zu wischen. Das Laufwerk kann die Daten möglicherweise tatsächlich löschen oder nicht. Der Befehl zum sicheren Löschen muss alle Daten löschen, einschließlich aller Daten, die sich in Teilen des Laufwerks befinden, auf die derzeit nicht zugegriffen werden kann. Bearbeiten: Lesen Sie die Frage einfach noch einmal durch und stellen Sie fest, dass keine Löschung erforderlich ist, aber es lohnt sich trotzdem, darauf hinzuweisen.
Psusi

5

Wenn Sie keinen sicheren Löschvorgang benötigen, können Sie kubuntu einfach mit den Optionen "Gesamte Festplatte verwenden" und "Schnellformatierung" installieren (die genaue Terminologie ist derzeit nicht bekannt).

Auf diese Weise verlieren Sie die Dateizuordnungstabelle und das Laufwerk wird effektiv zum Überschreiben geleert. Sie müssen es nicht wirklich leeren.


2
Siehe anandtech.com/show/2865/2 . Das Löschen des Blocks ist nicht dasselbe wie das Löschen und Markieren des Blocks als leer.
Lekensteyn

@Lekensteyn Löschen hat für ein Block-Gerät keine Bedeutung. Das Installationsprogramm ruft mkfs.ext4 auf und verwirft das gesamte Gerät. Dies ist so sicher wie ein "sicheres Löschen" in dem Sinne, dass Sie in beiden Fällen der SSD-Firmware vertrauen.
Tobu

1
@Tobu Richtig, das hat sich irgendwann geändert. mkfs.ext4(8)says: discard - Versucht, Blöcke zur mkfs-Zeit zu verwerfen (das Verwerfen von Blöcken ist anfangs auf Solid-State-Geräten und mit geringer oder geringer Kapazität bereitgestellten Speichern nützlich). Wenn das Gerät mitteilt, dass beim Löschen auch Daten auf Null gesetzt werden (jeder nachfolgende Lesevorgang nach dem Löschen und vor dem Schreiben ergibt Null), markieren Sie alle noch nicht auf Null gesetzten Inode-Tabellen als Null gesetzt. Dies beschleunigt die Initialisierung des Dateisystems erheblich. Dies ist standardmäßig eingestellt.
Lekensteyn

@Tobu In meinem Anwendungsfall musste "Sicheres Löschen" die Daten nicht wirklich von den Flash-Chips löschen. Es sollte lediglich sichergestellt werden, dass keine negativen Leistungseffekte durch die Verwendung einiger Blöcke auftreten.
Lekensteyn

1

Wenn auf dem Laufwerk ein Linux-Dateistamm vorhanden ist, können Sie diesen verwenden fstrim. Standardmäßig läuft aktuelles Ubuntufstrim auf Laufwerken folgender Hersteller:

    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

Wöchentlich.

Eine Antwort auf Ihre Frage ist also, das System hochzufahren und eine Woche zu warten!


1
Wenn fstrim in diesem Beitrag von blkdiscard erwähnt wird , können Sie es auch manuell aufrufen sudo fstrim /(wobei /es sich um einen Einhängepunkt eines Dateisystems handelt, das die discardOption unterstützt ).
Lekensteyn

-4

Entfernen Sie einfach die Partition, Sie müssen nicht die gesamte Festplatte löschen, alte Daten werden überschrieben, wenn der Speicher für etwas anderes benötigt wird.

So aktivieren Sie TRIM:

gksudo gedit /etc/fstab

Ändern Sie "ext4 errors = remount-ro 0" in "ext4 discard, errors = remount-ro 0". (Verwerfen hinzufügen)

Speichern und neu starten, TRIM sollte jetzt aktiviert sein.

Überprüfen Sie, ob TRIM aktiviert ist:

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

Verwenden Sie die erste begin_LBA-Adresse.

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

Jetzt sollte es Zahlen und Zeichen zurückgeben. Entfernen Sie die Datei und synchronisieren Sie sie.

rm tempfile
sync

Führen Sie nun den folgenden Befehl erneut aus. Wenn es Nullen zurückgibt, ist TRIM aktiviert.

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

2
Sie möchten eine SSD NICHT mit Nullen füllen, da diese in jeden Löschblock schreiben, mehr Verschleiß verursachen und jeden Löschblock voll lassen. Außerdem setzen viele Laufwerke getrimmte Sektoren NICHT sofort auf Null.
Psusi

Sicher, es sind viele Schreibvorgänge erforderlich, aber die Festplatte wird nicht beschädigt. Ich benutze einen Corsair F120 seit 10-11 Monaten und habe ihn häufig mit Nullen gefüllt. (Tun Sie es vor jedem Benchmark) Also, nach 30-35 Mal ist die Leistung immer noch die gleiche. (~ 285MB lesen, 275MB / schreiben) SMART sagt: Die Festplatte ist gesund
Alex

9
Alex, jedes einzelne Schreiben auf eine SSD beschädigt sie leicht. Das Schreiben in jeden einzelnen Löschblock bewirkt, dass alle Blöcke im Gebrauch markiert werden, wodurch der GC des Laufwerks nicht ordnungsgemäß funktioniert und die Leistung beeinträchtigt wird. Sie können sich das als Ganzes vorstellen, wenn Sie unTRIM verwenden.
Psusi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.