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:
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).
Tamamlanmış Bölüm Günlüğü
Yeni tamamlanan bölüm için, günlük denetiminin sonucu aşağıdadır.
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ı
ddrescuelog -t YourLog.txt
başka bir terminalde deneyebilir misin ?
ddrescue
yalnızca fiziksel sorunları çözmeye çalışabilir ve mantıksal hatalara hiç yardımcı olmaz. İkincisi için, deneyin fsck
ya da benzer ..
ddrescue
sadece diskte "kablo bağlantı kesme" nedeniyle oluşmayacak hatalı bloklar varsa gerekir . Kablo sorunlarınız varsa, sadece farklı bir kablo deneyin ...