Zerowanie dysków SSD

18

Hostujemy VPSy dla klientów. Każdy klient VPS otrzymuje LVM LV na standardowym dysku twardym wrzeciona. Jeśli klient odejdzie, wyzerujemy ten LV, upewniając się, że jego dane nie przedostają się do innych klientów.

Myślimy o skorzystaniu z dysków SSD dla naszej firmy hostingowej. Biorąc pod uwagę, że dyski SSD mają technologię „wyrównywania zużycia”, czy to sprawia, że ​​zerowanie jest bezcelowe? Czy to sprawia, że ​​pomysł SSD jest niewykonalny, skoro nie możemy pozwolić, aby dane klientów przeniknęły do ​​innego klienta?

jtnire
źródło

Odpowiedzi:

23

Zakładając, że to, czego chcesz zapobiec, to następny klient czytający dysk, aby zobaczyć dane starego klienta, a następnie zapisanie wszystkich zer w rzeczywistości nadal działałoby. Zapis zer do sektora „n” oznacza, że ​​odczytany sektor „n” zwróci wszystkie zera. Faktem jest, że rzeczywiste dane mogą nadal znajdować się w układach flash, ale ponieważ nie można wykonać normalnego odczytu, aby się do nich dostać, nie jest to problem w twojej sytuacji.

Problemem jest, jeśli ktoś może fizycznie złapać dysk i rozebrać go na części (ponieważ wtedy mógłby bezpośrednio odczytać układy flash), ale jeśli jedynym dostępem, jaki mają, jest szyna SATA, wówczas zapis wszystkich zer na całość dysk da sobie radę.

Michael Kohne
źródło
1
Dokładnie takiej odpowiedzi szukałem, a kiedy o niej pomyślałem, doszedłem do tego samego wniosku :)
jtnire
2
Wyobrażam sobie (ale nie wiem na pewno, a na pewno zależy to od chipsetu kontrolera używanego na dysku SSD), że zapisanie zera na dysku SSD nawet nie uderzyłoby w rzeczywiste układy flash. Kontroler powinien zauważyć, że są to wszystkie zera i po prostu oznaczyć ten sektor jako „wyzerowany” (lub po prostu skierować go na sektor zawierający wszystkie zera). Pisanie sektora zer jest dość powszechną rzeczą, a specjalna obudowa byłaby tanim i łatwym sposobem na zmniejszenie zużycia pamięci flash, więc byłbym zszokowany, gdyby przynajmniej Intel i Sandforce tego nie zrobiły.
kindall
20

Nigdy nie wypełniaj dysku SSD zerami. Jako minimum, zużyje to część żywotności zapisu SSD dla niewielkiej lub żadnej korzyści. W skrajnym najgorszym scenariuszu możesz wprowadzić kontroler dysku SSD w (tymczasowo) stan obniżonej wydajności .

Z tego źródła :

Wielokrotne nadpisywanie całego dysku wieloma powtórzeniami może z powodzeniem niszczyć dane, ale z powodu warstwy translacji oprogramowania układowego (FTL) jest to znacznie bardziej skomplikowane i czasochłonne niż w przypadku tradycyjnych dysków twardych. Na podstawie ich wyników jest to nieatrakcyjna opcja

Twoja najlepsza opcja, bezpieczne usuwanie poprzez pełne szyfrowanie dysku:

Kilka nowoczesnych dysków SSD może korzystać z szyfrowania całego dysku - przykładami są nowe dyski Intel 320 i niektóre dyski Sandforce serii 2200. Te dyski można bezpiecznie usunąć w prosty i szybki sposób, bez zużycia dysku. Dysk korzysta z szyfrowania AES dla wszystkich zapisywanych danych, więc bezpieczne kasowanie oznacza po prostu usunięcie starego klucza AES i zastąpienie go nowym. To skutecznie uniemożliwia odzyskanie wszystkich „starych” danych na dysku.

Bezpieczne usuwanie Intela nie jest jednak łatwe do zautomatyzowania. AFAIK, należy to zrobić z aplikacji GUI Intela dla systemu Windows, można go uruchomić tylko na pustym dysku innym niż rozruchowy i tak dalej. Patrz strona 21 i dalsze w dokumentach Intels.

