Нульові накопичувачі SSD


18

Ми розміщуємо VPS для клієнтів. Кожен клієнт VPS отримує LVM LV на стандартному жорсткому диску шпинделя. Якщо замовник повинен був піти, ми знімаємо цю НН, гарантуючи, що їхні дані не просочуються до інших клієнтів.

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

Відповіді:


23

Якщо припустити, що те, що ви прагнете запобігти, це наступний клієнт, який прочитає диск, щоб побачити дані старого клієнта, то запис усіх нулів насправді все-таки спрацює. Запис нулів до сектору 'n' означає, що при читанні сектору 'n' воно поверне всі нулі. Тепер факт полягає в тому, що основні фактичні дані все ще можуть знаходитись на флеш-мікросхемах, але оскільки ви не можете виконати звичайне зчитування, щоб дістатися до нього, це не є проблемою для вашої ситуації.

Це проблема, якщо хтось може фізично дістати диск і розібрати його (тому що тоді вони могли безпосередньо читати флеш-чіпи), але якщо єдиний доступ у них є шина SATA, то запис усіх нулів у цілому диск зробить просто чудово.


1
Саме відповідь я шукав, і коли я подумав про це, я прийшов до такого ж висновку :)
jtnire

2
Я б міг уявити (але точно не знаю, і, звичайно, це залежатиме від чіпсета контролера, який використовується в SSD), що запис сектора нулів на SSD навіть не вдарив би про фактичні флеш-чіпи. Контролер повинен помітити, що це все нулі, і просто позначити цей сектор як "нульовий" (або просто вказати його на сектор, який містить усі нулі). Написання сектору нулів - це досить поширена річ, і спеціальна обшивка - це дешевий і простий спосіб зменшити знос спалаху, тому я був би вражений, якби принаймні Intel та Sandforce цього не зробили.
kindall

20

Ніколи не заповнюйте нульовий SSD ніколи. Як мінімум, це зносить частину тривалості запису на SSD за незначну користь або взагалі. У надзвичайно гіршому випадку ви можете перевести контролер SSD у стан (тимчасово) зниженої продуктивності .

З цього джерела :

Неодноразово перезаписуючи весь диск з декількома повторами, можна успішно знищити дані, але через рівень перекладу прошивки (FTL) це значно складніше і забирає багато часу, ніж на традиційних накопичувачах жорсткого диска. Виходячи з їх результатів, це непривабливий варіант

Ваш найкращий варіант - безпечне стирання за допомогою повного шифрування диска:

Кілька сучасних SSD-дисків можуть використовувати шифрування на повному диску - приклади нових накопичувачів Intel на 320 та деякі накопичувачі серії Sandforce 2200. Ці накопичувачі можна надійно стерти простим та швидким способом, без будь-якого зносу приводу. Привід використовує шифрування AES для всіх записаних даних, тому безпечне стирання просто означає видалення старого ключа AES та заміну його на новий. Це ефективно робить всі "старі" дані на накопичувачі неможливими.

Однак безпечне стирання Intel нелегко автоматизувати. AFAIK це потрібно зробити з програми Windows GUI від Intel, він може працювати лише на порожньому диску без завантаження тощо. Див. Сторінку 21 і далі в документах Intel.

Ваш інший варіант, безпечне стирання ATA:

Інший варіант - видати команду ATA Secure Erase через fx HDPARM в Linux. Це буде набагато простіше автоматизуватися за допомогою сценаріїв.

За умови, що накопичувач реально реалізує ATA Secure Erase, слід очікувати, що він принаймні видалить "шар перекладу флеш-трансляції" (FTL). Таблиця FTL містить відображення між логічними секторами (які "бачить" операційна система) та фізичними сторінками NVRAM на самому диску. Зі знищеною таблицею картографування слід відновити дані з накопичувача дуже важко - але, мабуть, не неможливо.

Однак я не знаю жодних досліджень, які показали б, що ATA Secure Erase послідовно та добре впроваджується на всіх дисках виробника, тому я не вагаюся сказати, що це завжди спрацює - ви повинні ознайомитися з технічною документацією виробників.

