Kötü sektörlerle hdd'yi kurtarma: DD vs GDDRGcue


11

Bir yerde ilgili internetlerde O oku gddrescue üstündür dd , en az bir sorunlu sektör üzerinde gerçekleştirilen okur diskin miktarı arasında ayırt etme açısından. Gerçekten böyle mi?

zaman dd = = dev / sda atlama = 900343967 / = a.bin sayısı = 4 iflag = doğrudan dönüşüm = noerror, senkronizasyon

dd: okuma / dev / sda: Giriş / çıkış hatası
2 + 0 kayıtlarda
2 + 0 kayıt,
1024 bayt (1.0 kB) kopyalandı, 18.6057 s, 0.1 kB / s
3 + 1 kayıt
4 + 0 kayıtta
2048 bayt (2.0 kB) kopyalandı, 18.6707 s, 0.1 kB / s

gerçek 0m18.672s
kullanıcı 0m0.000s
sys 0m0.004s

Btw, doğrudan bayrak gerçekten yardımcı olur, w / o Ben sadece 4 üzerinden 1 sektör okuyabilir (onunla 3/4 vs). Ancak, bu transfer hızını belirgin şekilde yavaşlatıyor - benim için en az yaklaşık 5 kat daha yavaş: bu bayrak olmadan 5MB / s vs 25MB / s . Her neyse, şimdi gddrescue (ddrescue) bölümü için ..

zaman dd kurtarma -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin

2048 Bayt / dev / sda'dan b.bin'e kopyalanmak üzere
Başlangıç ​​pozisyonu: infile = 460976 MB, outfile = 0 B
Kopya bloğu boyutu: 1 sert bloklar
Sert blok boyutu: 512 bayt
Max_retries: 0
Doğrudan: evet Seyrek: hayır Bölünmüş: hayır Kesme: hayır


Kurtarmayı kesmek için Ctrl-C tuşlarına basın : 1536 B, hata: 512 B, geçerli hız: 53 B / s
ipos: 460976 MB, hatalar: 1, ortalama hız: 53 B / s
opos: 1536 B, son başarılı okumadan süre: 0 s
Tamamlandı

gerçek 0m18.736s
kullanıcı 0m0.004s
sys 0m0.000s

Yukarıda gösterildiği gibi, yürütme için aynı süreyi almıştır. Beklendiği gibi - aynı istatistikler: 3/4. Ancak, dd (conv = sync) için 0x00 ile sorunlu sektörleri pad iken , gddrescue bu işlevi eksik gibi görünüyor? Bunun yerine, sorunlu sektörü pozisyonuna herhangi bir şey yazmadan atlar ve bir sonraki sektörle devam eder (çıktı dosyasında bu sektör üzerinde zaten yazılı verilerim varsa - üzerine yazılmaz: bazen bu istenmeyebilir ). -T (truncate) seçeneğinin gddrescue ile bir blok cihaz için nasıl çalışacağından emin değilim(sanırım, tamamen 0x00 ile üzerine yazacak), ancak normal bir dosyada, tahmin edildiği gibi, tüm dosyayı yalnızca ofset boyutlarında (yani -o1) yaparak kesecektir. Bu, dd senkronizasyonuna biraz benzer , ancak tüm çıkış cihazının / dosyanın üzerine yazmaya hazırsanız, sadece tanımlayıcı işlevselliğini taklit edecek kadar uzak değildir.

Her ne kadar, ayrıntılı seçeneğin varlığı ve kötü sektörleri / blokları kaydetme yeteneği sayesinde - gddrescue daha iyi bir seçenek gibi görünüyor. Her iki uygulamanın da (hemen hemen) aynı parametrelerle başlatıldığını belirtmek önemlidir.

Çıktı

fark? .bin

boş (çıkış 0), yani dosyalar tamamen aynı.

İşte ben parçasıdır YAPMAYIN anlama:

küçük okumalar ve yazmalar yaptığı için dd hatasız şeylerde bile yavaştır. Olabildiğince hatasız şeyler okumak yerine, sürücünün hatalı kısımlarını çiğnemek için çok zaman harcıyor, daha sonra zor şeyleri yapmak için geri dönüyor.