Twoja inna opcja, bezpieczne usuwanie ATA:

Inną opcją jest wydanie polecenia ATA Secure Erase przez fx HDPARM w systemie Linux. Będzie to o wiele łatwiejsze do zautomatyzowania za pomocą skryptów.

Pod warunkiem, że dysk implementuje funkcję bezpiecznego usuwania ATA w „dobry” sposób, należy się spodziewać, że przynajmniej usunie „warstwę translacji flash” (FTL). Tabela FTL przechowuje mapowanie między sektorami logicznymi (które „widzi” system operacyjny), a fizycznymi stronami pamięci NVRAM na samym dysku. Po zniszczeniu tej tabeli mapowania odzyskanie danych z dysku powinno być bardzo trudne - ale prawdopodobnie nie niemożliwe.

Jednak nie znam żadnych badań, które wykazałyby, że Bezpieczne usuwanie ATA jest konsekwentnie i dobrze wdrażane na wszystkich dyskach producenta, więc waham się powiedzieć, że zawsze będzie działać - powinieneś przeczytać dokumentację techniczną producenta.

W przypadku pojedynczej partycji:

Gdy czytam komentarze do innych odpowiedzi, wydaje się, że OP chce tylko bezpiecznie usuwać pojedyncze partycje. Jednym dobrym sposobem na to byłoby tworzenie tylko zaszyfrowanych woluminów, przy użyciu LUKS lub TrueCrypt . W ten sposób możesz bezpiecznie usunąć wolumin, usuwając klucz szyfrowania, podobnie jak robi to schemat szyfrowania całego dysku na dysku.

Wniosek:

Jeśli naprawdę chcesz wiedzieć, przeczytaj artykuł z blogiem Sophos i uwagi techniczne producentów napędów dotyczące bezpiecznego wymazywania. Jeśli jednak chcesz „dobrego” bezpiecznego wymazywania, SSD z pełnym szyfrowaniem dysku oraz bezpiecznym czyszczeniem i wymianą kluczy szyfrowania jest prawdopodobnie najlepszym wyborem. Alternatywnie użyj szyfrowania na poziomie systemu operacyjnego i wyrzuć klucz, gdy chcesz bezpiecznie usunąć dane.

Jesper M.
źródło
1
Ostrożność jest dobra, ale nie jestem pewien, czy cytowanie dwuletniego powiadomienia o błędzie kontrolera, który pojawił się tylko przy bardzo sztucznym obciążeniu na określonym dysku SSD, który już dawno został naprawiony, powinien mieć dużą wagę.
Daniel Lawson
1
@Daniel Lawson: Fair point. :-) Przeredagowałem tę sekcję i zmieniłem ją na tymczasową obniżkę wydajności - i zmieniłem link do recenzji dysku Crucial M4 / C400 (obecnie wysyłany), który wykazuje znaczne spowolnienie po ciężkich operacjach zapisu.
Jesper M
6

Wyrównanie zużycia nie ma nic wspólnego z zerowaniem danych.

Usuwasz dane, aby uniemożliwić innym osobom / aplikacjom czytanie tych danych. Dyski SSD „zużywają się” na swoich danych, aby zapewnić ich użyteczność przez dłuższy czas z powodu „szkód”, które zapis powoduje na dyskach SSD. Również dyski zwykle robią to, gdy nie są zajęte, w sytuacjach serwerowych ciche czasy nie zawsze są dostępne, więc praca często nie jest wykonywana.

Czy obciążasz klientów za ich operacje IO? Jeśli nie, co powstrzyma ich przed zabiciem części dysku SSD w ciągu kilku godzin / dni przez ciągłe pisanie przez cały czas? Dyski SSD są znacznie łatwiejsze do zabicia, niż mogłoby się wydawać większość ludzi , szczególnie w trudnych warunkach zapisu.