Для одного розділу:

Коли я читаю коментарі до інших відповідей, схоже, що ОП хоче лише надійно стерти окремі розділи. Хороший спосіб зробити це - створити лише зашифровані томи, fx за допомогою LUKS або TrueCrypt . Таким чином ви можете надійно стерти гучність, відкинувши ключ шифрування, подібно до схеми шифрування повного диска на диску.

Висновок:

Якщо ви насправді дуже хочете знати, тоді прочитайте папір, пов’язаний з блогу Sophos, і прочитайте технічні примітки виробників приводів щодо безпечного стирання. Однак, якщо ви хочете "хорошого" безпечного стирання, то SSD з повним шифруванням диска та захищеним протиранням та заміною ключів шифрування - це, мабуть, найкращий вибір. Як альтернатива, використовуйте шифрування на рівні операційної системи та викидайте ключ, коли потрібно надійно стерти дані.


1
Обережність хороша, але я не впевнений, що при цитуванні 2-річного повідомлення про помилку контролера, що виникла лише в сильно штучних робочих навантаженнях на конкретному SSD, який уже давно виправлено, слід надати велику вагу.
Деніел Лоусон

1
@Daniel Lawson: Справедливий пункт. :-) Я переформулював цей розділ і змінив його на тимчасову погіршення продуктивності - і змінив посилання на огляд Crucial's M4 / C400 накопичувача (в даний час транспортний привід), який демонструє значні уповільнення після важких операцій запису.
Jesper M

6

Вирівнювання зносу не має нічого спільного з нулюванням даних.

Ви скасовуєте дані, щоб зупинити інші люди / програми читати ці дані. SSD-накопичувачі "зношують" свої дані, щоб гарантувати, що вони залишаються доступними довше через "пошкодження", яке записує на SSD-диски. Також диски зазвичай роблять це, коли вони не зайняті, в серверних ситуаціях тихий час не завжди доступний, тому ця робота часто не виконується.

Ви стягуєте своїх клієнтів за їх операції з виводу? Якщо ні, що зупинити їх в основному вбивати їх частину SSD за години / дні, просто постійно пишучи весь час? Вбити SSD досить просто, ніж більшість людей думає , особливо в важких умовах.


Я звертався до "Кріса, що робить нулі безглуздим" Кріс, це дві різні речі
Chopper3

1
if (time < 9am) chriss_try_again()
Кріс С

ха-ха - не хвилюйся чувак :)
Chopper3

Хоча правда щодо даних, менш правдива щодо вбивства. "Корпораційні флеш-накопичувачі" мають досить кращий довговічність, а також розмір, ніж споживчі SSD, але так само, як і жорсткі диски підприємств, ви платите премію за продуктивність. За даними Seagate, їх "Pulsar" ESD має 5-річний термін служби, що становить близько 6 петабайт записів. anandtech.com/show/2739/2 - На Pulsar Drive virtualgeek.typepad.com/virtual_geek/2009/02/… - На EFDs
Даніель Б.

3
Я знаю, Даніель, я купую багато корпоративних SSD, які я вкладаю в 99 +% зчитування, але коли ми тестували їх, ми все-таки виявили, що їх легко "вбити", наприклад, ми поставили два HP в якості дзеркальної пари журнальний диск для досить зайнятої скриньки Oracle 10, і все почало йти не так протягом 4 тижнів. Тепер це було приблизно 10 місяців тому, тому не була перероблена версія цього приводу Pulsar від HP. 6PB дорівнює ~ 38MB / s протягом 5 років або ~ 180MB / s протягом одного року - так що ви не можете використовувати Pulsar для зйомки одного каналу HD відео, не прориваючись менше року.
Chopper3

3

Так що це читання варто статей , таких , як це . Якщо хтось має фізичний доступ до диска, то отримати інформацію простіше. Ви розглядали можливість шифрування даних на SSD, і тоді все, що вам потрібно зробити, це надійно забути про приватний ключ, який повинен бути легшою проблемою. Я бачу, що SSD є великою виграшею для vps через набагато кращі показники випадкового доступу.


2

