Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Czasami człowiek potrzebuje wyzerować HDD. Znam takie techniki:
dd if=/dev/zero of=/dev/sda
ddrescue /dev/zero /dev/sda
ddrescue --force /dev/zero /dev/sda
Czy mógłby ktoś wyjaśnić różnice w tych sposobach?
Offline
Akurat przy zerowaniu chyba nie ma żadnej. No może w czasie tego zerowania – w dd można ręcznie podbić bs żeby trwało krócej, nie wiem jak jest domyślnie w ddrescue. Generalnie natomiast jak sama nazwa wskazuje ddrescue powstał do ratowania danych, przykładowo masz uszkodzony dysk który sypie błędami odczytu – teoretycznie ddrescue powinien być w stanie więcej danych z niego wyciągnąć niż dd.
Offline
Do pewniejszego zerowania dysku możesz użyć [tt]shred[/tt].
Offline
shred to już jest zdecydowanie coś więcej niż zerowanie. :) Podejrzewam, że w przypadku całych dysków trwa absurdalnie długo. Jeśli już wychodzimy poza zerowanie, to można użyć /dev/urandom zamiast /dev/zero, ale to już też trwa znacznie dłużej. Ciekawym podejściem jest użycie szyfrowanego kontenera jako generatora pseudolosowych danych: [url]https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS#Use_LUKS_container_as_pseudorandom_number_generator_.28alternate.29[/url], powinno być w miarę szybkie.
Offline
No bo zakładałem, że chodziło o coś więcej ;)
Offline
Chodzi mi o zerowanie w celu naprawy błędów logicznych HDD, itp.
Offline
yossarian -- jaki cel w tym jest? xD Przecie nadpisywanie całych bloków ma sens tylko w przypadku usuwania konkretnych plików, no bo usuwane są tylko inode ale plik fizycznie dalej istnieje tylko nie ma do niego odwołania z ludzkiego punktu widzenia. Poza tym, jak wgrywamy jakiś nowy plik w miejsce starego to może się zdarzyć tak, że po tym starym zostaną dziury, np. wgramy 5 plików o "takim samym rozmiarze" co miał ten duży usunięty, to w paru miejscach mogą zostać niezapisane pełne bloki i z tych dziur można odzyskać kawałki informacji, choć przy dużych plikach odzyskanie paru KiB danych na pewno pomoże w czymś xD
Nie widzę też sensu nadpisywania 20x tego samego miejsca na dysku w celu "pewniejszego" zerowania dysku, a w przypadku czyszczenia całej powierzchni dysku /dev/zero w zupełności wystarczy, choć ja tam zawsze bym stworzył kontener tak jak opisano na archwiki i wypełnił dysk zaszyfrowanymi zerami, po czym nadpisał zerami nagłówki partycji i tyle.
Nigdy was nie zastanawiały te dwie wartości?
total size: 15.2 K ( 15539 bytes )
size on disk: 16.0 K ( 16384 bytes )
Albo inny przykład: stworzyłem sobie nowy pliczek textowy i wpisałem tam jeden znak, poniżej staty pliku:
total size: 2 B ( 2 bytes )
size on disk: 4.0 K ( 4096 bytes )
Jako, że system plików na tej partycji używa bloku o rozmiarze 4096 bajtów to w "size on disk" zawsze będzie wielokrotność 4K, ale jak widać w pierwszym przypadku jest dziura 845B a w drugim 4094B i jeśli tam był jakiś plik wcześniej, można podejrzeć co się tam znajdowało. Shred po prostu nadpisze w pełni wszystkie bloki, na których znajduje się dany plik Czyli całe 16K albo 4K i jeśli plik nie jest pofragmentowany to jego rozmiar na dysku zawsze będzie większy o 4KiB. To samo można osiągnąć przez dd i ręczne wyliczenie ile bloków ma zostać nadpisanych przy kasowaniu pliku a potem usunąć tylko inode. Shred to robi automatycznie, ale według mnie nadpisywanie xx razy tego samego pliku przy pomocy shreda jest po prostu głupie. xD
A co do problemów z dyskiem.
drelbrown -- a jakież to błędy logiczne masz?
Offline
@morfik a to trzeba mieć błędy logiczne aby móc zadać pytanie?
Offline
Przyczyna, to doposażenie się w wiedzę ;)
Offline
A błędy logiczne nie są błędami w wyniku sypnięcia się systemu plików?
Jeśli chcesz się przed nimi zabezpieczyć, to musisz aktywować skanowanie dysku po 20 restartach (itd.)
Niestety, ktoś pił wodę z muszli i wyłączył automatyczne skanowanie systemu plików
Fervi
Offline
Ja mam ustawione [tt]tune2fs -c 1[/tt] dla każdej partycji. Kiedyś mi się sypnął ext4, a odzysk danych z niego to była masakara.
Offline
I w jaki sposób zerowanie miałoby pomoc w przywróceniu danych? xD Tu raczej trzeba zrobić kopie superbloków, choć w sumie kopie są, wystarczy sobie pospisywać numery zapasowych bloków i na wypadek problemów z systemem plików, puszczać fsck z alternatywnych lokalizacji, to zawsze pomaga naprawić system plików. Co do samego sprawdzania co każdy mount, jeśli traktujesz kompa nieprzyzwoicie to pewnie się to nada albo gdy uptime idzie w miesiące, ale to nie ma większego sensu jeśli zasilanie jest stabilne a kompa wyłączasz parę razy dziennie. Poza tym, zawsze jak ci zdechnie pc, to zwykle z automatu jest puszczany fsck, a jeśli masz jakieś podejrzenia, że coś nie gra, tak jak ja miałem ostatnio, to możesz wymusić sprawdzanie wszystkich wpisów w /etc/fstab przy pomocy parametru -F dodanego do shutdown. Ja operuję na zaszyfrowanych voluminach od ponad 5 lat i jeszcze nie straciłem ani jednego bita danych, no może pomijając te 4GiB przy badbloku ale tak to wszystko działa jak należy, także wiem co gadam i naprawdę, trzeba się bardzo nieprzyzwoicie obchodzić z pc, żeby ten tak sam z siebie zaczął niszczyć wszelkie dane na nim zawarte. xD
Offline
@morfik za dużo fantazjujesz. Czy ja lub ktokolwiek napisał, że zerowanie ma pomóc w odzyskiwaniu danych? Jak na razie, jedyną osobą, która wypowiedziała się na temat jest ArnVaker.
Offline
[quote=drelbrown]Chodzi mi o zerowanie w celu naprawy błędów logicznych HDD, itp.[/quote]
no to badblocks. możesz sobie ustawić dowolny pattern jaki chcesz. jeśli preferujesz zera, to po prostu podajesz odpowiednią opcję -t
Offline
drelbrown -- ja wyraźnie poprosiłem o wyjaśnienie sformułowania "błędy logiczne dysku twardego", bo mi nic to nie mówi... a mniemałem, że skoro użyłeś takiego sformułowania to potrafisz je zdefiniować. Teraz po bólach w końcu wydobyliśmy z ciebie info, że to chodzi o system plików, a nie dysk jako taki i ja dalej nie wiem co ma piernik do wiatraka. Psuje się system plików to się zajmij systemem plików, a nie dyskiem, chyba, że system plików padł z winy dysku, ale to można ustalić choćby z raportu smart. Tak czy inaczej samo z siebie się nie psuje, masz ustawione fsck co 1 montowanie, też się zastanawiam po kiego grzyba, piszesz, że ciężko było odzyskać dane(?), bo ci się rozsypał system plików, i myślisz, że skan co 1 mount cię przed tym uchroni. Już sam fakt o ciężkości odzyskania danych świadczy o tym , że o budowie systemu plików nie wiesz za dużo i jak ci jebnie znowu to fsck ci nie pomoże, bo będzie potrzebował alternatywnego superbloku by w ogóle móc ustalić w jaki sposób są dane przechowywane na danej partycji, choć ja nadal nie wiem co ty rozumiesz przez "sypnięcie" się systemu plików. Dla mnie to oznacza nic innego jak tylko pustą partycję.
Dalej, piszesz, że w twojej ocenie nie odpowiadam na poruszone przez ciebie kwestie, by móc odpowiedzieć, potrzebuję info, których nie chciałeś podać, zamiast nich używasz sformułowań, których znaczenie pozostawiasz tylko do swojej wiadomości.
p.s. -- zakładam, że posiadasz umiejętności zajrzenia w helpa tych dwóch programów.
Offline
[quote=morfik]ja wyraźnie poprosiłem o wyjaśnienie sformułowania "błędy logiczne dysku twardego"[/quote]
w przypadku błędów logicznych, to w "normalnej" rozmowie z "normalnymi" ludźmi należy się spodziewać błędów systemu plików, na które zwykły tzw. "format" poradzi (czyli zakładamy na urządzeniu nowy system plików i błędy znikają).
i tu pojawia się sakramentalne ALE: - ale obecnie rozjeżdża się granica miedzy "logicznymi" a "sprzętowymi" sektorami, bo np. taki SMART zapamiętuje ujebane sprzętowe (prawdziwe sprzętowe!) sektory i zapisuje ich adres w swoim flashu. no, i teraz pojawia się zagadka filozoficzna: czy adresy uszkodzonych sektorów w pamięci jakiegoś obsranego kontrolera SMART to są jeszcze błędy sprzętowe, czy już logiczne.
jak dla mnie drelbrown ma błędy sprzętowe, tylko źle zaczął temat. zamiast np.: "chłopaki, syslog wywala mi takie dziwactwa: [tutaj lista kopiuj-wklej z logów], kernel wali jakieś dziwne komunikaty, nie wiem o co kaman, ale wklejam [tu lista kopiuj-wklej]" i tym podobne, to zaczął zupełnie od dupy strony.
drelbrown, ludzie na dugu to nie są wredni chuje, tylko kumate i nawet takie sprytne cwaniury. nawet chętnie ci pomogą, bo uważają to za pewien rodzaj sportu. no i im tez kiedyś ktoś pomógł i prowadził ich za rączkę, więc pomagając innym płacą stare długi. musisz jedynie postarać się opisać swój problem w jasny i możliwie jak najmniej skomplikowany sposób, bo nie mamy tu szklanych kul i czarnych kotów, rozumiesz.
Offline
@rychu ja wiem, że nie są *uje. Sam uzyskałem wielokrotnie pomoc. Temat założyłem, nie dlatego, że mam jakiś konkretny problem, tylko po to by dowiedzieć się jakie są różnice w technikach zerowania (o co zapytałem w pierwszym poście). Kiedyś miałem dysk z błędami S.M.A.R.T i po zerowaniu znikły, dlatego napisałem o błędach logicznych. Nie dawno (nie mam teraz linku) na jakimś rosyskim forum znalazłem info, że lepsze efekty daje [tt][b]ddrescue --force /dev/zero /dev/sda[/b][/tt] niż [tt][b]dd[/b][/tt].
Ostatnio edytowany przez drelbrown (2013-12-02 00:37:40)
Offline
[quote=drelbrown]Ja mam ustawione [tt]tune2fs -c 1[/tt] dla każdej partycji. Kiedyś mi się sypnął ext4, a odzysk danych z niego to była masakara.[/quote]
To co się posypało?
Zazwyczaj wystarczy z LiveCD odpalić Linuksa i fsck /dev/sd*
Przeskanuje, wywali co mu się nie podoba, naprawi i szafa gra
Ciekawi mnie czy przez takie wysypanie się można stracić dane ...
Fervi
Offline
Ja przejrzałem tylko powierzchownie ten ddrescue i dla mnie to nie jest nic magicznego, jedyne co to ma obsługę błędów i nie przerywa przy napotkaniu jakiś. Poza tym to automat w paru kwestiach, typu tworzenie pliku z kilku uszkodzonych jego kopi (pod warunkiem, że nie są uszkodzone w tym samym miejscu) ale to można bez problemu ręcznie zrobić, wystarczy sprawnie liczący mózg (albo kalkulator) i bez problemu można odtworzyć to co ten ddrescue robi, ale jak będzie padnięty sektor to i tak nie zdziała więcej niż samo dd, no może poza tym, że zamiast 1 błędu w smarcie, wywali 20. xD
Tak czy inaczej ja ten ddrescue i badblock obadam sobie kiedyś dokładniej ale raczej wątpię by mnie czymś zafascynowały. xD
[quote=fervi]Ciekawi mnie czy przez takie wysypanie się można stracić dane ...[/quote]
No jak ci prąd odetną podczas zapisywania pliku, to z pewnością stracisz dane, pytanie czy fsck to pozbiera i na bazie wpisów z dziennika odzyska plik sprzed zapisu, a to już nie zawsze jest takie pewne. Problemy mogą powstać tylko przy zapisie danych, przynajmniej te z winy systemu plików. Temu pisałem, że to się samo z siebie nie robi, trzeba bardzo się dawać dyskowi we znaki żeby ten zaczął tracić dane, zakładam, że dysk jest sprawny.
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00187 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.189.194.44' WHERE u.id=1 |
0.00229 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.189.194.44', 1732381845) |
0.00087 | SELECT * FROM punbb_online WHERE logged<1732381545 |
0.00062 | SELECT topic_id FROM punbb_posts WHERE id=247247 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=24731 ORDER BY posted |
0.00061 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24731 AND t.moved_to IS NULL |
0.00024 | SELECT search_for, replace_with FROM punbb_censoring |
0.00271 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24731 ORDER BY p.id LIMIT 0,25 |
0.00362 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24731 |
Total query time: 0.01308 s |