Siekacz 3
źródło
Mówiłem „czy to sprawia, że ​​zerowanie nie ma sensu” Chris, są to dwie różne rzeczy
Chopper3
1
if (time < 9am) chriss_try_again()
Chris S
haha - nie martw się koleś :)
Chopper3
Chociaż jest to prawda w odniesieniu do danych, mniej prawdziwe w odniesieniu do zabijania. „Enterprise Flash Drives” mają raczej dłuższą żywotność i większy rozmiar niż dyski SSD dla konsumentów, ale podobnie jak dyski HDD dla przedsiębiorstw płacisz premię za wydajność. Według firmy Seagate ich „Pulsar” ESD ma 5-letni okres użytkowania, co stanowi około 6 petabajtów zapisów. anandtech.com/show/2739/2 - Na Pulsar Drive virtualgeek.typepad.com/virtual_geek/2009/02/… - Na EFD
Daniel B.
3
Znam Daniela, kupuję wiele dysków SSD dla przedsiębiorstw, które umieszczam w środowisku odczytu ponad 99%, ale kiedy je przetestowaliśmy, zaskakująco łatwo było je „zabić”, na przykład umieściliśmy dwa HP jako parę lustrzaną w dysk dziennika dla dość zajętej skrzynki Oracle 10 i sprawy zaczęły się nie udać w ciągu 4 tygodni. To było ~ 10 miesięcy temu, więc nie była to odremontowana wersja HP ​​tego napędu Pulsar. 6PB odpowiada ~ 38 MB / s przez 5 lat lub ~ 180 MB / s w ciągu jednego roku - więc nie można użyć Pulsara do przechwytywania jednego kanału wideo HD bez włamania w niecały rok.
Chopper3
3

Więc warto czytania artykułów takich jak ten . Jeśli ktoś ma fizyczny dostęp do dysku, łatwiej jest odzyskać informacje. Czy zastanawiałeś się nad zaszyfrowaniem danych na dysku SSD, a następnie wszystko, co musisz zrobić, to bezpiecznie zapomnieć o kluczu prywatnym, co powinno być łatwiejszym problemem. Widzę, że SSD jest dużą wygraną na vps ze względu na znacznie lepszą wydajność dostępu losowego.

James
źródło
2

Zdecydowanie nie chcesz używać tradycyjnych metod usuwania dysków SSD, takich jak ddzerowanie danych lub inne metody zapisujące losowe dane na dysku. Metody te lepiej nadają się do dysków opartych na talerzach. Skutecznie usuwa dysk SSD, ale niepotrzebnie zużywa również wiele ograniczonych operacji zapisu na dysku SSD, zmniejszając w ten sposób oczekiwaną żywotność dysku SSD. To szybko by się kosztowało. Może także z czasem zmniejszyć wydajność dysku SSD.

Dyski SSD mają inną metodę bezpiecznego usuwania. Powiem, że jest to bardzo kłopotliwe, ponieważ zwykle potrzebujesz określonego typu kontrolera SATA, który może wykonywać emulację IDE, a procedura może być skomplikowana. Niektórzy producenci zapewniają narzędzia do bezpiecznego wymazywania własnych dysków SSD, ale można to również zrobić za pomocą hdparm w systemie Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Ale zauważysz w tych instrukcjach, że musisz się upewnić, że dysk nie jest „zamrożony”, zanim będziesz mógł kontynuować. Jest to jeden z trudniejszych kroków, ponieważ wymaga znalezienia płyty głównej i kontrolera SATA, które pozwolą „odmrozić” dysk podczas uruchamiania systemu, co zwykle obejmuje odłączenie go od kabla SATA, a następnie ponowne podłączenie.

Tak czy inaczej, zalecam przeprowadzenie badań i wybranie dysku SSD, który jest wyposażony w bezpieczne narzędzie do wymazywania, którego można użyć w dogodnym dla ciebie systemie.

churnd
źródło
Użycie dd do wyzerowania dysku, o ile użyjesz odpowiednio dużego rozmiaru bloku, a nie domyślnego 512 bajtów, nie zużyje w ogóle dużej ilości cykli zapisu / kasowania. Użyje około 1. Mówię w przybliżeniu, ponieważ przyznaję, że jeśli wyrównanie systemu plików jest nieprawidłowe, w niektórych przypadkach możesz skończyć pisanie do tego samego bloku flash. Używanie dd bs=1Mspowoduje minimalne zużycie.
Daniel Lawson
2

