Quelle est la méthode recommandée pour vider un SSD?


53

Je viens de recevoir mon nouveau disque SSD depuis le décès de l'ancien. Ce SSD Intel 320 prend en charge TRIM. À des fins de test, mon revendeur a mis Windows sous tension, mais je veux m'en débarrasser et installer Kubuntu dessus.

Il n’est pas nécessaire que ce soit une "lingette sécurisée", j’ai juste besoin de vider le disque de la manière la plus saine. Je crois que cela dd if=/dev/zero of=/dev/sdaremplit simplement les blocs avec des zéros et prend ainsi une autre écriture (corrigez-moi si je me trompe).

J'ai vu la réponse Comment activer TRIM , mais il semble que cela convienne pour effacer les blocs vides, pas pour nettoyer le disque.

hdparmsemble être le programme pour le faire, mais je ne suis pas sûr s'il efface le disque OU nettoie les blocs vides. De sa page de manuel:

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

Comment puis-je faire en sorte que tous les blocs apparaissent comme vides avec TRIM?


Bonne question, peut-être suffit-il de simplement supprimer le système de fichiers NTFS?
Htorque

1
C'est donc juste un commentaire. ;) Cependant, vous pouvez d'abord vérifier certains secteurs sur cette partition sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, puis supprimer la partition NTFS en utilisant une version récente de Gparted et revérifier avec la même commande - si les données ont été effacées, vous ne verrez que des zéros.
Htorque

1
@htorque: Je viens de le tester mais ça ne marche pas, j'ai utilisé hexdump -C /sda1et hexdump -C /sda1pour déterminer le point de départ. Belle idée cependant.
Lekensteyn

1
@Lekensteyn - Je voulais dire légèrement la langue dans les joues et une réponse appropriée apparaît pour vous ci-dessous. L'article de Jeff a aussi un peu sur les performances, c'est pourquoi il les utilise malgré le taux d'échec :-)
Rory Alsop

3
Je ne vois toujours pas pourquoi vous devez l'effacer ... pourquoi ne pas le reformater avec Ext4 ou quoi que ce soit d'autre?
Nathan Osman

Réponses:


52

ATA Secure Erase

Vous devez utiliser la fonction d' effacement de sécurité du lecteur .

  1. Assurez-vous que le lecteur de sécurité n'est pas gelé . Si c'est le cas, il peut être utile de suspendre et de redémarrer l'ordinateur.

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

    La sortie de la commande (filtrée) signifie que ce lecteur est «non gelé» et vous pouvez continuer.

  2. Définir un mot de passe utilisateur (ce mot de passe est également effacé, le choix exact importe peu).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Émettez la commande ATA Secure Erase

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

Remarque:

  • /dev/sdX est le SSD en tant que périphérique bloc que vous souhaitez effacer.
  • Eins est le mot de passe choisi dans cet exemple.

Consultez l'article ATA Secure Erase dans le wiki du noyau Linux pour obtenir des instructions complètes, y compris le dépannage.


Merci pour le lien, il semble bon pour ceux qui ont un BIOS qui le supporte, mais le mien ne semble pas le supporter. (gelé)
Lekensteyn

Hourra! Après avoir relu l'article, j'ai lu "Placer mon système en" veille "(ordinateur portable Clevo M865TU) fonctionnait aussi --- et cela pourrait réinitialiser les autres lecteurs à" non gelés "également." et l'a essayé puisque le mien est originaire de Clevo également (mais BTO le construit). Cela fonctionne, je vois "pas figé" maintenant. ... mais l'étape 3 a échoué avec "ERASE_PREPARE: adresse incorrecte" car j'ai remplacé sudo par time au lieu de précéder la commande!
Lekensteyn

1
OMG cela a fonctionné et n'a pris que 19 secondes! Merci beaucoup! Je voudrais pouvoir vous inviter à dix reprises: D
Lekensteyn

Je voulais juste signaler que la réponse acceptée ci-dessus a un lien brisé. C'est assez inutile sans lien dit, quelqu'un voudrait-il poster un résumé de ce que ce lien disait?
Ashimema

@Ashimema: Le lien est actuellement rompu car kernel.org a été piraté et est donc en maintenance. Google Cache est vide, mais ce blog l'a copié: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

util-linux 2.23 propose de blkdiscardsupprimer les données sans les effacer de manière sécurisée. J'ai testé: fonctionne sur SATA et mmcblk mais pas USB.

Un extrait de la page de manuel de blkdiscard(8):

NOM

blkdiscard - Élimine les secteurs d'un périphérique

SYNOPSIS

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

LA DESCRIPTION

blkdiscard est utilisé pour ignorer les secteurs de périphérique. Ceci est utile pour les pilotes SSD (Solid-State Drivers) et le stockage à faible provision. Contrairement à fstrim (8), cette commande est utilisée directement sur le périphérique bloc.

Par défaut, blkdiscard supprimera tous les blocs du périphérique. Des options peuvent être utilisées pour modifier ce comportement en fonction de la plage ou de la taille, comme expliqué ci-dessous.

L'argument device est le chemin du périphérique en mode bloc.

AVERTISSEMENT: Toutes les données de la région supprimée de l'appareil seront perdues!

La commande existe depuis Ubuntu 15.04 et OpenSUSE 13.1 (oui, OpenSUSE l’avait 2 ans d’avance sur Ubuntu).


merci d’ajouter des informations à ce message obsolète et bienvenue sur askubuntu.
lundi

Arch Linux a déjà ce paquet car util-linux 2.23 est sorti le 25 avril 2013.
Lekensteyn le

