5.03.2013

Sabit diskler için sağlık kontrolü : SMART


Bütün verilerini yalnız bir sabit diskte tutup da bu diski kaybeden herkes gibi ben de diskin bozulmasının işaretinin önceden nasıl alınacağını araştırmıştım bir aralar. Sanki hiç bozulmayacakmış gibi güvendiğimiz sabit disk, bir gün bozuluverir. Yılların eskitemediği bir disk, ya da yeni alınmış bir disk, hiç farketmez.

Bu durumda kalmamak için geliştirilmiş bir teknoloji var: S.M.A.R.T. O noktalara dikkat, neden bilmem, illa ki noktalarla yazılacak.

Büyük verilerle çalışan firmaların yıllarca çalışarak geliştirdikleri bir yöntem. Ama standartlaşma aşamasında biraz cılız kalmış. Bunun sonucunda da tasarım amacı erken uyarı olan bir sistemin, bozulduktan sonra uyarı vermesi gibi bir durum söz konusu olmuş.

Eldeki tek yöntem bu olunca güvenmek lazım, kullanmak lazım. Uzun yıllardır her seferinde bir S.M.A.R.T. değerlerini okuyabilen bir program bulur, o programın "disk bozuluyor" demesini bekledim dururum. Okunan değerler karışıktır. Değerlerin açıklamalarının karışıklığı bir yana, bir de listelenen değerler Current, Worst, Threshold, Raw falan gibi alanlara sahiptir. Hangisine bakıcaz, hangisi önemlidir, bilemezdim bi türlü.

Öncelikle söylemek gerekir ki her üretici her disk için aynı standart verileri sunmuyor. Örneğin üreticinin biri "0x06 Read Channel Margin" verisini sunarken diğer üretici sunmayabiliyor. Hatta aynı üretici farklı model iki diskinde bile aynı veriyi sunmayabiliyor. Standartlaşma aşamasındaki cılızlıktan kastettiğim iki noktadan birisi bu.

Örneğin şu anda kullanmakta olduğum bilgisayarın disklerinin Acronis Drive Monitor ile okunan verileri şöyle:


Görüleceği gibi "Reallocated Sectors Count" alanı "Fail" olarak işaretlenmiş. Yanlız bu değer ile ilgili listelenen 3 tane veri var:
Raw Value = 4
Value = 100
Threshold = 36
Diskin üzerindeki sensörlerden okunan ham veri Raw Value olarak gösteriliyor. Bu ham veri daha sonra normalize edilerek 1 ile 253 arasında bir değere çevriliyor (1 en kötü, 253 en iyi değer). Bu normalize edilmiş değer yukarıdaki resimde Value olarak listelenmiş. Acronis Drive Monitor göstermemiş, ama başka programlarda bir de Worst alanı var ki o da normalize edilmiş veriler içinde şimdiye kadar okunan en düşük değer olarak tanımlanıyor. Threshold olarak gösterilen değer ise eşik değeri: bu değer sağlıklı bir disk için olabilecek en düşük değer. Bu değerin altına düşmeden diskinizin değiştirilmesi öneriliyor.

Bir disk üreticisinin isteyeceği en son şey ürettiği disklerin çabucak bozulmasıdır. Bunun sonucunda da disk üreticileri SMART verilerinin "diskiniz bozuluyor" şeklinde uyarı vermesini istemezler. Bu aşamada standart da onları zorlamadığı için bazı durumlarda disk çok geç uyarı verebilir, veya uyarı vermeden bozulabilir. Dahası bir üretici "SMART uyumlu" olarak ürettiği disk onlarca sağlık parametrelerinden sadece birini sunuyor olabilir. Bunun da standart açısından hiç bir sakıncası yok.

Evet, eksiklikleri var ama yine de bu sistemin sağladığı verileri kullanmak gerek.

Aynı bilgisayarda aynı diskleri için HDD Tune yazılımının sunduğu ekran da şöyle:


Bu araç ise Acronis'in aksine Reallocated Sector Count'un durumunu OK olarak listelemiş, ama onu ve başka iki değeri sarı ile işaretlemiş. Şu sayfada sarı değeri için "Kritik değere çok yakın" açıklaması yapılmış. Aslında örneğin Spin Retry Count için mevcut normalize değer 100, şimdiye kadar okunan en kötü değer de 100, okunan ham veri 0, ama yine de sarı işaretlenmiş. Tamam, 97 eşik değerine çok yakınız, ama disk alındığı günden bu yana 99 bile olmamış ki! Okuyan programların da bu konuda farklı yorumlarının olduğu da aşikar.