Chociaż jedna odpowiedź jest już zaakceptowana, myślę, że blkdiscard /dev/sdXnadal warto tu wspomnieć o poleceniu.

Według Arch Wiki: SSD , blkdiscardpolecenie odrzuci wszystkie bloki i wszystkie dane zostaną utracone. Zaleca się użyć przed „chcesz sprzedać dysk SSD”.

Nie wiem, jak działa TRIM, więc nie wiem, czy istnieje gwarancja, że ​​dane zostaną usunięte. Ale myślę, że to lepsze niż nic nie robić.

BTW, obawiam się, że to polecenie działa tylko na całym urządzeniu, a nie na jednej partycji.

Mam nadzieję że to pomoże. :)

mksegv
źródło
blkdiscardwydaje się nie być bezpieczny we wszystkich przypadkach, ponieważ TRIMsam w sobie jest tylko żądaniem i nie wszyscy kontrolery SSD to honorują. Możesz przeczytać więcej o tym tutaj i tutaj . Ale jak wyjaśniono tam, jądro Linuksa utrzymuje białą listę, o których urządzeniach wiadomo, że honorują TRIM.
nh2
Więc jeśli hdparm -I /dev/theSSDzawiera Deterministic read ZEROs after TRIM, blkdiscardpowinien być szybki, a gwarantowane zera będą odczytywane później. W przeciwnym razie Bezpieczne wymazywanie wydaje się lepszym rozwiązaniem. Biorąc jednak pod uwagę, że pytanie dotyczy bezpieczeństwa klienta, Bezpieczne usuwanie może być lepszym rozwiązaniem, ponieważ wydaje się, że jest przeznaczone do takich przypadków użycia.
nh2
1

Najlepszym sposobem na usunięcie danych z obrazu maszyny wirtualnej jest skorzystanie z funkcji TRIM. Obsługuje to wiele nowszych systemów operacyjnych. Obsługują go prawie wszystkie obecne dyski SSD.

Tym, co czyni tę opcję jeszcze lepszą, jest to, że dowolne sieci SAN obsługują tę funkcję również pod nazwą SCSI UNMAP . Jest to świetne polecenie dla sieci SAN, które implementują rzadkie udostępnianie, co jest świetną funkcją dla maszyn wirtualnych, szczególnie w połączeniu z duplikacją bloków.

Po wydaniu polecenia TRIM na dysk SSD oprogramowanie układowe natychmiast oznaczy te bloki jako wolne do ponownego użycia. Niektóre dyski SSD zawsze zwracają zera dla bloków TRIM'd . Inne dyski zwrócą dane zdefiniowane w implementacji (tj. Losowe).

W systemach operacyjnych obsługujących TRIM, proste usunięcie pliku spowoduje zaznaczenie bloków dla TRIM. Rzeczywista operacja TRIM może się zdarzyć od razu lub może być zestawiona w celu późniejszego wykonania. Czasami istnieją narzędzia, które wymuszą TRIM pliku lub skanowanie partycji w poszukiwaniu wszystkich nieużywanych bloków.

Wydajność TRIM w systemie Linux jest wciąż nierówna, więc jeśli go używasz, będziesz chciał sprawdzić dostępne opcje. W systemie Windows wydaje się dość solidny.

Zan Lynx
źródło
Przepraszam, ale to nie ma żadnego sensu. O ile mi wiadomo, TRIM nie ma nic wspólnego z cienkim wyposażeniem, po prostu mówi SSD, aby nie zawracał sobie głowy sektorami wyrównywania zużycia, o których nie wie, że zostały usunięte przez system plików, a także bardzo konkretnie nie zerować bloki.
Chopper3
@ Chopper3: Nie widzisz, że ATA TRIM i SCSI UNMAP są tym samym poleceniem? UNMAP jest zdecydowanie wykorzystywany w cienkim udostępnianiu. TRIM wykonuje zerowanie bloków przynajmniej na niektórych dyskach SSD. Po TRIM dane znikają : nie ma obsługiwanej metody ich odzyskania, dysk równie dobrze może zwrócić zera, a niektóre tak.
Zan Lynx,
„dysk równie dobrze może zwrócić zera”, a „danych nie można odzyskać” to dwie bardzo różne rzeczy. W każdym razie użytkownik nie chce w ogóle wymazać dysku SSD, po prostu nie chce, aby następny klient mógł uzyskać dane starego klienta, co też nie jest tym samym.
Chris S
0

