Najszybszy sposób na wyczyszczenie dysku SSD ze wszystkich jego partycji w celu partycjonowania w systemie Linux?

21

Chcę wyczyścić dysk SSD ze wszystkich jego partycji i danych, aby móc go ponownie podzielić na partycje (nie jest to ze względów bezpieczeństwa).

Patrzyłem, sudo dd if=/dev/zero of=/dev/sdb bs=1Male jeśli to po prostu wypełnia każdą partycję zerami, nie jestem pewien, co chcę zrobić.

Planuję uruchamiać to polecenie dość często i nie chcę wyczerpać zapisów mojego dysku SSD. Czy ktoś mógłby mi doradzić, jak rozwiązać ten problem?

IgDV
źródło
1
Przestudiuj: Bezpieczne usuwanie ATA . Nie mam doświadczenia z tym procesem, więc nie jest to odpowiedź, tylko podpowiedź. Każdy może napisać własną odpowiedź na ten temat, jeśli wie, że jest to właściwy sposób.
Kamil Maciorowski
18
Ze względów bezpieczeństwa, czy tylko dlatego, że potrzebujesz podziału na partycje?
user1686
głównie tylko do podziału
IgDV
14
Działanie pompy o rozmiarze 12. I wiedziałeś, że ktoś powie to prędzej czy później!
ssimm
1
@ssimm - Moje preferencje to grill węglowy.
Daniel R Hicks,

Odpowiedzi:

41

Na dysku SSD: możesz przycinać całe dyski lub partycje za pomocą blkdiscard. Nie jest to zbyt bezpieczne, ale praktycznie natychmiastowe (dysk jedynie zaznacza wszystkie komórki jako nieużywane).

Dla bezpieczeństwa: użyj szyfrowania całego dysku. Nie przejmuj się czyszczeniem całego dysku, jeśli jest zaszyfrowany - wystarczy tylko wyczyścić obszar zawierający twoje klucze (np. Pierwsze 1–2 MiB każdej zaszyfrowanej partycji).

W przypadku partycjonowania: Znowu nie zawracaj sobie głowy usuwaniem wszystkich danych. Musisz tylko zniszczyć systemy plików za pomocą wipefs, a następnie wyszorować pierwszy 1 MB na dysku, aby usunąć resztki programów ładujących. Po sformatowaniu partycji przy użyciu mkfssystem operacyjny po prostu przyjmie, że jest całkowicie pusty.

(W rzeczywistości w Linuksie mkfs.ext4 automatycznie PRZYCINA całą partycję przed jej sformatowaniem).

użytkownik1686
źródło
6
W przypadku partycjonowania dlaczego nie po prostu usunąć starych partycji i utworzyć nowe?
el.pescado
5
Ponieważ jeśli utworzysz nowe partycje w tej samej lokalizacji (pozycja początkowa), znajdziesz w nich tylko te same stare dane! (Oczywiście, które jest zwykle nie jest to problem, bo z formatowania mkfsbędzie go kosza i tak jednak różne sytuacje dziwne. Nie stało - wipefsistnieje dlatego, że była potrzebna.)
user1686
4
@IgDV - co man wipefsmówi? (Wskazówka: spójrz na pierwszy przykład w sekcji przykładów strony podręcznika)
Timo
2
„wystarczy tylko wyczyścić obszar zawierający klucze” - na dysku SSD klucze można również odzyskać. Lepszym rozwiązaniem może być TPM lub silne klucze chroniące hasło. blkdiscardbyłoby również fajne, ponieważ tworzyłoby puzzle z reszty dysku, nawet gdyby atakujący znał klucz (zakładając, że starego mapowania nie można również odzyskać). „następnie wyszoruj pierwszy 1 MiB dysku, aby usunąć resztki bootloaderów” - dodatkowa sekcja służy tylko jako przepełnienie pierwszego 512B. Jeśli wyczyścisz pierwsze 512B, reszta 1M nie zaszkodzi.
Maciej Piechotka
1
@MaciejPiechotka: Niestety niektóre programy ładujące (szczególnie grub) również używają spacji po MBR.
user1686,
14