Wikipedia'nın SMART ile sayfasında, dikkat edilmesi gereken önemli veriler şöyle listelenmiş:

IDDeğer AdıAçıklaması
0x05Reallocated Sector CountManyetik disk plakasının üzerinde okuma/yazma hatasına sahip alan sayısı (ham veri). Buradaki veriler sağlam başka bir noktaya taşındıkları için kullanıcı birşey hissetmez, ama bu sayıların çoğalması da bir sorun belirtisidir.
0x0ASpin Retry CountDisk plakasını döndüren motorun, çalışma durumuna geçiş için yaptığı başarısız girişim sayısı.
0xB8End-to-End Error / IOEDCDiskin cache belleğinden manyetik belleğine kadarki yolda oluşabilecek parity hataları.
0xBCCommand TimeoutDiske gönderilen ve zaman aşımına uğrayan komut sayısı. Sıfırdan farklı olması bir sorunun işareti.
0xC4Reallocation Event CountBozuk alanlardaki verilerin sağlam alanlara kopyalama sayısı. "Reallocated Sector Count" verisinden farklı olarak bu veri başarılı ve başarısız taşıma işlemlerinin toplamıdır.
0xC5Current Pending Sector CountOkunamayan ve başka bir yere taşınmak için bekleyen (okunamadığı için taşımak da mümkün değil, ama disk yazılımı bozuk yeri işaretler ve bu verinin üzerine yeni bir veri yazılacağı zaman bunu sağlam başka bir alana yazar) alan sayısı.
0xC6Uncorrectable Sector CountDisk üzerinde düzeltilemeyecek okuma/yazma hatalarına sahip alanların sayısı.
0xCASoft Read Error RateECC hatalarının sayısı.
0xE6Drive Life Protection StatusDiskin "Hayat Eğrisi'ne (Life Curve)" göre çalışma durumu. 

Bunun dışında elimizdeki bir diskin ne kadar uzun süredir çalıştığını gösteren "0x09 Power-on Hours" alanı da var, bunlara dikkat etmek gerek.

2 yorum:

carnage dedi ki...

Merhabalar. Son bir yılda üst üste disk arızaları yaşayan biri olarak yazıyorum ki s.m.a.r.t sistemi pek faydalı bir sistem değil. öncelikle hdd arızalarının ne kadarının elektronik-devre kartının yanması gibi- ne kadarının elektromekanik -kafa atma olayı gibi-arızlar olduğuna bakmak lazım. Geçen yıl giden tüm disklerimin smart değerlerinde hiçbir sorun görünmüyordu ve aniden gidverdiler. bu verilerde gerçekten dikkate alınması gereken şey raw değerleri. çünkü current pek çok etmenle değişbiliyor. mesela hdd sata kablosunu çıkarıp takın current sıfırlanır.-birçok hdd problemini veri kablosunu çıkarıp takarak hallettim. bağlantıların gayet iyi olduğunu ve geveşeklik olmadığından eminim.- bir de smart'ın bazı ufak hatalarda bile diski açtırmaması problemi var. mesela 0x00000e9 denen windows 7 hatasıo gii.

Metin dedi ki...

Yorum için teşekkürler. Evet, maalesef SMART standartları ile ilgili ciddi sorunlar var. Yazımın amacı aslında SMART'ı övmekten ziyade SMART destekli programlardaki verilerinin anlamları ile ilgili bir not düşmekti.

Ama bir şeyi anlamadım. Önemli olan raw değeri, current kabloyu çıkartıp takınca sıfırlanıyor demişsiniz. Ama current zaten raw'ın normalize değeri değil mi? Yani current sıfırlanmışsa raw da hata olmadan önceki değerlerini göstermeye başlamıştır (sensörlerden gelen sağlıklı durumu okuyor olmalı). Peki böyle bir durumda worst değeri de sıfırlanıyor mu? Sıfırlanmaması gerekir diye düşünüyorum. Eğer sizin durumunuzda sıfırlandıysa mümkünse disk marka ve modelini belirtebilir misiniz?

Bence 0xe9 hatası durumunu daha iyi incelemek gerekir. Diskin açılamaması 0xe9 hatasının bir sonucu değildir. Muhtemelen tam tersine açılamayan bir disk sonucunda işletim sistemi 0xe9 hatasını vermiştir.