Який рекомендований спосіб спорожнення SSD?


53

Я щойно отримав свій новий 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?


Добре запитання, можливо, достатньо просто видалити файлову систему NTFS?
htorque

1
Отже, це лише коментар. ;) Однак, ви можете спочатку перевірити деякі сектори на цьому розділі sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, потім видалити розділ NTFS за допомогою останньої версії Gparted та повторно перевірити з тією ж командою - якщо дані будуть видалені, ви б просто побачили нулі.
htorque

1
@htorque: Я тільки тестував це, але він не працює, я використав hexdump -C /sda1і hexdump -C /sda1визначив стартовий блок. Хороша ідея, хоча.
Лекенштейн

1
@Lekensteyn - я мав на увазі, що це трішки язиком по щоці і висказав правильну відповідь для тебе нижче. Стаття Джеффа також має трохи ефективності, і саме тому він використовує їх, незважаючи на рівень відмов :-)
Rory Alsop

3
Я досі не бачу, чому вам потрібно стерти це ... чому ви не можете просто переформатувати його за допомогою Ext4 чи будь-чого іншого?
Натан Осман

Відповіді:


52

ATA Secure Erase

Слід використовувати функцію стирання безпеки накопичувача .

  1. Переконайтеся, що безпека накопичувача не застигла . Якщо це так, це може допомогти призупинити та відновити комп'ютер.

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

    Вивід команди (відфільтрований) означає, що цей диск не "заморожений", і ви можете продовжувати.

  2. Встановіть пароль користувача (цей пароль також очищений, точний вибір не має значення).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. Видайте команду ATA Secure Erase

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

Примітка:

  • /dev/sdX - це SSD як блоковий пристрій, який потрібно стерти.
  • Eins - пароль, обраний у цьому прикладі.

Дивіться статтю ATA Secure Erase у вікі Linux ядра, щоб отримати повні інструкції, включаючи усунення несправностей.


Дякуємо за посилання, він виглядає добре для тих, хто має BIOS, який підтримує його, але моє, здається, не підтримує його. (заморожено)
Лекенштейн

Ура! Прочитавши статтю ще раз, я прочитав: "Введення моєї системи у режим" сну "(ноутбук Clevo M865TU) теж працювало --- і це може скинути інші диски також на" не заморожені "." і спробував, оскільки мій родом також із Клево (але BTO будує його). Це працює, я бачу "не заморожений" зараз. ... але крок 3 не вдався до "ERASE_PREPARE: Неправильна адреса", тому що я замінив sudo часом, замість того, щоб передбачити команду!
Лекенштейн

1
OMG працював і зайняв лише 19 секунд! Дякую купу! Я б хотів, щоб я міг виголосити вас десять разів: D
Лекенштейн

Мені просто хотілося повідомити, що прийнята відповідь вище має розірване посилання. Це безрезультатно без вказаного посилання, комусь не хочеться розміщувати резюме того, що було сказано?
Ашимема

@Ashimema: Посилання наразі розірвано, тому що kernel.org був зламаний і тому не працює для обслуговування. Google Cache порожній, але цей блог скопіював його: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

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


THX для додавання інформації до цієї застарілої публікації та ласкаво просимо до askubuntu.
mondjunge

Arch Linux вже має цей пакет, оскільки 25 квітня 2013 року вийшов util-linux 2.23.
Lekensteyn

4
Дякуємо за прийом Застаріла посада? Старі, але не застарілі, доки він з’являється на першій сторінці результатів пошуку Google, сюди завжди приходять нові хлопці, які шукають ту саму відповідь. Для мене це застаріло лише тоді, коли кращі сторінки виштовхують його з першої сторінки результатів google.
Танкман 六四