Ви точно не хочете використовувати традиційні методи стирання SSD, такі як використання dd дисків нуля даних або інші методи, що записують випадкові дані на диск. Ці методи краще підходять для дисків на основі блюд. Він ефективний для стирання SSD, але також зайвим буде використовувати багато операцій з обмеженим записом на SSD, тим самим скорочуючи очікуваний термін служби SSD. Це швидко вийде дорого. Це також може знизити продуктивність SSD з часом.

SSD мають різні методи безпечного стирання. Я скажу, що це здається дуже громіздким, тому що зазвичай потрібен певний тип контролера SATA, який може робити емуляцію IDE, і процедура може бути складною. Деякі виробники надають інструменти для захисту стирання власних SSD-дисків, але ви також можете це зробити з hdparm в Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Але в цих інструкціях ви помітите, що переконайтеся, що накопичувач не "заморожений", перш ніж продовжувати роботу. Це один із найскладніших кроків, оскільки він потребує пошуку материнської плати та контролера SATA, який дозволить вам "розморозити" накопичувач під час завантаження системи, що зазвичай передбачає відключення його від кабелю SATA, а потім підключення його назад.

У будь-якому разі, моя рекомендація полягає в тому, щоб зробити ваше дослідження та вибрати SSD, який постачається із захисною утилітою стирання, яка може бути використана у зручній для вас системі.


Використовуючи dd для зняття з нуля диска, якщо ви використовуєте відповідний великий розмір блоку, а не 512 байт за замовчуванням, взагалі не буде використано багато циклів запису / стирання. Він буде використовувати приблизно 1. Я приблизно кажу, тому що я визнаю, що якщо ваша файлова система вирівнюється неправильно, ви можете в кінці випадків записати у той самий флеш-блок двічі. Використання dd bs=1Mпризведе до мінімального зносу.
Даніель Лосон

2

Хоча одна відповідь вже прийнята, я думаю, що команду blkdiscard /dev/sdXтут все-таки варто згадати.

За даними Arch Wiki: SSD , blkdiscardкоманда відкине всі блоки і всі дані будуть втрачені. Рекомендується використовувати перед тим, як "ви хочете продати свій SSD".

Я не знайомий з тим, як працює TRIM, тому я не знаю, чи є гарантія, що дані будуть стерті. Але я думаю, що це краще, ніж нічого не робити.

До речі, я боюся, що ця команда працює лише на цілому пристрої, а не на одному розділі.

Сподіваюся, це допомагає. :)


blkdiscardначебто не є безпечним у всіх випадках, оскільки TRIMсам по собі є лише запитом, і не всі контролери SSD його шанують. Більше про це можна прочитати тут і тут . Але, як пояснено там, ядро ​​Linux підтримує білий список, які пристрої, як відомо, вшановують TRIM.
nh2

Отже, якщо він hdparm -I /dev/theSSDмістить Deterministic read ZEROs after TRIM, blkdiscardповинні бути швидкі та гарантовано нульові показники, які будуть зчитуватися після цього. Інакше безпечне стирання здається кращим рішенням. Однак, враховуючи, що питання щодо безпеки клієнтів, Secure Erase може бути кращим рішенням, оскільки, здається, призначений для таких випадків використання.
nh2

1

Найкращий спосіб очищення даних із зображення віртуальної машини - це використання функції TRIM. Багато нових операційних систем підтримують це. Практично всі поточні SSD також його підтримують.

І що робить цей варіант ще кращим - це те, що будь-які САН також підтримують цю функцію під назвою SCSI UNMAP . Це чудова команда для SAN, які реалізують розріджене забезпечення, що є чудовою особливістю для віртуальних машин, особливо в поєднанні з блоком дедуплікації блоків.

Коли команду TRIM буде надано SSD, прошивка негайно позначить ці блоки, вільні для повторного використання. Деякі SSD завжди повертатимуть нулі для блоків TRIM'd . Інші диски повернуть визначені реалізацією (тобто випадкові) дані.

