Qual è il modo consigliato per svuotare un SSD?


53

Ho appena ricevuto il mio nuovo SSD da quando è morto quello vecchio. Questo SSD Intel 320 supporta TRIM. A scopo di test, il mio rivenditore ci ha messo Windows, ma voglio liberarmene e installare Kubuntu su di esso.

Non deve essere un "wipe sicuro", ho solo bisogno di svuotare il disco nel modo più salutare. Credo che dd if=/dev/zero of=/dev/sdariempia i blocchi di zero e quindi prenda un'altra scrittura (correggimi se sbaglio).

Ho visto la risposta Come abilitare TRIM , ma sembra che sia adatto per cancellare blocchi vuoti, non pulire il disco.

hdparmsembra essere il programma per farlo, ma non sono sicuro se cancella il disco o pulisce i blocchi vuoti. Dalla sua pagina di manuale:

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

Come posso rendere vuoti tutti i blocchi usando TRIM?


Bella domanda, forse è sufficiente eliminare il filesystem NTFS?
htorque,

1
Quindi è solo un commento. ;) Tuttavia, potresti prima controllare alcuni settori su quella partizione sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, quindi eliminare la partizione NTFS usando una versione Gparted recente e ricontrollare con lo stesso comando - se i dati fossero cancellati, vedresti solo gli zero.
htorque,

1
@Htorque: l'ho appena provato ma non funziona, l'ho usato hexdump -C /sda1e hexdump -C /sda1per determinare il blocco di partenza. Bella idea però.
Lekensteyn,

1
@Lekensteyn - Intendevo leggermente la lingua nella guancia e ho mostrato una risposta adeguata per te di seguito. L'articolo di Jeff ha anche un po 'di prestazioni, motivo per cui le usa nonostante il tasso di fallimento :-)
Rory Alsop,

3
Ancora non vedo perché è necessario cancellarlo ... perché non puoi semplicemente riformattarlo con Ext4 o altro?
Nathan Osman,

Risposte:


52

ATA Secure Erase

È necessario utilizzare la funzione di cancellazione della sicurezza dell'unità .

  1. Assicurarsi che l'unità Sicurezza non sia bloccata . In tal caso, potrebbe essere utile sospendere e riavviare il computer.

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

    L'output del comando (filtrato) significa che questa unità non è "congelata" e puoi continuare.

  2. Imposta una password utente (anche questa password viene cancellata, la scelta esatta non ha importanza).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Emettere il comando ATA Secure Erase

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

Nota:

  • /dev/sdX è l'SSD come dispositivo a blocchi che si desidera cancellare.
  • Eins è la password scelta in questo esempio.

Vedere l' articolo ATA Secure Erase nel wiki del kernel Linux per istruzioni complete, inclusa la risoluzione dei problemi.


Grazie per il collegamento, sembra buono per coloro che hanno un BIOS che lo supporta, ma il mio non sembra supportarlo. (congelato)
Lekensteyn,

Evviva! Dopo aver letto di nuovo l'articolo, ho letto "Il mio sistema in" sospensione "(notebook Clevo M865TU) ha funzionato troppo --- e questo potrebbe ripristinare anche le altre unità su" non congelate ". e l'ho provato poiché il mio è originario anche di Clevo (ma BTO lo costruisce). Funziona, vedo "non congelato" ora. ... ma il passaggio 3 non è riuscito con "ERASE_PREPARE: indirizzo errato" perché ho sostituito sudo per tempo invece di anteporre al comando!
Lekensteyn,

1
OMG ha funzionato e ha impiegato solo 19 secondi! Grazie mille! Vorrei
poterti votare

Volevo solo segnalare che la risposta accettata sopra ha un link non funzionante. È abbastanza inutile senza detto link, a qualcuno interessa pubblicare un riepilogo di ciò che ha detto quel link?
Ashimema,

@Ashimema: il collegamento è attualmente interrotto perché kernel.org era stato violato e quindi non funzionante. Google Cache è vuoto, ma questo blog lo ha copiato: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

util-linux 2.23 offre le offerte blkdiscardche scarta i dati senza cancellarli in modo sicuro. Ho testato: funziona su SATA e mmcblk ma non su USB.

Un estratto dalla pagina di manuale di blkdiscard(8):

NOME

blkdiscard: elimina i settori su un dispositivo

SINOSSI

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

DESCRIZIONE

blkdiscard è usato per scartare i settori dei dispositivi. Ciò è utile per i driver a stato solido (SSD) e l'archiviazione con thin provisioning. A differenza di fstrim (8) questo comando viene utilizzato direttamente sul dispositivo a blocchi.

Per impostazione predefinita, blkdiscard eliminerà tutti i blocchi sul dispositivo. Le opzioni possono essere utilizzate per modificare questo comportamento in base all'intervallo o alla dimensione, come spiegato di seguito.

L'argomento dispositivo è il percorso del dispositivo a blocchi.

ATTENZIONE: Tutti i dati nell'area scartata sul dispositivo andranno persi!

Il comando è presente da Ubuntu 15.04 e OpenSUSE 13.1 (sì OpenSUSE ha 2 anni di vantaggio su Ubuntu).


grazie per l'aggiunta di informazioni a questo post obsoleto e benvenuto su askubuntu.
mondjunge,

Arch Linux ha già questo pacchetto poiché util-linux 2.23 è stato rilasciato il 25 aprile 2013.
Lekensteyn,