3
Якщо вас цікавить різниця між командою blkdiscardта hdparmкомандою, на неї відповідають тут : "Коли ви використовуєте blkdiscard, SSD (припускаючи SSD SATA) отримає команду ATA TRIM, тоді як hdparm - безпека-стирання видасть ATA SECURITY ERASE Команда UNIT. Те, що тоді накопичується накопичувачем, залежить від деталей реалізації цієї прошивки конкретного SSD ".
Лекенштейн

2
Ви насправді не хочете використовувати blkdiscard. По-перше, він покликаний повідомити привід, що конкретні його частини можуть бути викинуті, а не протирати всю справу. Привід може або не може фактично стерти дані. Команда захищеного стирання повинна стерти всі дані, включаючи будь-які дані, що знаходяться в частинах накопичувача, які наразі недоступні. Редагувати: просто перечитайте питання і зрозумів, що це не вимагає стирання, але все-таки варто зазначити.
psusi

5

Якщо вам не потрібен захищений сервер, чому б вам просто не встановити kubuntu, використовуючи параметри «використовувати весь диск» та еквівалент «швидкого формату» (зараз не можу згадати точну термінологію)

Таким чином ви вириваєте таблицю розподілу файлів і накопичувач ефективно очищується для перезапису. Насправді вам не потрібно його спорожнювати.


2
Дивіться anandtech.com/show/2865/2 . Видалення блоку - це не те саме, що стерти його та позначити як порожній.
Лекенштейн

@Lekensteyn Видалення нічого не означає для блокового пристрою. Інсталятор викличе mkfs.ext4 і відкине весь пристрій; це так само безпечно, як "безпечне стирання", в тому сенсі, що в обох випадках ви довіряєте прошивці SSD.
Тобу

1
@Tobu Правильно, що змінилося в якийсь момент. mkfs.ext4(8)говорить: відкинути - спроба відкинути блоки в mkfs час (спочатку блокування блоків корисно на твердотільних пристроях та в обмеженому / тонкому зберіганні). Коли пристрій рекламує, що відкидання також занулює дані (будь-яке наступне зчитування після відміни та перед записом повертає нуль), тоді позначте всі ще не нульові таблиці ізодів як нульові. Це значно прискорює ініціалізацію файлової системи. Це встановлено за замовчуванням.
Лекенштейн

@Tobu У моєму випадку використання "Безпечне стирання" не потрібно було дійсно стирати дані зі своїх флеш-чіпів, воно повинно просто переконатися у відсутності негативних ефектів від продуктивності внаслідок використання деяких блоків.
Лекенштейн

1

Якщо на диску є файл файлів 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

Раз на тиждень.

Отже, одна відповідь на ваше запитання - це завантажувати систему і чекати тиждень!


1
fstrim згадується в цій публікації blkdiscard , ви також можете викликати його вручну sudo fstrim /(де /знаходиться точка кріплення файлової системи, яка підтримує цю discardопцію).
Лекенштейн

-4

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

Щоб увімкнути TRIM:

gksudo gedit /etc/fstab

Змініть "ext4 помилки = remount-ro 0" на "ext4 відкинути, помилки = 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

2
Ви НЕ хочете заповнювати SSD нулями, оскільки він записуватиме до кожного блоку стирання, спричиняючи більше зносу, а кожен блок стирання залишає повним. Також багато дисків НЕ відразу нульові обрізані сектори.
psusi

Звичайно, для цього потрібно багато записів, але це не пошкоджує диск. Я використовую Corsair F120 вже 10-11 місяців і часто його заповнюю нулями. (Робіть це перед кожним еталоном) Отже, після 30-35 разів продуктивність залишається однаковою (~ 285 Мб читати, 275 МБ / писати) SMART каже: Диск здоровий
Алекс

9
Алекс, кожен запис на SSD трохи пошкоджує його. Запис до кожного блоку стирання призводить до того, що всі вони будуть позначені у використанні, що не дасть GC приводу нормально функціонувати, а продуктивність погіршиться. Ви можете думати про це як про цілий привід unTRIM.
psusi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.