Potrzebujesz „SSD Secure Erase Utility”. Jeśli użyjesz czegoś takiego, jak ddmoże się zacząć wyrównywanie zużycia i skończysz na sektorach rezerwowych, które nadal zawierają dane starych klientów. Bezpieczne narzędzie do wymazywania usuwa wszystkie sektory na urządzeniu (nie tylko te przedstawione jako dysk dla systemu operacyjnego).

Niektóre z tych narzędzi są specyficzne dla konkretnego producenta, poproś producenta dysku (dysków) o ich zalecenie, będą wiedzieć lepiej niż my.

Chris S.
źródło
Niestety nie tego szukam, ponieważ nie zamierzam wymazać całego dysku. Nie martwię się o to, że dane klienta są nadal dostępne na fizycznym dysku SDD - po prostu nie chcę, aby inny klient mógł uzyskać dostęp poprzez wyciek danych do ich LV.
jtnire
0

Nie sądzę, że zapisanie zer pomoże ci uniemożliwić odczytanie dysku przez innego klienta.

Na dyskach SSD, gdy coś piszesz, proces ten bardzo różni się od normalnego dysku twardego.

Wyobraź sobie następującą sytuację: „pusta” komórka pamięci na dysku SSD jest wypełniona 1s. Kiedy coś do niego napiszesz, zapisuje je i pozostawia je bez zmian.

Następnie, gdy chcesz zapisać coś innego, poprzednia i nowa zawartość są porównywane. Jeśli poprzedni może stać się nowym, zapisując niektóre zera, ok. Jeśli nie jest to możliwe, używana jest inna komórka pamięci.

„wyczyść”: 11111111 1. zapis: 11011011

nowe dane: 00110011 nie ma możliwości, aby 11011011 stało się 00110011 (zwróć uwagę, że konieczne byłoby ustawienie jednego z 0 na 1 i nie jest to możliwe na dyskach SSD). Tak więc zostanie użyta inna komórka pamięci.

Podczas przycinania dysku resetujesz wszystkie nieużywane komórki pamięci do 1. Tak więc będą one gotowe do ponownego użycia. Zapisane dane zostają zachowane.

Aby zrobić, co chcesz: najpierw usuń (usuń) pliki. Komórki pamięci dla tych plików zostaną oznaczone jako wolne. Następnie wykonaj PRZYCINANIE: wszystkie te komórki pamięci staną się jednościami, bez żadnych znaków danych.

woliveirajr
źródło
0

Łatwo odpowiedzieć: użyj Linuksa, aby sformatować partycję jako EXT4, która mówi SSD, że wszystkie bloki są gotowe do skasowania, jak na przykład przycinanie wszystkich sektorów partycji. Efektem ubocznym jest niewielka liczba zapisów (struktury EXT4).

Zapomnij o „dd” losowo, co znacznie skróci życie SSD. Niektóre dyski SSD są inteligentne i jeśli widzą pełny sektor wypełniony zerami, których nie piszą, zaznaczają go do usunięcia.

Ponieważ nie możesz znać elementów wewnętrznych na oprogramowaniu układowym, najlepszą opcją jest ponowne sformatowanie partycji jako ext4 (bez pełnego ponownego formatowania, tylko szybka, tylko struktury) na nowoczesnym jądrze Linuksa spowoduje to przycięcie całej partycji przed sformatowaniem.

W przypadku wszystkich, którzy mówią o bezpiecznym usuwaniu, czyli dla całego dysku SSD naraz, wymagana jest tylko jedna partycja dysku SSD i BEZ utraty pozostałych informacji na nim przechowywanych (poziom partycji, a nie poziom SSD).

Wniosek: sformatuj jako Ext4, a jeśli potrzebujesz innego formatu, sformatuj ponownie w takim formacie.

Laura
źródło