Okunamayan sektörleri bekleyen diskimi nasıl eşleştirebilirim?


10

Smartd'a göre, bazı okunamayan sektörleri olan bir diskim var. Diskin onları yeniden eşleştirmesinin ve smartd'ın şikayet etmesini durdurmanın en kolay yolu nedir?

Bugün, saatte iki tane alıyorum:

Eyl 10 23:15:35 hylton smartd [3353]: Cihaz: / dev / sdc, 1 Şu anda okunamayan (beklemede) sektörler

Sistem Ubuntu Linux 9.10 (şen) kullanan bir x86 sistemidir. Disk bir LVM grubunun parçasıdır. Smartctl diski şu şekilde tanımlar:

Model Ailesi: Western Digital Havyar İkinci Nesil Seri ATA ailesi
Aygıt Modeli: WDC WD5000AAKS-00TMA0
Seri Numarası: WD-WCAPW4207483
Yazılım versiyonu: 12.01C01
Kullanıcı Kapasitesi: 500.107.862.016 bayt

2
Bu sorun kendi kendine çözüldü; disk daha yüksek sesle şikayet etmeye başladı, ben de değiştirdim.
dkagedal

Yanıtlar:


15

Bekleyen okunamayan sektör, bir okuma hatası döndüren ve sürücünün mümkün olan ilk fırsatta yeniden eşleme için işaretlediği sektördür. Ancak, iki şeyden biri gerçekleşene kadar yeniden eşleme yapamaz:

  1. Sektör başarıyla yeniden okundu
  2. Sektör yeniden yazıldı

O zamana kadar sektör halen beklemede. Yani bununla başa çıkmanın iki yolu var:

  1. Başarılı olana kadar sektörü yeniden okumaya devam edin
  2. Yeni verilerle bu sektörün üzerine yaz

Açıkçası, (1) tahribatsızdır, bu yüzden muhtemelen ilk önce denemelisiniz, ancak sürücü ciddi bir şekilde başarısız olmaya başlarsa, kötü bir alandan sürekli okumanın daha hızlı başarısız olmasını sağlayacağını unutmayın. . Bekleyen sektörleriniz ve diğer hatalarınız varsa ve sürücüdeki verileri önemsiyorsanız , mümkün olduğunca fazla veriyi kurtarmak için hizmet dışı almanızı ve mükemmel araç ddrescue'unu kullanmanızı öneririz . Ardından sürücüyü atın.

Söz konusu sektör, umursadığınız veya bir yedeklemeden geri yükleyebileceğiniz veriler içeriyorsa, üzerine yazmak muhtemelen en hızlı ve en basit çözümdür. Daha sonra, sektörün halledildiğinden emin olmak için sürücünün yeniden tahsis edilen ve beklemedeki sayılarını görüntüleyebilirsiniz.

Sektörün dosya sisteminde neye karşılık geldiğini nasıl öğrenirsiniz? Ben mükemmel bir makale buldum Smartmontools internet sitesinde, burada oldukça teknik olduğunu ve ext2 / 3/4 ve reiser dosya sistemlerine özgü olmasına rağmen,.

Kendi (Mac) sürücülerimden birinde kullandığım daha basit bir yaklaşım, find / -xdev -type f -print0 | xargs -0 ...sistemdeki her dosyayı okumak için kullanmaktır . Bunu çalıştırmadan önce bekleyen sayımı not edin. Sektör bir dosyanın içindeyse, dosyaları okumak için kullandığınız araçtan (örn. Md5sum) size yolunu gösteren bir hata iletisi alırsınız. Daha sonra, dikkatinizi başarıyla okuyana kadar bu dosyayı yeniden okumaya odaklanabilirsiniz. Genellikle, birkaç kez tekrar okunması gereken seyrek kullanılan bir dosyaysa, bu sorunu çözecektir. Hata giderilirse veya tüm dosyaları okurken herhangi bir hatayla karşılaşmazsanız, azaldığını görmek için bekleyen sayımı kontrol edin. Varsa, sorun okunarak çözüldü.

