Mevcut durumu kullanarak GNU disk kurtarma (1.18.1) tamamlanması için döngü / zamanı nasıl tahmin edebilirim?


9

Arka plan / Bağlam:

Şu anda disk2s1 bölümüne bir sanal disk görüntüsü yazarken kablo bağlantısı kesilen bir USB'den veri kurtarmak için GNU ddrescue 1.18.1 çalıştırıyorum. Başlangıçta ikinci bölümümü (disk2s2) kurtarıyorum ve üçüncü aşamaya (Splitting) ulaştığımı fark ettim. Görüntüyü bir ağ depolama alanına yerleştiriyorum.

Soru:

Bu evrenin döngüleri olduğunu fark ettim. Mevcut durum bilgilerim göz önüne alındığında, karşılaşacağım döngülerin sayısını hesaplamanın bir yolu var mı (sadece iki hata gösteriyorum)?

Durum:

durum

Güncelleme / Düzenleme:

Ddrescue aracını kullanarak döngülerin / tamamlanma zamanının nasıl tahmin edilebileceğine hala çok ilgi duyuyorum. Yorumlara göre, şu anda çalışmakta olan disk2s1 bölümüm için bir günlük dosyası değerlendirmesi ekliyorum (disk2s2 14.5 saat sonra tamamlandı, yaklaşık 6 saat boyunca bir kullanıcı kesintisi ile).

part1-log

Tamamlanmış Bölüm Günlüğü

Yeni tamamlanan bölüm için, günlük denetiminin sonucu aşağıdadır.

foto-log

Referans (ddrescue algoritması notları):

4 Algoritma


GNU ddrescue, dd'nin bir türevi değildir ve her ikisinin de bir aygıttan diğerine veri kopyalamak için kullanılabilmesi dışında herhangi bir şekilde dd ile ilişkili değildir. Temel fark, ddrescue'nun hatalı sürücülerden veri kopyalamak için mümkün olan en az ek hasara neden olan karmaşık bir algoritma kullanmasıdır.

Ddrescue, devam etmekte olan kurtarmanın durumunu verimli bir şekilde yönetir ve önce iyi kısımları kurtarmaya çalışır, daha sonra kötü (veya yavaş) alanlarda okumaları zamanlar. Bu, arızalı bir sürücüden nihayet kurtarılabilecek veri miktarını en üst düzeye çıkarır.

Standart dd yardımcı programı, arızalı bir sürücüden veri kaydetmek için kullanılabilir, ancak verileri sırayla okur, bu da hatalar sürücünün başındaysa hiçbir şeyi kurtarmadan sürücüyü yıpratabilir.

Diğer programlar verileri sırayla okur, ancak hata bulduklarında küçük boyutlu okumalara geçer. Bu kötü bir fikir çünkü hata alanlarında daha fazla zaman harcamak, yüzeye, kafalara ve tahrik mekanizmalarına mümkün olduğunca hızlı çıkmak yerine zarar vermek anlamına geliyor. Bu davranış, kalan iyi verilerin kurtarılma şansını azaltır.

Ddrescue algoritması aşağıdaki gibidir (kullanıcı işlemi herhangi bir noktada kesintiye uğratabilir, ancak kötü bir sürücünün çekirdek vazgeçene kadar ddrescue'yu uzun süre engelleyebileceğini unutmayın):

1) İsteğe bağlı olarak, çok parçalı veya daha önce kesilmiş bir kurtarmanın durumunu açıklayan bir günlük dosyasını okuyun. Hiçbir günlük dosyası belirtilmezse veya boş değilse veya yoksa, tüm kurtarma etki alanını denenmemiş olarak işaretleyin.

2) (Birinci aşama; Kopyalama) Başarısız blokları kırpılmamış olarak işaretleyerek ve bunların ötesinde atlayarak giriş dosyasının denenmemiş kısımlarını okuyun. Yavaş alanların ötesine de atlayın. Atlanan alanlar daha sonra iki ek geçişte (kırpmadan önce) denenir ve her kurtarma işleminden sonra tüm kurtarma alanı denenene kadar yönü tersine çevirir. Üçüncü geçiş, atlama devre dışı bırakılmış bir süpürme geçişidir. (Amaç büyük hataları hızlı bir şekilde sınırlamak, günlük dosyasını küçük tutmak ve kırpma için iyi başlangıç ​​noktaları oluşturmaktır). Büyük bloklarda sadece denenmemiş alanlar okunur. Kırpma, ayırma ve yeniden deneme sektörlere göre yapılmaktadır. Her sektör en fazla iki kez denenir; bu adımda birincisi (genellikle büyük bir blok okumasının bir parçası olarak, ancak bazen tek bir sektör okuması olarak), ikincisi tek bir sektör olarak aşağıdaki adımlardan birinde okunur.

