Czy istnieje proste polecenie, którego można użyć do wyzerowania ostatniego 1 MB dysku twardego?
Na początek chciałbym dd if=/dev/zero of=/dev/sdx bs=1M count=1
. seek
Rozwiązaniem dla dd wygląda obiecująco, ale czy ktoś ma łatwego sposobu, aby dokładnie określić, jak daleko mam szukać?
Mam sprzętowe urządzenie RAID, które przechowuje niektóre ustawienia RAID na końcu dysku. Potrzebuję urządzenia RAID, aby zobaczyć dyski jako nieskonfigurowane, więc chcę usunąć konfigurację RAID bez konieczności poświęcania czasu na pełne wyczyszczenie dysków. Mam kilkanaście dysków 2 TB, a ich pełne usunięcie zajmie dużo czasu.
sda
jako przykładu jest strasznie niebezpieczne, jeśli skopiujesz i wkleisz i uda Ci się skopiować kopię karetki.sdx
byłoby znacznie lepiej dostosowane. Podejmuję środki ostrożności, ale tylko z ich powodu nie zniszczyłem teraz dysku.Rozmiar każdej partycji jest dostępny w
/proc/partitions
. Następujące polecenie pokazuje rozmiarsdx
(w jednostkach kB):A zatem:
źródło
Korzystanie z funkcji poszukiwania do końca dysku działa bardzo dobrze, tj .:
Jednak gdy go używasz, zalecam albo wiedzieć, że twoja wartość zliczania jest poprawna, albo w ogóle jej nie używać. Mówię, że dlatego, że dyski mogą mieć 512 bajtów sektorów lub sektory 4k, a jeśli użyjesz tego rozwiązania z dyskiem, który ma sektory 4k, nie przejdziesz do końca dysku z tą liczbą zliczeń, i na końcu może mi brakować informacji RAID (natknąłem się na to).
źródło
dd
adresuje sektory, gdy są używane z niestandardowymibs
wartościami mniejszymi / większymi niż rzeczywisty rozmiar bloku zgłaszany przez oprogramowanie układowe urządzenia lub jądro Linuksa.Możesz uzyskać liczbę sektorów na dysku za pomocą
hdparm -v /dev/sdx
. Spróbuj wyszukać numer_sektorów - 2048 (przy założeniu 512 bajtów sektorów).źródło
/sys/block/sdx/queue/physical_block_size
może dostarczyć informacji, ale niektóre nowsze dyski odtwarzają się szybko i luźno w zależności od wielkości sektora, który zgłaszają. Prawdopodobnie lepiej jest przeczytać etykietę na dysku lub sprawdzić ją w karcie danych producenta.hdparm -I /dev/sda
zawiera 2 „wersje” wielkości sektora:Logical
iPhysical
. Czy to rozumiesz przez „szybkie i luźne”? .... Mam wrażenie, że jeśli coś będzie się zachowywać w taki sposób, może to być system RAID ..Możesz użyć
dd
i uzyskać rozmiar urządzenia poprzezfdisk
:Nie używam wielkości bloku 1m, aby uniknąć błędów zaokrąglania.
Alternatywnie, możesz napisać mały program C (lub skrypt), który wywołuje
lseek
funkcję zSEEK_END
ujemnym przesunięciem 1 MB, a następnie wywołujewrite
.źródło