Каков рекомендуемый способ очистки SSD?

Я только что получил мой новый SSD, так как старый умер. Этот Intel 320 SSD поддерживает TRIM. В целях тестирования мой дилер установил на него Windows, но я хочу избавиться от этого и установить на него Kubuntu.

Это не должно быть "безопасным стиранием", мне просто нужно очистить диск самым здоровым способом. я полагаю, что dd if=/dev/zero of=/dev/sda просто заполняет блоки нулями и тем самым берет еще одну запись (поправьте меня, если я ошибаюсь).

Я видел ответ Как включить TRIM, но похоже, что он подходит для очистки пустых блоков, а не для очистки диска.

hdparm Кажется, это программа для этого, но я не уверен, очищает ли он диск ИЛИ очищает пустые блоки. С его страницы руководства:

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

Как сделать так, чтобы все блоки отображались как пустые с помощью TRIM?

6 ответов

Решение

ATA Безопасное стирание

Вы должны использовать функцию стирания безопасности диска.

  1. Убедитесь, что диск Security не заморожен. Если это так, это может помочь приостановить и возобновить работу компьютера.

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

    Вывод команды (отфильтрованный) означает, что этот диск "не заморожен", и вы можете продолжить.

  2. Установите пароль пользователя (этот пароль также очищается, точный выбор не имеет значения).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Выполните команду безопасного стирания ATA

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

Замечания:

  • /dev/sdX это SSD как блочное устройство, которое вы хотите стереть
  • Eins пароль, выбранный в этом примере

См. Статью ATA Secure Erase в вики ядра Linux для получения полных инструкций, включая устранение неполадок.

util-linux 2.23 предложения blkdiscard который отбрасывает данные без их очистки. Я тестировал: работает через SATA и mmcblk, но не через USB.

Отрывок из справочной страницы blkdiscard(8):

НАЗВАНИЕ

blkdiscard - сбросить сектора на устройстве

СИНТАКСИС

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

ОПИСАНИЕ

blkdiscard используется для сброса секторов устройства. Это полезно для твердотельных драйверов (SSD) и хранилищ с тонким предоставлением. В отличие от fstrim(8) эта команда используется непосредственно на блочном устройстве.

По умолчанию blkdiscard удаляет все блоки на устройстве. Параметры могут использоваться для изменения этого поведения в зависимости от диапазона или размера, как описано ниже.

Аргумент устройства - это путь к блочному устройству.

ВНИМАНИЕ: Все данные в удаленном регионе на устройстве будут потеряны!

Команда существует с Ubuntu 15.04 и OpenSUSE 13.1 (да, в OpenSUSE она на 2 года впереди Ubuntu).

Если вам не нужна безопасная очистка, почему бы вам просто не установить kubuntu, используя опции "использовать весь диск" и эквивалент "быстрого формата" (не могу вспомнить точную терминологию сейчас)

Таким образом вы отбрасываете таблицу размещения файлов, и накопитель эффективно очищается для перезаписи. Вам на самом деле не нужно опустошать его.

Если на диске есть файловый элемент Linux, вы можете использовать fstrim, По умолчанию последние Ubuntu запускаются fstrim на дисках от следующих поставщиков:

    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

Раз в неделю.

Итак, один ответ на ваш вопрос - загрузите систему и подождите неделю!

Проверьте, поддерживает ли это BIOS на компьютере. На ноутбуке, который я только что проверил, есть возможность безопасного стирания всех подключенных носителей при следующей загрузке. Это, вероятно, широко используемый вариант в корпоративной среде, поэтому многие поставщики, вероятно, включают его сейчас. (Я проверял ноутбук Dell Precision 5510 2017 года выпуска.)

Хотя, если вы просто хотите стереть диск для установки Linux (согласно вопросу), вам не нужно делать полную очистку. Единственная проблема заключается в том, что диск должен знать, что пространство, ранее используемое Windows, теперь свободно, чтобы оптимизировать использование SSD.

Вариантов для этого множество, в том числе уже упомянутые. я отмечаю, что mke2fsимеет -E discardопция, которая должна обрезать раздел при создании файловой системы, которая включена по умолчанию. (Обратите внимание, что это лучший вариант, поэтому он будет молча игнорировать его, если аппаратное обеспечение не поддерживает его.) Таким образом, в большинстве случаев вы можете просто игнорировать проблему, установить Linux, и процесс установки выполнит всю очистку. необходимость.

Просто удалите раздел, вам не нужно очищать весь диск, старые данные будут перезаписаны, когда хранилище потребуется для чего-то другого.

Чтобы включить TRIM:

gksudo gedit /etc/fstab

Замените "ext4 errors=remount-ro 0" на "ext4 discard,errors=remount-ro 0". (Добавить сброс)

Сохраните и перезагрузите компьютер, теперь TRIM должен быть включен.

Проверьте, включен ли TRIM:

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

Используйте первый адрес begin_LBA.

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

Теперь он должен возвращать цифры и символы. Удалить файл и синхронизировать.

rm tempfile
sync

Теперь снова выполните следующую команду. Если он возвращает нули, TRIM включен.

hdparm --read-sector [begin_LBA] /dev/sda
Другие вопросы по тегам