В операційних системах, що підтримують TRIM, просто видалення файлу позначатиме блоки для TRIM. Фактична операція TRIM може статися відразу, або вона може бути запущена для виконання пізніше. Іноді є інструменти, які змусять TRIM файл або сканують розділ на всі невикористані блоки.

Продуктивність TRIM в Linux все ще плямиста, тому, якщо ви використовуєте, ви хочете вивчити свої варіанти. У Windows це здається досить солідним.


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

@ Chopper3: Ви не бачите, що ATA TRIM і SCSI UNMAP - це одна і та ж команда? UNMAP, безумовно, використовується для забезпечення тонким забезпеченням. TRIM робить нульові блоки принаймні на деяких SSD-накопичувачах. Після TRIM дані відпадають : не існує підтримуваного методу для їх отримання, накопичувач може також повернути нулі та деякі дії.
Zan Lynx

"диск також може повернути нулі" і "дані не підлягають відновленню" - це дві дуже різні речі. У будь-якому випадку користувач насправді не хоче стерти SSD, він просто не хоче, щоб наступний клієнт міг отримати дані старого клієнта, що теж не те саме.
Chris S

0

Вам потрібна "Утиліта безпечного стирання SSD". Якщо ви використовуєте щось на кшталт ddвирівнювання зносу, це може спричинитися, і ви отримаєте резервні сектори, які ще містять старі дані клієнта. Безпечна утиліта стирання видалить усі сектори на пристрої (не лише ті, що представлені у вигляді диска в ОС).

Деякі з цих утиліт відносяться до конкретного виробника, попросіть у виробника вашого приводу (-ів) їх рекомендації, вони знають краще, ніж ми.


Вибачте, це не те, що я шукаю, так як я не хочу стерти весь диск. Мене не хвилює те, що дані клієнта все ще доступні на фізичному диску SDD - я просто не хочу, щоб інший клієнт мав доступ до них через витік даних на їх LV.
jtnire

0

Я не думаю, що написання 0 допоможе вам не допустити іншого клієнта до читання диска.

На SSD, коли ви щось пишете, процес сильно відрізняється від звичайного жорсткого диска.

Уявіть таку ситуацію: "порожня" комірка пам'яті на SSD-накопичувачі заповнена 1 секундою. Коли ви щось пишете на нього, він записує 0 і залишає 1-е незмінним.

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

"очистити": 11111111 1-е збереження: 11011011

нові дані: 00110011 немає способу зробити 11011011 стати 00110011 (зауважте, що потрібно було б повернути один 0 до 1, а це не можливо зробити на SSD). Отже, буде використана інша комірка пам'яті.

Коли ви TRIM накопичувач, ви скидаєте всі невикористані комірки пам'яті до 1. Отже, їх буде зрозуміло, що вони будуть використані знову. І збережені дані зберігаються.

Щоб зробити те, що ви хочете: спочатку видаліть (видаліть) файли. Осередки пам'яті до цих файлів будуть позначені як вільні. Потім зробіть TRIM: усі ці комірки пам'яті стануть 1-ю, без жодних ознак даних.


0

Легко відповісти: Використовуйте Linux для переформатування розділу як EXT4, що повідомляє SSD, щоб усі блоки були готові до стирання, як-от робити обрізки на всіх секторах розділу. Побічним ефектом є невелика кількість записів (EXT4 структури).

Забудьте про ˋddˋ випадковим чином, це скоротить багато часу служби SSD. Деякі SSD розумні, і якщо вони бачать повний сектор, заповнений нулями, вони не пишуть, вони відзначають це для стирання.

Оскільки ви не можете знати внутрішніх даних прошивки, найкращим варіантом буде переформатувати розділ як ext4 (без повного переформатування, просто швидкого, лише структури) на сучасному ядрі Linux, це зробить обробку для всього розділу перед форматуванням.

Якщо всі, хто говорить про безпечне стирання, тобто для цілого SSD одразу, запитується лише один розділ SSD і БЕЗ втрати іншої інформації, що зберігається на ньому (рівень розділу, а не рівень SSD).

Висновок: переформатуйте як Ext4, то якщо вам потрібен інший формат, переформатуйте ще раз у такому іншому форматі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.