Jak wspomina Kamil Maciorowski , najlepszym sposobem, przy jak najmniejszym zużyciu do zapisu, usunięcia całego dysku, jest użycie polecenia „bezpiecznego kasowania” ATA. To poinstruuje sprzęt, aby wykonał jedno pełne czyszczenie, zamiast wielokrotnie zastępować komórki, jak w przypadku narzędzi takich jak shred. Można to zrobić tylko dla całego dysku, jeśli chcesz selektywnie wyczyścić partycje, zobacz odpowiedź grawity ( blkdiscard)

Dokładna implementacja polecenia zależy od sprzętu.

  • Większość dysków SSD wykorzystuje masowy sygnał elektryczny do czyszczenia całych układów w sposób „wszystko albo nic”. Powoduje to (normalne) zużycie zapisu, ale tylko w minimalnym możliwym stopniu (~ pojedynczy cykl zapisu).

  • Samoszyfrujące dyski SSD zwykle usuwają klucz szyfrujący z układu kontrolera (naprawdę natychmiast). Dyski samoszyfrujące zawsze szyfrują, nawet po wyjęciu z pudełka (z domyślnym kluczem fabrycznym). Dlatego wyczyszczenie klucza pozostawia tylko nieszyfrowalną zbieraninę na układach pamięci flash, nawet jeśli nie ustawiono klucza użytkownika.

  • Dyski twarde Spinning-Rust wykonują sprzętowy zapis zerowy wszystkich sektorów, co jest równoważne (i tak czasochłonne) jak działanie dd if=/dev/zero.

Proces jest dość dobrze udokumentowany tutaj: https://www.thomas-krenn.com/en/wiki/SSD_Secure_Erase (Osobiście korzystałem z tego procesu wielokrotnie na własnych dyskach SSD podczas ponownej instalacji systemu operacyjnego)

Edytuj: jeśli jesteś zainteresowany implikacjami bezpieczeństwa: sprawdź pytanie Security.SE

Jules Kerssemakers
źródło
Czy większość dysków ATA obsługuje Secure Erase? Miałem wrażenie, że jego wsparcie jest rzadkie.
Ruslan
1
Nie znalazłem jeszcze dysku (nowoczesnego, SATA), który go nie obsługiwał, ale przyznaję, że moje doświadczenie jest ograniczone do dysków twardych, które osobiście posiadam. Wydaje się również, że istnieje różnica między „bezpiecznym usuwaniem” a „ulepszonym bezpiecznym usuwaniem”, przy czym ten ostatni jest mniej obsługiwany.
Jules Kerssemakers
3
@ Ruslan Nigdy nie widziałem (ani nie słyszałem) o dysku specyfikacji SATA-2, który go nie obsługiwał. Prawie każdy dysk SATA wyprodukowany w ciągu ostatnich 10 lat powinien go mieć.
Tonny
Czy oznacza to również, że na samoszyfrujących dyskach SSD polecenie TRIM nie działa? (W przeciwnym razie nie zawsze jest to szyfrowanie, prawda?)
Mehrdad
1
@ Mehrdad: Tak, użycie TRIM na zaszyfrowanym dysku SSD powoduje wyciek informacji o tym, które bloki są wolne. To, czy jest to dopuszczalne, zależy od twoich potrzeb bezpieczeństwa. Dyskusja znajduje się np. Askubuntu.com/questions/399211/ ...
sleske
4

Pamiętając, że poprosiłeś o rozwiązanie, jak szybko wyczyścić dyski Zamień / dev / sdx na dysk, najprawdopodobniej / dev / sda

Spowoduje to wyczyszczenie tablicy partycji.

dd if=/dev/zero of=/dev/sdx bs=1024 count=50

Spowoduje to wyczyszczenie całego dysku, zajmie to chwilę.

cat /dev/zero > /dev/sdx
Jarrod Chesney
źródło
4
Nie używać cat. Użyj, ddaby poprawić wydajność.
Micheal Johnson
6
@Micheal Mówisz to, ale domyślnie ddużywa buforów 512-bajtowych, co zniszczy wydajność ... Coreutils ( cpi prawdopodobnie także cat) mają bardziej rozsądny rozmiar bufora. W ddkażdym razie nic z tego nie sprawia, że ​​jest z natury szybsze.
user1686,
3
@grawity Możesz zmienić rozmiar bufora za pomocą dd. Ostatnim razem, gdy próbowałem użyć catobrazu do zapisania na dysku, było ono znacznie wolniejsze niż przy użyciu ddodpowiedniego rozmiaru bufora.
Micheal Johnson