Birden çok denemeden sonra (örneğin 20) dosya başarıyla okunamıyorsa, sürücünün sektörü yeniden tahsis etmesine izin vermek için dosyanın veya dosya içindeki bloğun üzerine yazmanız gerekir. Geçici bir dosyaya kopyalayıp sonra tekrar kopyalayarak, tek bir sektörün üzerine yazmak için dosyadaki (bölüm yerine) ddrescue uygulamasını kullanabilirsiniz. Sadece bu noktada dosyayı kaldırmanın kötü bir fikir olduğunu unutmayın, çünkü kötü sektör, bulunmanın daha zor olacağı ücretsiz listeye girecektir. Tamamen üzerine yazmak da kötü, çünkü sektörler tekrar serbest listeye girecek. Mevcut blokları yeniden yazmanız gerekir. notruncSeçeneği dd, bunu yapmanın bir yoludur.

Herhangi bir hatayla karşılaşırsanız ve beklemedeki sayım azalmazsa, sektörün serbest listede veya dosya sistemi altyapısının bir parçası olması gerekir (örn. Bir inode tablosu). Tüm boş alanı doldurmayı deneyebilir cat /dev/zero >tempfileve ardından beklemedeki sayımı kontrol edebilirsiniz. Aşağı giderse, sorun ücretsiz listesindeydi ve şimdi kayboldu.

Sektör altyapıdaysa, daha ciddi bir sorununuz var ve muhtemelen sadece dizin ağacında yürürken hatalarla karşılaşacaksınız. Bu durumda, tek mantıklı çözüm sürücüyü yeniden biçimlendirmek, isteğe bağlı olarak gerekirse verileri kurtarmak için ddrescue kullanmaktır.

Sürücüyü çok yakından takip edin. Sektörün yeniden tahsisi, kömür madeninde çok iyi bir kanaryadır ve muhtemelen başarısız olan bir sürücünün erken uyarısını verir. Erken harekete geçerek daha sonra felaketli ve çok acı veren bir toprak kaymasını önleyebilirsiniz. Birkaç sektör yeniden tahsisinin, sürücüyü atmanız gerektiğini gösteren bir gösterge olduğunu söylemiyorum. Tüm modern sürücülerin bir miktar yeniden tahsis yapması gerekir. Ancak, sürücü çok eski değilse (<1 yıl) veya sık sık yeni yeniden tahsisler alıyorsanız (> 1 / ay), en kısa zamanda değiştirmenizi öneririz.

Bunu kanıtlamak için ampirik kanıtım yok, ancak deneyimlerim, disk sorunlarının tüm diski arada bir ddokuyarak, ham diskin biri tarafından veya kullanılarak her dosyayı okuyarak azaltılabileceğini gösteriyor find. Son birkaç yıl içinde yaşadığım neredeyse tüm disk sorunları, nadiren kullanılan dosyalarda veya çok kullanılmayan makinelerde ilk olarak kırpıldı. Bu, sezgisel olarak da anlamlıdır, çünkü bir sektör sık ​​sık tekrar okuyorsa, sektör, tamamen okunamayana kadar beklemek yerine, o sektörle ilgili ufak bir sorun tespit ettiğinde yeniden tahsis etme şansına sahiptir. Ana bilgisayar, bir şekilde okuyarak veya yazarak veya SMART testlerinden birini gerçekleştirerek, bir sektörle herhangi bir şey yapma yetkisine sahip değildir.

Tüm diski okuyan her gece veya haftalık cron işi fikrini denemek istiyorum. Şu anda makinede ikinci bir sabit diskim olan "fakir bir adamın RAID" i kullanıyorum ve ana diski her gece yedekliyorum. Bazı yönlerden, bu aslında RAID yansıtma daha iyidir, çünkü bir dosyayı yanlışlıkla silip silersem, dünün sürümünü hemen yedek diskten alabilirim. Öte yandan, bir donanım RAID denetleyicisinin ortaya çıktıkça disk sorunlarını izlemek, raporlamak ve düzeltmek için arka planda çok iyi işler yaptığına inanıyorum. Geçerli yedekleme komut dosyam rsyncdeğişmemiş verileri kopyalamaktan kaçınmak için kullanıyor , ancak tüm sektörleri yeniden okuma ihtiyacı nedeniyle her şeyi kopyalamak veya her hafta tüm ham diski okuyan ayrı bir komut dosyasına sahip olmak daha iyi olur.