4
Merci pour l'accueil. Post périmé? Ancien, mais pas obsolète, tant qu'il apparaît dans la 1ère page du résultat de recherche Google, il y a toujours de nouveaux gars à la recherche de la même réponse venant ici. Pour moi, il n’est obsolète que lorsque de meilleures pages le repoussent hors de la première page de résultats Google.
Tankman 六四

3
Si vous vous demandez la différence entre blkdiscardet la hdparmcommande, il est répondu ici : « Lorsque vous utilisez blkdiscard, le SSD ( en supposant un SSD SATA) reçoit une commande ATA TRIM, alors que hdparm --security effaçable émettra un ATA SECURITY ERASE Commande UNIT. Ce que le lecteur fait alors dépend des détails de la mise en œuvre du micrologiciel de ce SSD. "
Lekensteyn

2
En fait, vous ne voulez pas utiliser blkdiscard. Premièrement, il est destiné à informer le lecteur que des parties spécifiques de celui - ci peuvent être éjectées, et non à tout effacer. Le lecteur peut effacer ou non les données. La commande d'effacement sécurisé doit effacer toutes les données, y compris celles contenues dans des parties du lecteur qui ne sont pas accessibles actuellement. Edit: il suffit de relire la question et de se rendre compte qu’elle ne nécessite pas d’effacement, mais cela vaut la peine de le noter.
Psusi

5

Si vous n'avez pas besoin d'effacement sécurisé, pourquoi ne pas simplement installer kubuntu en utilisant les options "utiliser tout le disque" et l'équivalent de "formatage rapide" (je ne me souviens pas de la terminologie exacte à l'heure actuelle)

De cette façon, vous abandonnez la table d’allocation de fichiers et le lecteur est vidé de façon à pouvoir être remplacé. Vous n'avez pas réellement besoin de le vider.


2
Voir anandtech.com/show/2865/2 . Supprimer le bloc n’est pas la même chose que l’effacer et le marquer comme vide.
Lekensteyn

@Lekensteyn Supprimer ne signifie rien pour un périphérique en mode bloc. Le programme d’installation appellera mkfs.ext4 et éliminera l’ensemble du périphérique; ceci est aussi sécurisé qu'un "effacement sécurisé", dans le sens où vous faites confiance au micrologiciel du SSD.
Tobu

1
@ Tobu Oui, cela a changé à un moment donné. mkfs.ext4(8)dit: rejeter - Tentative de rejeter des blocs au moment de mkfs (le fait de supprimer des blocs est initialement utile pour les périphériques à l'état solide et le stockage clairsemé / à allocation dynamique). Lorsque le périphérique annonce cette suppression et met également à zéro les données (toute lecture ultérieure après la suppression et avant l'écriture renvoie zéro), marquez toutes les tables inode non encore mises à zéro comme étant mises à zéro. Cela accélère considérablement l’initialisation du système de fichiers. Ceci est défini par défaut.
Lekensteyn

@Tobu Pour mon cas d'utilisation, "Secure Erase" n'a pas à effacer réellement les données de ses puces flash, il doit simplement s'assurer qu'il n'y a aucun effet négatif sur les performances résultant de l'utilisation de certains blocs.
Lekensteyn

1

Si le lecteur contient un fichier Linux, vous pouvez l'utiliser fstrim. Par défaut, Ubuntu récent s’exécute fstrimsur les lecteurs des fournisseurs suivants:

    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

Une fois par semaine.

Donc, une réponse à votre question est de démarrer le système et d’attendre une semaine!


1
fstrim est mentionné dans cet article blkdiscard , vous pouvez également l'invoquer manuellement avec sudo fstrim /(où /est le point de montage d'un système de fichiers qui prend en charge l' discardoption).
Lekensteyn

-4

Supprimez simplement la partition, vous n'avez pas à effacer tout le disque, les anciennes données seront écrasées lorsque le stockage est nécessaire pour autre chose.

Pour activer TRIM:

gksudo gedit /etc/fstab

Remplacez "erreurs ext4 = remount-ro 0" par "ext4 ignoré, erreurs = remount-ro 0". (Ajouter le rejet)

Sauvegarder et redémarrer, TRIM devrait maintenant être activé.

Vérifiez si TRIM est activé:

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

Utilisez la première adresse begin_LBA.

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

Maintenant, il devrait retourner des chiffres et des caractères. Supprimez le fichier et synchronisez.

rm tempfile
sync

Maintenant, exécutez à nouveau la commande suivante. S'il renvoie des zéros, TRIM est activé.

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

2
Vous ne voulez PAS remplir un SSD avec des zéros, car il écrira dans chaque bloc d'effacement, causant plus d'usure et laissant chaque bloc d'effacement plein. De plus, de nombreux lecteurs ne mettent PAS immédiatement à zéro les secteurs découpés.
Psusi

Bien sûr, cela nécessite de nombreuses écritures, mais cela n'endommage pas le disque. J'ai utilisé un Corsair F120 pendant 10 à 11 mois et l'ai souvent rempli de zéros. Donc, après 30 à 35 fois les performances sont toujours les mêmes (environ 285 Mo lus, 275 Mo / écriture), SMART dit: Le disque est en bonne santé
Alex

9
Alex, chaque écriture sur un SSD l'endommage légèrement. L'écriture dans chaque bloc d'effacement entraîne leur marquage en utilisation, ce qui empêchera le bon fonctionnement du CPG du lecteur et affectera les performances. Vous pouvez penser à cela comme un lecteur entier unTRIM.
Psusi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.