4
Grazie per il benvenuto Post obsoleto? Vecchi, ma non obsoleti, finché compaiono nella prima pagina del risultato di ricerca di Google, ci sono sempre nuovi ragazzi che cercano la stessa risposta che arriva qui. Per me è obsoleto solo quando le pagine migliori lo spingono fuori dalla prima pagina dei risultati di Google.
Tankman 六四

3
Se ti stai chiedendo la differenza tra blkdiscarde il hdparmcomando, viene risposto qui : "Quando usi blkdiscard, l'SSD (supponendo un SSD SATA) riceverà un comando ATA TRIM, mentre hdparm --security-erase emetterà un ATA SECURITY ERASE Comando UNIT. Ciò che l'unità esegue effettivamente dipende dai dettagli di implementazione del firmware di quel particolare SSD. "
Lekensteyn,

2
In realtà non vuoi usare blkdiscard. In primo luogo, è destinato a informare l'unità che parti specifiche di esso possono essere espulse, non a cancellare il tutto. L'unità potrebbe effettivamente o meno cancellare i dati. Il comando di cancellazione sicura deve cancellare tutti i dati, inclusi quelli che si trovano in parti dell'unità che non sono attualmente accessibili. Modifica: basta rileggere la domanda e rendersi conto che non ha richiesto la cancellazione, ma vale comunque la pena notare.
psusi,

5

Se non hai bisogno di una cancellazione sicura, perché non installi semplicemente kubuntu usando le opzioni per "usare l'intero disco" e l'equivalente di "formattazione rapida" (non ricordo esattamente la terminologia in questo momento)

In questo modo si elimina la tabella di allocazione dei file e l'unità viene effettivamente svuotata per la sovrascrittura. In realtà non è necessario svuotarlo.


2
Vedi anandtech.com/show/2865/2 . L'eliminazione del blocco non equivale a cancellarlo e contrassegnarlo come vuoto.
Lekensteyn,

L'eliminazione di @Lekensteyn non significa nulla per un dispositivo a blocchi. Il programma di installazione chiamerà mkfs.ext4 e scarterà l'intero dispositivo; questo è sicuro come una "cancellazione sicura", nel senso che in entrambi i casi ti stai fidando del firmware SSD.
Tobu,

1
@Tobu Giusto, è cambiato ad un certo punto. mkfs.ext4(8)dice: scarta - Tenta di scartare i blocchi al momento di mkfs (scartare i blocchi inizialmente è utile su dispositivi a stato solido e spazio di archiviazione sparse / thin-provisioning). Quando il dispositivo pubblicizza che lo scarto azzera anche i dati (qualsiasi lettura successiva dopo lo scarto e prima della scrittura restituisce zero), quindi contrassegnare tutte le tabelle di inode non ancora azzerate come azzerate. Questo accelera notevolmente l'inizializzazione del filesystem. Questo è impostato come predefinito.
Lekensteyn,

@Tobu Nel mio caso d'uso, "Cancellazione sicura" non ha dovuto cancellare davvero i dati dai suoi chip flash, dovrebbe solo assicurarsi che non ci siano effetti negativi sulle prestazioni derivanti dall'utilizzo di alcuni blocchi.
Lekensteyn,

1

Se sull'unità è presente un file filestem Linux, è possibile utilizzare fstrim. Per impostazione predefinita, Ubuntu recente viene eseguita fstrimsu unità dei seguenti fornitori:

    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

Una volta a settimana.

Quindi una risposta alla tua domanda è avviare il sistema e attendere una settimana!


1
fstrim è menzionato in questo post di blkdiscard , puoi anche invocarlo manualmente con sudo fstrim /(dove /è un mountpoint di un filesystem che supporta l' discardopzione).
Lekensteyn,

-4

Basta rimuovere la partizione, non è necessario cancellare l'intero disco, i vecchi dati verranno sovrascritti quando lo spazio di archiviazione è necessario per qualcos'altro.

Per abilitare TRIM:

gksudo gedit /etc/fstab

Cambia "ext4 errori = remount-ro 0" in "ext4 scarta, errori = remount-ro 0". (Aggiungi scarto)

Salva e riavvia, TRIM ora dovrebbe essere abilitato.

Controlla se TRIM è abilitato:

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

Usa il primo indirizzo begin_LBA.

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

Ora dovrebbe restituire numeri e caratteri. Rimuovi il file e sincronizza.

rm tempfile
sync

Ora, esegui di nuovo il seguente comando. Se restituisce zero, TRIM è abilitato.

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

2
NON si desidera riempire un SSD di zeri poiché scriverà su ogni blocco di cancellazione, causando maggiore usura e lasciando pieno ogni blocco di cancellazione. Inoltre, molte unità NON azzerano immediatamente i settori tagliati.
psusi,

Certo, richiede molte scritture, ma non danneggia il disco. Ho usato un Corsair F120 per 10-11 mesi e lo ho spesso riempito di zeri. (Farlo prima di ogni benchmark) Quindi, dopo 30-35 volte le prestazioni sono sempre le stesse. (~ 285 MB di lettura, 275 MB / scrittura) SMART dice: Il disco è integro
Alex,

9
Alex, ogni singola scrittura su un SSD lo danneggia leggermente. La scrittura su ogni singolo blocco di cancellazione fa sì che tutti siano contrassegnati durante l'uso, il che impedisce al GC dell'unità di funzionare correttamente e le prestazioni ne risentiranno. Puoi pensarlo come un intero disco unTRIM.
psusi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.