2
Yedekleme yaparsanız (dahili bir diske yeniden senkronizasyon sayılmaz;)) tüm verileriniz belirli zaman aralıklarında (yeniden / artan yedekleme programınıza bağlı olarak) okunur. RAID veya rsync yedek yedekler değildir. Ve btw, Donanım-RAID satıcılarına çok fazla inancınız olduğuna 'inanıyorum'. ;)
maxschlepzig

@maxschlepzig: Haklısın. Ayrı bir yedekleme rejimim de var. Bununla birlikte, benim deneyimim, bir sürücünün başarısız olması nedeniyle veri kaybı olasılığının, bir araya getirilen diğer tüm risklerden (hırsızlık, yangın vb.) Daha ağır bastığıdır. Modern sabit diskler, günümüzde onlar hakkında tamamen paranoyak olduğum kadar güvenilir değildir. Bu yüzden ikinci dahili dürtü stratejimin önemli bir parçası.
Neil Mayhew

Kullanarak diskin içeriğini okudum ve yeniden okudum dd if=/dev/sda ...ve sektörler hala beklemede, neden herhangi bir fikir?
dmansfield

@dmansfield, herhangi bir hatayla karşılaşmadıysanız, neden olduğundan emin değilim. Akıllı çıktıda sadece ham değerin doğru olduğunu fark ettim, bu yüzden sadece 'pişmiş' değere bakıyorsanız, bekleyen herhangi bir sektörünüz olmayabilir.
Neil Mayhew


1
  1. Verilerinizi yedekleyin
  2. Bu cihazı LVM grubundan kaldır
  3. dd if=/dev/zero of=/dev/sdc bs=4k- bu, üzerindeki tüm verileri silecek/dev/sdc
  4. LVM grubuna tekrar dahil et
  5. Yedeklemenizi geri yükleme

3
0. Bir yedeğiniz var. :-)
Steven D

Ancak bu bekleyen bir okuma hatasıdır, bu yüzden tüm sektörleri okumak yeterli olmamalı mı?
dkagedal

1
@dkagedal: Hayır, HD'nin ürün yazılımı zaten bu sektörü okuyamayacağını tespit etti. Onu kurtarmanın hiçbir yolu yoktur (kendi başına, belki de tekrar denemek ve tekrar denemek ve bir noktada şansa sahip olmak ... umarım bozuk veri sonra iade edilmez) ve böylece bu SMART hatasını kurar. Ancak bellenim belirli bir sektör hakkında bir yazı algılarsa, bu sektörü uzaklaştırarak (ve artık kullanmaz) ve bunun yerine yedek (çalışan) bir sektörü bu adresle eşler.
maxschlepzig

@dkagedal: Bazen yalnızca bir veya iki ek okuma sektörü geri getirir. Diğer zamanlarda, hiçbir şey onu geri getirmez. Ayrıca, sürücü, orijinal hatanın ciddiyetine bağlı olarak sektörü yeniden eşleştirmeye veya yeniden kullanmaya karar verir ve yazdıktan sonra başarılı bir şekilde geri okuyabilip okuyamayacağına karar verir. Anlatabileceğiniz tek yol, sürücünün yeniden tahsis edilen sayısına bakmaktır. Sürücülerin, veriler okunduğunda verilerin bozulmadığından emin olmak için oldukça kapsamlı bir sağlama toplamı kullandığına inanıyorum, böylece yeniden tahsis edilmemiş bir sektörden oldukça emin olabilirsiniz.
Neil Mayhew
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.