Bütün bunlar ne hakkında? Özellikle " olabildiğince çok hatasız şeyler okumak yerine, sürücünün hatalı kısımlarını çiğnemek için çok fazla zaman harcıyor, sonra sert şeyleri yapmak için geri dönüyor "? Yukarıda gösterilenle aynı süreyi aldı (verilerin çok küçük bir bölümünü incelemiş olmama rağmen, bu önemli mi?).

gddrescue , "kötü bir sektörde" yeniden okuma miktarını kontrol etmesi gereken -r anahtarını sunar , ancak dd , -r0 ile birlikte çalışıyor gibi görünmektedir (aynı zamanda olduğu gibi). Peki, bu seçenek yalnızca "post-processing" için mi? Ne en alıyorum aslen hem olmasıdır dd ve gddrescue ile bitiyor gibi görünüyor -r0 ve gg olmak görünmüyor çiğneme herhangi aşkın hatalı parçaların içinden gddrescue (her ikisi de görünüyor durması 15-18 için kötü blokta saniye vermek veya almak, yani anlaşma nedir, gddrescue nasıl daha hızlı ???)

Ayrıca, -D seçeneği (çıktı dosyası için eşzamanlı yazma kullanın) ne için? Yapılan testlerin hiçbirinden fark görmedim.

Herkes her şey hakkında yorum yapabilir mi? Teşekkürler.

Yanıtlar:


6

Alıntı yapılan yazarın sonucuna nasıl geldiğinden emin değilim. Doğru olup olmadığını tartışmıyorum, ya da değil, sadece o deneyime sahip değilim.

Öte yandan bu ifadeyle ilgili olarak ...

gddrescue, en azından sorunlu bir sektörde gerçekleştirilen disk okuma miktarını ayırt edebilmek açısından gg'den üstündür.

Gddrescue kullanmanın gerçek "en azından" nedeni, gddrescue uygulamasının tekrarlanan okuma / yazma denemelerinde çıktıyı kısmamasıdır. gddrescue ayrıca dd'yi durduracak bazı okuma hataları ile ilgili olarak tamamen otomatiktir.

Alıntı yapılan yazar doğru olabilir, olmayabilir ... ama tüm ifade gddrescue noktasını özlüyor.

GÜNCELLEME: gg ve gddrescue arasındaki ayrıntılı farklar.

dd conv = noerror, bir hatadan sonra da devam edecek, ancak kötü bloğu atlayacaktır. senkronizasyon seçeneğini eklemek bile atlama yerine sıfır koyacaktır. Aynı çıktıyı kullanarak başka bir okuma yapmak için dd'yi kullanırsanız, daha önce kurtardığınız her şeyin üzerine yazar / kaybedersiniz.

gddrescue, hatadan sonra da devam edecek. Kötü bir bloktan kısmi bir getiriyi geri kazanabilir ve geri dönüp blok sektörü sektöre göre dener. gddrescue, iyi blok, kötü bloklar ve sektöre göre herhangi bir kötü bloktan ayrıntılı bir hata günlüğü tutacaktır. Okumayı tekrar gerçekleştirmeye çalışırsanız, gddrescue kesilir (kesilir) ve ek olarak kurtarılan verileri ekler.

Eğer% 100 okunamayan bir blok halinde her iki araçla bile aklınızda bulundurun. Yine de ondan veri alamayacaksınız. gddrescue, bloktaki bazı sektörler okunabilir kalırsa potansiyel olarak daha fazla veri alabilir.


Anlıyorum .. gddrescue tam otomatik olarak, dd conv = noerror ile de tam otomatik değil mi? "Tekrarlanan okuma / yazma denemelerinde çıktıyı kısalt" kısmından bahsedebilir misiniz? Başlangıçta okunamayan sektörleri yeniden incelemek için gddrescue siparişi verildiğinde "işlem sonrası" şeyler mi demek istediniz ?
XXL

Sorunuzu yansıtmak için cevabımı güncelledim.
JM Becker