3) (İkinci aşama; Kırpma) En küçük kesilmemiş bloğun ön kenarından kötü bir sektör bulunana kadar her seferinde bir sektör ileriye doğru okuyun. Ardından, aynı bloğun arka ucundan, kötü bir sektör bulunana kadar, her seferinde bir sektörü geriye doğru okuyun. Kesilmemiş her blok için, bozuk sektör olarak bulunan bozuk kesimleri işaretleyin ve bu bloğun geri kalanını okumaya çalışmadan bölünmemiş olarak işaretleyin. Kesilmemiş bloklar kalmayana kadar tekrarlayın. (Kesilmemiş büyük bloklar, küçük blokların birleştirilmesiyle üretilir ve bu nedenle kenarlardaki iyi veri oranı daha küçüktür).

4) (Üçüncü aşama; Bölme) Bölünmemiş en büyük bloğun merkezinden, kötü bir sektör bulunana kadar her seferinde bir sektör okur. Ardından, bulunan kötü sektör denenmiş ilk sektör değilse, aynı bloğun merkezinden kötü bir sektör bulunana kadar bir seferde bir sektör geriye doğru okuyun. Günlük dosyası '--logfile boyutundan' büyükse, günlük dosyasındaki giriş sayısı '--logfile-boyutunun altına düşene kadar sırasıyla bölünmemiş en büyük blokları okuyun. Diğer tüm bölünmemiş bloklar 7'den az sektöre sahip olana kadar tekrarlayın. Sonra kalan bölünmeyen blokları sırayla okuyun.

5) (Dördüncü aşama; Yeniden deneme) İsteğe bağlı olarak, belirtilen yeniden deneme geçiş sayısına ulaşılana kadar kötü sektörleri tekrar okumaya çalışın. Her kötü sektör, her geçişte sadece bir kez denenir. Ddrescue, kötü bir sektörün kurtarılamaz olup olmadığını veya bazı yeniden denemelerden sonra sonunda okunup okunmayacağını bilemez.

6) İsteğe bağlı olarak daha sonra kullanmak üzere bir günlük dosyası yazın.

Toplam hata boyutu ('errsize') kırpılmamış, bölünmemiş ve bozuk kesim bloklarının boyutlarının toplamıdır. Kopyalama aşamasında artar ve kırpma, yarma ve yeniden deneme sırasında azalabilir. Ddrescue başarısız olan blokları bölerek daha küçük hale getirdikçe, hata sayısı artarken toplam hata boyutunun azalabileceğini unutmayın.

Günlük dosyası periyodik olarak diske ve ayrıca ddrescue bittiği veya kesildiği zaman kaydedilir. Böylece, bir çarpışma durumunda kurtarmaya çok az yeniden kopyalama ile devam edebilirsiniz. Kayıtlar arasındaki aralık, günlük dosyası boyutuna bağlı olarak 30 saniye ile 5 dakika arasında değişir (daha büyük günlük dosyaları daha uzun aralıklarla kaydedilir).

Ayrıca, aynı günlük dosyası, giriş dosyasının farklı alanlarını kopyalayan birden çok komut ve farklı alt kümeler üzerinde birden çok kurtarma girişimi için kullanılabilir. Bu örneğe bakın:

Önce diskin en önemli bölümünü kurtarın. ddrescue -i0 -s50MiB / dev / hdc hdimage günlük dosyası ddrescue -i0 -s50MiB / dev / hdc hdimage günlük dosyası

Sonra bazı önemli disk alanlarını kurtarın. ddrescue -i30GiB -s10GiB / dev / hdc hdimage günlük dosyası ddrescue -i30GiB -s10GiB / dev / hdc hdimage günlük dosyası

Şimdi geri kalanını kurtarın (zaten yapılmış olanları yeniden kopyalamayın). ddrescue / dev / hdc hdimage günlük dosyası ddrescue -d -r3 / dev / hdc hdimage günlük dosyası


disk hala aynı aygıt adı altında bağlı mı? Ayrıca, ddrescuesadece diskte "kablo bağlantı kesme" nedeniyle oluşmayacak hatalı bloklar varsa gerekir . Kablo sorunlarınız varsa, sadece farklı bir kablo deneyin ...
frostschutz

@TommieC. ddrescuelog -t YourLog.txtbaşka bir terminalde deneyebilir misin ?
Simply_Me

@Simply_Me Lütfen iki sonucu yansıtan güncellenmiş soruya bakın.
Tommie C.

@frostschutz Daha fazla bilgi için lütfen güncellenmiş soruya bakın. Kayıp kablo bağlantısı disk yazılırken gerçekleşti ve bölümleme tablosunda sorunlara neden oldu. Kablonun kendisi hasarsız.
Tommie C.

Kablo bağlantısının kesilmesi genellikle mantıksal hatalara neden olur (örn. Diskteki veriler% 100 geçerli değildir), ancak aynı anda düşürmedikçe sürücüde fiziksel sorunlara neden olmaz . ddrescueyalnızca fiziksel sorunları çözmeye çalışabilir ve mantıksal hatalara hiç yardımcı olmaz. İkincisi için, deneyin fsckya da benzer ..
Udo G

Yanıtlar:


6

Soru 10 ay önce sorulsa da, cevap önemli olabilir çünkü kurtarma döngüsü birkaç faktöre bağlı olarak hala çalışıyor olabilir! Hiçbir cinas amaçlanan.

Bunun nedeni, zaman tahmini neredeyse imkansızdır, ancak bazen aşağıdaki gibi kaba bir fikir edinebilirsiniz. En bariz nedenlerden biri, kötü bir sektörü okuma sürücüsünün ne kadar süreceğini tahmin edememenizdir ve ddrescue'nun her birini okumasını ve yeniden denemesini istiyorsanız, çok uzun zaman alabilir. Örneğin, şu anda 2 haftadan uzun süredir devam eden 500GB'lık küçük bir sürücüde kurtarma gerçekleştiriyorum ve muhtemelen birkaç günüm kaldı. Ancak benimkisi daha karmaşık bir durum çünkü sürücü şifrelenmiş ve her şeyi başarılı bir şekilde okumak için, bölüm tabloları, önyükleme sektörleri ve diskin diğer önemli bölümlerine sahip tüm sektörleri aldığınızdan emin oldum. Tüm kötü sektörler için şansımı artırmak için ddrescue'a ek olarak teknikler kullanıyorum. IOW,

"Döngüler" tahminine göre, yeniden deneme sayısını kastediyorsanız, bu, kullandığınız parametrelerle belirlediğiniz bir şeydir. "Toplam geçiş sayısı" anlamına gelirse, buradaki algoritmayı okuyarak kolayca belirlenebilir .. > man ddrescue </ Algoritma: ddrescue verileri nasıl kurtarır?

Özellikle, sağladığınız ekran görüntülerindeki rakamlarla konuşacağım. Diğer durumlarda geçerli olan başka faktörler olabilir, bu nedenle bu bilgileri genel bir kılavuz olarak alın.

Sağladığınız örnekte ddrescue cihazının çalışma durumu ekranına bir göz atın. Sorunun (kurtarma alanı) toplam "tahmini" değerini "errsize" ile elde ederiz. Bu, "henüz okunmamış" olan veri miktarıdır. Örnekte 345GB'dir. Sağdaki bir sonraki satır "ortalama ücret" tir. Örnekte 583kb / s

"Ortalama fiyat" sabit kalmaya devam ederse, gitmek için 7 gününüz daha var demektir. 345 GB / (583 kb * 60 * 60 * 24) = 7.18 Ancak sorun, 583kb / s'ye güvenememenizdir. Aslında iyileşmeye ne kadar derine giderseniz, sürücü gittikçe zorlaşıyor ve daha fazla deneme yapıyor. Böylece bitirme süresi katlanarak artar. Tüm bunlar sürücünün ne kadar kötü hasar gördüğüne bağlıdır.

Sağladığınız örnek, "başarılı bir okuma" nın 10 saat önce bittiğini gösteriyor. Bu, 10 saatten fazla süredir sürücüden gerçekten bir şey almadığını söylüyor. Bu, sürücünüzün 345 GB değerinde (veya bir kısmı) veri çekimine sahip olabileceğini gösterir. Bu senin için çok kötü bir haber.

Buna karşılık, bana "SMART" hataları vermeye başlayan ikinci 500GB'lık sürücüm diski diske kopyaladı (başka bir sürücüdeki günlük dosyasıyla) ve tüm işlem yaklaşık 8-9 saat sürdü. Son kısmı yavaşladı. Ama bu hala katlanılabilir. Çok kötü sürücü, yukarıda belirtildiği gibi, 500GB üzerinde çalışırken 2 haftadan fazla geçmiş olsa da ve hala% 4-5 iyileşmek için kaldı.

HTH ve YMMV

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.