Sabit disklerde ve optik ortamlarda gddrescue uygulamasını birkaç kez kullandım. Avantajı, okunamayan alanları kurtarmaya çalışmasıdır. Ayrıca durdurabilir ve daha sonra yeniden çalıştırabilirsiniz ve kaldığı yerden devam edecektir.
Chris Thompson

1
@TechZilla - gddrescue sadece tıpkı yanı kötü blok atlar dd yapar. Yukarıda yazdığım gibi, sıfırlarla doldurma (conv = sync) gddrescue'nun eksik olduğu ve bazen yararlı olduğu kesin bir seçenektir (ekstra çaba ile bunu / dev / zero ile manuel olarak yapabilirsiniz, çünkü gddrescue başına üretilen kötü sektörler ). Orada hiçbir arasındaki fark gddrescue ve gg kurtarma açısından, gddrescue bu konuda farklı bir şey yapmaz. Neden? Çünkü aynı blok boyutuyla aynı miktarda veriyi geri kazanacaklardır.
XXL

@TechZilla - gerçek asıl fark, işlenecek sektörlerin miktarının blok boyutundan daha yüksek seçilmesidir . Bu karşılaştırma için size belirgin hız şeyler becerisi kadar verecek gg olarak, gg can statik olmayan değişken sektör büyüklüğü ile sadece çalışır. gddrescue , diğer taraftan, aşağıda belirtilen yerlere talimat gibi ilk birçok sektörde olduğu gibi okuyacaktır, ama aynı zamanda bu parçalar ilan edecek feci tek blok içindeki şüpheli ise ve işlem bittikten sonra - sonrası moduna geçiş kafa karıştırıcı alanlarını denetlemek minimum blok boyutuna ulaşıncaya kadar sektör boyutunu yavaş yavaş azaltma
XXL

2

Hdd'nizin üreticinin yanı sıra ne zaman üretildiğine ve modern hdds ile hangi bellenim sürümünün çalıştığına bağlı olarak, kötü sektörler algılandığında, bellenim tarafından kullanımdan kaldırılır ve sürücü kötü sektörleri atlamayı bilir. Yani, kötü sektörlerden bir hdd "kurtarma" kavramı bu konuda tartışmalı olabilir. Şu anda kötü sektörlerin bir zamanlar geçerli verilere sahip olup olmadığı sorusu, aradığınız durum çözümü gibi görünüyor - amaçlanan bir ceza yok!

Grc.com'da spinrite 6 adlı ve kötü sektörlerle hddleri düzeltebileceğini iddia eden bazı yazılımlar var. Ücretli bir yazılımdır ve hiç denemedim. Özellikle bir hdd'i "diriltmeye" çalışıyorsa ve aslında anlatıldığı gibi çalışıyorsa okumaya değer. Grc.com adresindeki spinrite 6 ile ilgili SSS, 30 günlük para iade garantisi olduğunu (ve deneme sürümü veya ücretsiz sürüm olmadığını) gösterir. Not: grc.com'a bağlı değilim, ne de durumunuz için tavsiye etmiyorum. Ben sadece var olduğunu biliyorum ve reklamı gibi çalışabilir, sadece benim sözüme - uyarı emptor.

Gddrescue'nun en azından sorunlu bir sektörde gerçekleştirilen disk okuma miktarını ayırt edebilmek açısından dd'den "üstün" olup olmadığını değerlendirmek için, kötü bir sektörde herhangi bir sayıda okuma ( bir firmware listesinde tutulan kötü sektörler listesinde fonksiyonel sektör) bana gddrescue veya dd'nin kalitatif kullanımında yararlı görünmüyor.

Web sayfasını okumak için yararlı olabilir, dd (Unix): https://secure.wikimedia.org/wikipedia/en/wiki/Gddrescue#Recovery-oriented_variants_of_dd

Ayrıca aşağıdakilere göz atmak da yararlı olabilir: http://www.myfixlog.com/fix.php?fid= adresindeki UBCD, dd-rescue ve P2 eXplorer kullanarak çökmüş bir sabit diskin görüntüsü nasıl oluşturulur? 21

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.