Gerek Raspberry Pi’ın işletim sisteminin yüklü olduğu disk olan SD kart gerekse de harici olarak bağlanan USB depolama ortamları zaman zaman fiziksel hasara uğrayabilmekte ve bu hasar bir süre kendini göstermeden var olmaya devam edebilmektedir. Bir disk ortamının tamamının verileri sağlıklı saklayıp saklamadığı, yani yazılan verinin bozulmadan varlığını koruyup korumadığı basit bir yazma ve okuma denemesi neticesi kolaylıkla anlaşılabilir. Bu başlık altında her Linux işletim sisteminde bulunan dd aracını kullanarak diskte bir okuma taraması yapacak, daha amaca yönelik olan fakat diske yazma işlemi yaptığı için dikkatli kullanılması gereken badblocks aracını inceleyeceğiz. Ayrıca sabit diskin işletim sistemi olarak kabul edilen ve diskte enerji var olduğu sürece sürekli olarak çalışan S.M.A.R.T adlı firmware programının yapısını ve kullanılış amacını inceleyeceğiz. Özellikle mekanik disklerde SMART verileri dafa fazla öneme sahiptir.
dd aracı ile okuma sınaması gerçekleştirmek
Diskteki fiziksel hasarlar ise sadece basit bir okuma yapılarak anlaşılabilir. Bunun için “Terminal Ortamında SD Kartı Yedeklemek” adlı başlıkta detaylı olarak anlatıldığı üzere; dd aracı ile diskin tüm sektörleri okutulabilir. Fiziksel hasar olan bir sektöre gelindiğinde dd hata okuma hatası verecektir. Bunun için aşağıdaki gibi bir komut verilebilir.
1 |
pi@raspberry ~ $ sudo dd if=/dev/sda of=/dev/null count=102400 bs=1M |
Yukarıdaki komut ile /dev/sda diskinin 0. Sektöründen başlanarak 1 megabayt’lık bloklar halinde toplam 102400 MB veri okunarak /dev/null aygıtına gönderilmiştir. Toplamda diskten 100GB’lık veri okuması yapılır. Diskin boyutuna göre bu rakam değiştirilebilir. /dev/null aygıtı gelen her veriyi kabul eden ardından imha eden Linux’a özel bir aygıt dosyasıdır. Genellikle standart çıkışa (stdout) yansıyan çıktıların ekrana veya log’lara yansımadan yok edilmesi için kullanılır.
badblocks aracı ile yazma/okuma sınaması gerçekleştirmek
Linux’ta hasarlı sektörleri taramak için geliştirilmiş bir araç olan badblock da kullanışlı olabilir. badblock’u kurup aşağıdaki gibi çalıştırabilirsiniz. -v (verbose) seçeneği ile taramanın aşamaları ve sonuçları ayrıntılı olarak listelenecektir. Taranacak diski veya disk bölümünü belirlemek için mevcut disk bölümlerinin aygıt isimlerini lsblk aracı ile listeletebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
pi@raspberry:~$ sudo apt update pi@raspberry:~$ sudo apt install badblocks -y pi@raspberry:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 14.9G 0 disk sdb 8:16 0 298.1G 0 disk └─sdb1 8:17 0 298.1G 0 part /media/pi/DEPO VI mmcblk0 179:0 0 7.4G 0 disk ├─mmcblk0p1 179:1 0 41.8M 0 part /boot └─mmcblk0p2 179:2 0 7.4G 0 part /pi@raspberry:~$ sudo badblocks -v /dev/mmcblk0 Checking blocks 0 to 7802879 Checking for bad blocks (read-only test): Pass completed, 0 bad blocks found. (0/0/0 errors) pi@raspberry:~$ sudo badblocks -v /dev/sda Checking blocks 0 to 15633407 Checking for bad blocks (read-only test): done Pass completed, 0 bad blocks found. (0/0/0 errors) |
Daha önce de bahsettiğim gibi en doğru sonucu verecek tarama yöntemi yazma ve okumadır. Eğer diskin herhangi bir sektörüne yazılan değer geri okunabiliyorsa disk sektörlerinin sağlıklı çalıştığı söylenebilir. badblocks aracı bunun için de -w seçeneğine sahiptir. Taramayı başlatmadan önce diskteki verilerin yedeklerinin alınması gerekir keza diske veri yazılacağından veriler tamamen yok olacaktır. Sistem tarafından kullanımda olan bir diske yazma/okuma taraması yapılamayacağından öncesinde bağlı olan diskleri ayırmak gerekir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pi@raspberry:~ $ umount /dev/sdb1 umount: /dev/sdb1: not mounted pi@raspberry:~ $ sudo badblocks -vws /dev/sdb Checking for bad blocks in read-write mode From block 0 to 15633407 Testing with pattern 0xaa: done Reading and comparing: done Testing with pattern 0x55: 0.26% done, 1:14:08 elapsed. (0/0/0 errors) … |
badblocks sırasıyla 0xaa (10101010), 0x55 (01010101), 0xff (11111111) ve 0x00 (00000000) değerlerini diske yazarak aynı değeri okumaya çalışır. Aynı değer okunamazsa ilgili sektör bad-sector (bozuk sektör) olarak raporlanır. -s (progress bar) seçeneği her bir testin tamamlanma yüzdesinin ekranda gösterilmesini sağlar.
smartctl aracı ile dâhili kondisyon sınaması gerçekleştirmek
SATA, IDE ve SCSI arabirimli (HDD/SSD) sabit disklerin mikrodenetleyicisi üzerinde S.M.A.R.T[1] (Self-Monitoring, Analysis, and Reporting Technology) adı verilen bir firmware programı yüklüdür ve diskte enerji olduğu sürece bağımsız olarak çalışır. S.M.A.R.T sabit diskin kendi kendini izleme, analiz ve raporlama görevlerini yerine getirir. Bu program diskin mikrodenetleyicisine üretim sırasında yüklenir ve disk enerjilendiği andan itibaren sürekli çalışarak diskin kondisyonunu takip eder ve raporlar üretir.
S.M.A.R.T programı diskin okuma/yazma kafasının mekanik tepkileri, disk motorunun hız ivmeleri, okuma/yazma hataları (bad sector) ve süreleri ile diskin iç sıcaklığı gibi birçok parametreyi sürekli izler ve kendi dahili belleğine kaydeder. Bilgisayarın işletim sisteminden bağımsızdır, çeşitli araçlar ile sorgulanabilir ve komut verilebilir.
Diskteki herhangi bir sorun henüz işletim sistemine yansımamış olsa bile S.M.A.R.T’ın sürekli olarak izlediği ve belleğinde tuttuğu kayıtlar (log’lar) diskin genel kondisyonunu hakkında değerli bilgiler elde etmek için kullanılabilir. Dilediğiniz zaman diskin kondisyon durumunu öğrenmek için disk üzerinde çeşitli testlerin çalıştırılmasını ve raporlanmasını sağlayabilir mevcut günlük kayıtlarını okuyabilirsiniz. Eski ya da yıpranmış olduğunu düşündüğüğünüz veya ikinci el olarak satın aldığınız bir sabit diskin SMART verilerini incelemek verilerinizin ne kadar güvenli bir ortamda tutulacağını tahmin etmek açısından da çok kıymetlidir. Her nekadar S.M.A.R.T önemli veriler sağlıyor olsa da SMART tarafından bir raporun bildirilmemiş olması diskin çalışmasını engelleyen donanımsal bir hatayla her an karşılaşmayacağız anlamını da gelmez. S.M.A.R.T’ın sunduğu veriler böyle bir garanti sağlamaz.
Diskin S.M.A.R.T verilerini sorgulamak ve raporlamak için kullanacağımız araç smartmontools adlı paket içerisinde yer almaktadır. Paketi aşağıdaki gibi yükledikten sonra smartctl aracına –scan seçeneğini ekleyerek sisteme bağlı tüm S.M.A.R.T destekli disklerin listelenmesini sağlayalım.
1 2 3 4 5 6 7 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install smartmontools pi@raspberry:~ $ sudo smartctl --scan /dev/sda -d usbsunplus # /dev/sda [USB Sunplus], ATA |
smartctl diskin genel sağlık durumunu görüntülemek için -H (health) seçeneğine sahiptir. 24 saat içinde arızalanma ihtimali olan bir diskte sınama sonucu FAILED olarak raporlanır. -H seçeneği SMART tarafından tutulan disk seçeneklerini ve günlükleri kullanarak tahmini bir sağlık raporu verir.
1 2 3 4 5 6 7 8 9 |
pi@raspberry:~ $ sudo smartctl -H /dev/sda smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.9.80-v7+] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED |
Eğer bu sınama başarısız (FAIL) olarak sonuçlandıysa disk hâlihazırda arızalıdır veya kısa bir zaman içerisinde arızalanacak demektir. Bu durumda diskteki verilerin acilen yedeklenmesi gereklidir.
Diskin mevcut durumu hakkında daha detaylı bilgiler elde etmek ve SMART’ın tuttuğu günlükleri görüntülemek için -a (all) seçeneği kullanılabilir. -a seçeneğinin listelediği bilgiler arasında diskin desteklediği yetenekler (capabilities), disk sağlığını takip etmek için kullandığı öznitelikler (attributes) ve firmware yazılımının (SMART) disk taramaları sırasında karşılaştığı sorunlara ait günlükler yer alır. Bu bilgiler ışığında ileride arızalanma riski olan diskleri teşhis etmek mümkün olabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
pi@raspberry:~ $ sudo smartctl -a /dev/sda smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.9.80-v7+] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: TOSHIBA MK3276GSX -63 Serial Number: X1RGS31LS LU WWN Device Id: 5 000039 395d88b2d Firmware Version: GS101X User Capacity: 320,072,933,376 bytes [320 GB] Sector Size: 512 bytes logical/physical Rotation Rate: 5400 rpm Form Factor: 2.5 inches Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ATA8-ACS (minor revision not indicated) SATA Version is: SATA 2.6, 3.0 Gb/s (current: 1.5 Gb/s) Local Time is: Sat Sep 29 08:51:35 2018 UTC SMART support is: Available - device has SMART capability. SMART support is: Enabled [...] Error 2 occurred at disk power-on lifetime: 175 hours (7 days + 7 hours) When the command that caused the error occurred, the device was active or idle. After command completion occurred, registers were: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 84 51 01 c7 2b 1e 40 Error: ICRC, ABRT 1 sectors at LBA = 0x001e2bc7 = 1977287 Error 1 occurred at disk power-on lifetime: 113 hours (4 days + 17 hours) When the command that caused the error occurred, the device was active or idle. After command completion occurred, registers were: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 84 51 01 1c a2 74 62 Error: ICRC, ABRT 1 sectors at LBA = 0x0274a21c = 41198108 [...] |
Yukarıdaki SMART çıktısı uzunluğu nedeniyle kırpılmıştır ve devam eden paragraflarda ayrı olarak açıklanmıştır. Çıktıda cihazın genel bilgileri (-i seçeneği ile de listelenebilir) yanında, aynı türden iki hata ile karşılaşıldığı ve ilk hatanın 133 saatlik kesintisiz çalışma sırasında CRC kontrol değerinin teyit edilememesinden kaynaklandığı raporlanmıştır. Uzun süreli çalışmaya bağlı olarak ısınan disklerde bu tarz veri bozulmaları olabilir. Yine de badblocks ile yazma/okuma taraması ya da ileriki başlıklarda anlatıldığı gibi SMART taramalarını gerçekleştirmekte fayda vardır. -a seçeneğini kullanarak SMART bilgilerini listelemek istediğinizde aşağıdaki gibi bir mesajla karşılaşıyorsanız diskin SMART programı devre dışı bırakılmış demektir (-s off ile devre dışı bırakılabilir). Bir disk açısından bu hiç de iyi bir şey değildir.
1 2 3 4 5 |
SMART Disabled. Use option -s with argument 'on' to enable it. Diskin SMART programını tekrar çalışır duruma getirmek için -s on seçeneğini verebilirsiniz. pi@raspberry:~ $ sudo smartctl -s on /dev/sda |
smartctl’in -x seçeneği, tüm standart SMART bilgileri yanında disk üreticisinin o modele özgü tanımladığı sınama seçeneklerini ve sonuçlarını da listeler. Üreticiye özel seçenekler içinde diskin karşılaştığı en yüksek sıcaklık (Max Temperature), diskin çalışma saati (Power On Hours), plaka dönüş başlatma denemesi sayısı (Spin_Retry_Count) gibi teknik veriler yer alır.
1 |
pi@raspberry:~ $ sudo smartctl -x /dev/sda |
diskin SMART yeteneklerini ve özniteliklerini listelemek
smartctl aracı hem standart hem de disk üreticisine özel SMART yeteneklerini ve özniteliklerini listelemek için –capabilities ve –attributes seçeneklerine sahiptir. –capabilities seçeneği ile disk üzerinde çalıştırılabilecek test rutinleri ve tahmini tamamlanma süreleri ve diğer üretici tanımlı işlevler hakkında gerçekleştirilebilecek yetenekler listelenir. attributes ile de SMART tarafından takip edilen disk özniteliklerinin değerleri listelenir. Bu değerler diskin ömrü ve mevcut kondisyon durumu hakkında önceden bilgi sağlayabilir. Disk yeteneklerini listelemek için aşağıdaki komut çalıştırılabilir:
1 |
pi@raspberry:~ $ sudo smartctl --capabilities /dev/sda |
Komut listelediği belli başlı işlevler şunlardır:
- Self-test execution status: Hâlihazırda devam eden bir SMART sınaması varsa işlemin kalan yüzdesini gösterir. Eğer yoksa tarama sonucunda karşılaşılan hatalar bu satırda listelenir.
- Offline data collection status: Offline kısa taramanın etkileştirilip etkinleştirilmediğini, etkinleştirilmiş ise diskin SMART yazılımının 4 saatte bir gerçekleştirdiği tarama sonuçlarını görüntüler.
- Short self-test routine recommended polling time: Bir short sınamasının tahmini olarak ne kadar sürede tamamlanacağını dakika cinsinden haber verir.
- Extended self-test routine recommended polling time: long (extended) disk sınamasının tahmini olarak ne kadar sürede tamamlanacağını dakika cinsinden haber verir.
- Error logging capability: Sınamalar sırasında tespit edilen disk hatalarının disk mikrodenetleyici belleğinde kayıt altına alınıp alınamayacağını belirtir. Başka bir ifadeyle kayıt altına alma özelliğinin desteklenip desteklenmediğini belirtir.
- Offline data collection capabilities: Diskin SMART yazılımının ne tür işlevlerini desteklediğini görüntüler. Bunlar arasında, arka planda otomatik veri toplama ve disk yüzeyi taraması gibi işlevler yer alır.
Diskin smart yazılımının takip ettiği öznitelikleri[2] (attributes) listelemek için aşağıdaki komut çalıştırılabilir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
pi@raspberry:~ $ sudo smartctl --attributes /dev/sda smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.9.80-v7+] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME VALUE WORST THRESH TYPE UPDATED RAW_VALUE 1 Raw_Read_Error_Rate 100 099 050 Pre-fail Always 0 2 Throughput_Performance 100 100 050 Pre-fail Offline 0 3 Spin_Up_Time 100 100 001 Pre-fail Always 1387 4 Start_Stop_Count 100 100 000 Old_age Always 297 5 Reallocated_Sector_Ct 100 100 050 Pre-fail Always 0 7 Seek_Error_Rate 100 100 050 Pre-fail Always 0 8 Seek_Time_Performance 100 100 050 Pre-fail Offline 0 [...] |
Attributes listesinde her bir öznitelik için sunulan sütunların anlamları şunlardır:
- ID: Özniteliğin kimlik numarasıdır. Çeşitli program çıktılarında veya üretici dokümanlarında sunulan öznitelikleri karşılaştırmak için kimlik numarasını kullanmak daha doğrudur. Örneğin farklı isimler ile ifade edilen öznitelikler aynı kimlik numarasına sahip olabilir. Bu gibi durumlarda aynı SMART özniteliğinden bahsediliyor demektir.
- ATTRIBUTE_NAME: Smart özniteliğinin adıdır.
- VALUE: Özniteliğin normalleştirilmiş değeridir. Normalleştirmeden kasıt her üreticinin kendi disk teknoloji ve üretim kalite standartlarını dikkate alarak belirlediği değerleri farklı üreticilerinkiler ile kıyaslayabilmek için sabit bir aralık ile eşleştirmesidir. Buna ölçüm değerlerinin normalleştirilmesi adı verilir. Bu sütunun değer aralığı çoğunlukla 0-100 aralığında olmakla beraber bazı öznitelikler için 0-255 aralığında da olabilir. Diğer taraftan, üreticiler arasında ham (RAW) değerlerin normalleştirilmesi konusunda da ortak bir standart yoktur. Normalleştirme işlemi doğrusal olabileceği gibi üstel ya da logaritmik de yapılmış olabilir. Yüksek değerler (bazı üreticilerin sıcaklık özellikleri hariç) her zaman daha iyi sonuçları ifade eder. Normalleştirilmiş olan bu değerler üreticinin ilgili diskin öznitelikleri için belirlediği ve uzun süreli kullanım koşullarında test ederek ulaştığı referans değerleri baz alır. Bu nedenle her üreticinin aynı öznitelik için belirlediği ham değer aynı olmayacaktır. Aynı olmayan bu değerleri karşılaştırabilmek için normalleştirilmeleri gerekir. Örneğin bir disk üreticisi yeniden ayrılan 1000 sektör için 10 normalleştirilmiş değerini sunabilirken bir diğer üretici 15 değerini sunabilir. Bu yaklaşım diğer normalleştirilmiş öznitelikler için de geçerlidir. TYPE sütununda Pre-fail yazan bir özniteliğin normalleştirilmiş değeri (VALUE), THRES’dan küçük veya eşit ise bu bir sorun olduğuna ve diskin ileride arızalanacağına işaret eder. Yine VALUE değerinin THRES’dan küçük olduğu durumlarda TYPE sütununda Old_age varsa, diskin üreticinin öngördüğü oranda yıpranmış olduğu anlaşılır ve bu da çoğu zaman bir soruna işaret etmez.
- WHEN_FAILED: Bir arızanın kesin olarak var olup olmadığını belirtir. Kesinleşmiş bir sorun var ise bu sütunda FAILING_NOW ifadesi görüntülenir. Sütunda değer olarak “-” işareti varsa ilgili özniteliğin soruna işaret etmediği, daha önce de bu öznitelikle ilgili bir sorunla karşılaşılmadığı anlamı çıkar. Eğer WORST değeri THRES’den küçük veya eşitse, bu sütunda “in_the_past” bilgisi görüntülenerek, ilgili sorunla geçmişte en az bir kez karşılaşıldığı belirtilir.
- WORST: VALUE sütununda olduğu gibi normalleştirilmiş bir değerdir ve değerini yansıttığı özniteliğin SMART programının çalıştığı süre içinde karşılaştığı en kötü durumunu ifade eder.
- THRESH: Eşik değeri de (Threshold) normalleştirilmiş bir değerdir ve iyi durum ile kötü durum arasındaki sınır değeri ifade eder. VALUE değeri THRES değerinden ne kadar büyükse ilgili öznitelik açısından diskin durumu o kadar iyi demektir. VALUE, THRES’ın altına düşerse sorunlar baş göstermeye başlayacak demektir. Tam bir sonuca varabilmek için VALUE, TYPE ve WHEN_FAILED sütunlarını birlikte yorumlamak gerekir.
- TYPE: Özniteliğin türünü ifade eder. Aşınma ve yıpranma miktarını öngören öznitelikler de Old-age (yaşlı-yıpranma), yaklaşan olası bir arızayı göstermek için de Pre-fail (ön-hata) değeri kullanılır. Pre-fail öznitelikleri, üretici tarafından öngörülen disk ömrünü takip etmek için kullanılır. Pre-fail tek başına diskin arızalı olduğu anlamını taşımaz, bunun için ilgili özniteliğin VALUE değerinin THRES’den küçük veya eşit olması gerekir.
- RAW_VALUE: Değerin normalleştirilmemiş ham halidir ve çoğu durumda bir karara varmak için kullanılabilecek bir değer sunmaz. Bunun nedeni, diskin sağlığı konusunda karara varmak için her diskin fiziksel dayanıklılık özelliklerine göre değişen eşiklere sahip olmasıdır.
Komutun çıktısında listelenen SMART özniteliklerinden en önemlileri ve kodları şöyledir:
- Raw Read Error Rate (1): Diskin içinde bulunduğu enerji oturumunda (son enerjilenmesinden bu yana) karşılaştığı okuma hatalarının sayısını tutar. Bu hatalar CRC kontrol bilgisi ile sağlama yapılamadığında oluşur.
- Spin Up Time (3): Disk plakasının tam devir hızına ulaşması için geçen süreyi verir. Milisaniye veya saniye cinsinden olabilir.
- Reallocated Sectors Count (5): Okunamayıp (bad sector) diskin servis alanındaki yedek sektör ile ilişkilendirilmesi yapılan sektörlerin sayısı.
- Power On Hours (9): Diskin toplam çalışma süresini saat olarak verir. 9 numaralı bu SMART özniteliği, bazı marka disklerde dakika ve saniye cinsinden de tutulabilir.
- Spin Retry Count (10): Diskin olağan dönüş devir hızına ulaştırmak için fazladan gerçekleştirilen deneme sayısı. Bu deneme sayısı mekanik sorunlara işaret edebilir.
- G-Sense Error Rate (191): Disk kartının üzerinde yer alan G-Sensörünün kaydettiği harici şok ve titreşimlerin sayısını takip eden özniteliktir.
- Power-Off Retract Count (192): Diskin kapalı duruma geçme sayısını tutar Power Cycle Count ile beraber değerlendirildiğinde iki değerin eşit ya da yakın olması beklenir.
- Load/Unload Cycle Count (193): Okuma/yazma kafasının kaç kez park konumuna geçtiğini söyler. Özellikle 2.5 inçlik taşınabilir sabit diskler, bir sarsıntı anında kafanın disk yüzeyine çarpmaması ve enerji tasarrufu için sıklıkla park konumuna geçerler. Sıklıkla park konumuna geçmek genel disk başarımını düşürür. Disk üreticileri bu özelliği özelleştirmek için araçlar veya firmware’ler yayınlayabilir.
- Hardware ECC Recovered (195): Donanımsal hata düzeltme sayısı diskin elektro-mekanik sorunlarına işaret edebilir.
- Reallocation Event Count (196): Başarılı ve başarısız şekilde yeniden ayrılan bozuk sektörlerin miktarını ifade eden özniteliktir.
- Current Pending Sector Count (197): Yeniden ayrılmak için bekleyen bozuk sektörlerin miktarını ifade eden özniteliktir.
- Offline Uncorrectable (198): Hatalı ve düzeltilemeyen sektör okuma yazma işlemlerinin miktarını ifade eder.
- Disk_Shift (220): Okuma/yazma kafasının konumunu referans alarak disk plakasının dönme merkezinden kayıp kaymadığını takip eden özniteliktir. Plakanın dönme merkezinden kayması, disk mekanik bir şok aldığında veya aşırı ısındığında gerçekleşebilir.
- Load-in Time (226): Okuma/yazma kafasının park konumundan disk üzerindeki konumuna geçiş süresini sağlar. Uzun değerler mekanik bir soruna işaret edebilir.
Smart öznitelikleri okunurken her zaman normalleştirilmiş değerler dikkate alınmalıdır. Ham (RAW) değerler, disk hakkında doğru karar vermek için yeterli olmayabilir. Çünkü her üreticinin kullandığı teknoloji ve üretim standardına göre belirlediği aralıklar değişkenlik gösterir.
offline sınama gerçekleştirmek
Sabit disk işletim sistemi tarafından kullanılmadığı anlarda disk hasarlarına karşı kendi kendini otomatik olarak tarayarak kendi sağlığı hakkında veri toplayabilir. Bu veri toplama ve tarama işlemine offline sınama adı verilir. SMART uyumlu disklerde offline taramaya kısa (short) tarama adı da verilir. Kısa (short) veri toplama ya da tarama işi, diskin meşgul olmadığı zamanlarda 4 saatte bir gerçekleştirilir. Diskin bu tarama işlemini ne kadar sürede tamamlayabileceği ve offline sınama kapsamında tarayabileceği disk seçenekleri listelemek için -c (calculate) seçeneğini kullanabiliriz:
1 |
pi@raspberry:~ $ sudo smartctl -c /dev/sda |
Yukarıdaki komutun ekran çıktısında Short test ve Extended self test sütunlarında, sınamaların tahmini tamamlanma suresi yazar.
Diskin uygun olduğu zamanlarda (offline) kısa taramayı kendi kendine düzenli olarak gerçekleştirmesi için -o (offline) seçeneğini aşağıdaki gibi kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
pi@raspberry:~ $ sudo smartctl -o on /dev/sda smartctl 6.6 2016-05-31 r4324 [armv7l-linux-4.9.80-v7+] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF ENABLE/DISABLE COMMANDS SECTION === SMART Enable Automatic Offline failed: scsi error unsupported scsi opcode En son tarama sonuçlarını ise aşağıdaki gibi listeletebilirsiniz: pi@raspberry:~ $ sudo smartctl -l selftest /dev/sda === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 214 - # 2 Short offline Completed without error 00% 214 - # 3 Short offline Completed without error 00% 193 - # 4 Short offline Completed without error 00% 184 - |
Yukarıdaki ekran çıktısında, diskte gerçekleştirilen shorf offline taramalarının sonuç kaydı yeniden eskiye doğru listelenmiştir. Bu kayıtlara göre tüm sınamalar hatasız olarak tamamlanmıştır. Daha kapsamlı bir tarama için long taraması gerçekleştirebilirsiniz.
short sınaması gerçekleştirmek
Kısa (short) ya da selftest adı verilen taramayı -t short seçeneği ile istediğiniz zaman başlatabilirsiniz. Tarama, diskin firmware yazılımına gönderilecek bir komut ile başlatılacak ve -c çıktısında belirtilen sürede tamamlanacaktır.
1 |
pi@raspberry:~ $ sudo smartctl -t short /dev/sda |
Bu tarama sorunlu diskleri hızlı bir şekilde tespit etmek için kullanışlıdır ve temel olarak 3 aşamada hızlı bir tarama gerçekleştirir.
- 1. Elektriksel özellikler: Diskin üzerindeki mikrodenetleyici kapsamı daha çok üretici tarafından belirlenen elektronik bileşenleri sınar. Bunlar arasında diskin üzerindeki tampon bellek (RAM), okuma/yazma devreleri ve okuma/yazma kafasını kontrol eden elektronik devreler sayılabilir. Bu aşamada gerçekleştirilen sınamalar üreticinin disk tasarımına dâhil ettiği sınama özelliklerini kapsadığı için çok daha fazla olabilir.
- 2. Mekanik özellikler: Diskin okuma/yazma kafasının konumlanma başarımı ve disk dönüş hızı gibi tamamen üreticiye özel sınamaların gerçekleştirildiği aşamadır.
- 3. Okuma ve doğrulama: Disk üreticisi tarafından ayrılan bir disk alanından okuma yaparak okuduğu veriyi doğrular. Bu doğrulama diskin kullanıcı verilerinin saklandığı alanında yapılmaz.
Short sınamasının tamamlanma yüzdesini ve geçmiş offline tarama sonuçlarını, sudo smartctl -a /dev/sda çıktısında “Self-test execution status: ” satırında görebilirsiniz. Mevcut taramayı iptal etmek için -X seçeneğini kullanabilirsiniz. En son tarama sonuçlarını ise önceki başlıkta olduğu gibi -l selftest seçeneği ile listeletebilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberry:~ $ sudo smartctl -l selftest /dev/sda === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed: read failure 90% 19675 69299 # 2 Short offline Completed: read failure 90% 18675 52526 # 3 Short offline Completed: read failure 90% 16601 48525 # 4 Short offline Completed without error 00% 5505 - |
Yukarıdaki örnek SMART günlük kaydında disk çalışma zamanının 5505. dakikasında gerçekleştirilen kısa tarama başarıyla tamamlanmış; fakat 16601. dakikasında gerçekleştirilen taramada 48525. sektörde okuma hatası tespit edilmiştir. Disk firmware’i okuma hatası olan sektörleri yeniden ayrılmak üzere işaretler. Bunu 18675. dakikada gerçekleştirilen taramada 48525. sektörden sonra gelen 52526. sektörde tespit edilen okuma hatasından anlıyoruz. Benzer şekilde, bu sektör de bad sector olarak işaretlenmiştir ve daha sonra diskin sağlam bir alanı (spare area) ile ilişkilendirilmiştir. Ancak disk 19675. dakikada gerçekleştirilen long (extended) sınamasından 69299. sektördeki okuma hatası nedeniyle başarıyla geçememiştir. Uzun kullanım süresine sahip disklerde bu tarz sektör bozulmaları olması olağandır. Bu diskin kullanılmaması gerektiğine tam olarak karar vermek için SMART özelliklerinin (attributes) değerleri yorumlanmalı ve belli aralıklarla short ve long taramaları gerçekleştirilmelidir.
Bozuk sektör olarak işaretlenen alanların diskin servis alanı da adı verilen yedek sektörler ile ilişkilendirilmesi gerekir. Bu yapıldığında diski kullanan yazılım/işletim sistemi bozuk sektörlere aynı sektör adresini kullanarak erişebilir. Bozuk sektörlerin sağlam sektörler ile eşleştirme işlemi disk donanımı tarafından fiziksel olarak gerçekleştirilir ve ilgili eşleştirme tablosu yeni diskin servis alanı olarak ayrılmış kısmında saklanır. Okuma hatası nedeniyle işaretlenen bir sektörün yedek sektör (servis alanında bu amaçla ayrılmış boş sektörler) ile eşleştirilmesi ilk yazma işlemi sırasında gerçekleştirilir. Bu yazma işlemini 19675. sektör için elle gerçekleştirmek isterseniz dd aracından faydalanabilirsiniz. Aşağıdaki komut /dev/sda aygıtının 19675. Sektörünü okuyarak yine aynı sektöre yazmaktadır:
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberry:~ $ sudo blockdev --getbsz /dev/sda 4096 pi@raspberry:~ $ sudo dd if=/dev/sda of=/dev/sda bs=4096 count=1 seek=69299 conv=noerror,sync 1+0 records in 1+0 records out 4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000887961 s, 4.6 MB/s |
İlk komut ile dosya sisteminin kullandığı blok boyutu (cluster boyutu) öğrenilerek dd komutunun block size (bs) seçeneğini geçilmiştir. Komut çalıştıktan sonra kopyalamanın başarıyla gerçekleştiği gözükmektedir. Bu işlemden sonra smartctl aracının -A ile listelenen SMART özellikleri listesindeki Current Pending Sector Count değeri 1 azalarak Reallocated Sectors Count değeri 1 artmıştır.
long (extended) sınaması gerçekleştirmek
Uzun (long) SMART taraması diskin tüm sektörlerini tarayarak, diskin sağlık durumu hakkında daha kesin bir bilgi sunar. Bu bilgiyi short taramasının sonuçlarını doğrulamak için kullanmak akıllıcadır. Bu sınamanın süresi diskin kapasitesine göre değişir. Raspberry Pi takılan harici diskleri otomatik olarak bağladığı için taramaya başlamadan önce ayırmak faydalı olur:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
pi@raspberry:~ $ sudo umount /dev/sda1 Taramayı başlatmak için aşağıdaki komutu çalıştırabilirsiniz: pi@raspberry:~ $ sudo smartctl -t long /dev/sda Testing has begun. Please wait 98 minutes for test to complete. Test will complete after Fri Oct 12 12:46:47 2018 Use smartctl -X to abort test. Bu taramanın tamamlanma yüzdesi ve sonuçları smartctl -a çıktısından görülebilir. pi@raspberry:~ $ sudo smartctl -a /dev/sda === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: [...] Self-test execution status: ( 249) Self-test routine in progress... 90% of test remaining. SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Aborted by host 70% 216 - # 2 Extended offline Aborted by host 60% 215 - # 3 Short offline Completed without error 00% 214 - # 4 Short offline Completed without error 00% 214 - # 5 Short offline Completed without error 00% 193 - # 6 Short offline Completed without error 00% 184 - |
Yukarıdaki ekran çıktısında taramanın devam ettiği ve %10’unun tamamlandığı (90% remaining) ve daha önce bitirilen testlerden son ikisinin -X seçeneği ile kullanıcı tarafından sonlandırıldığı yazmaktadır.
Veri Kablosu ve Güç Besleme Adaptörüne Dikkat !
Smartctl aracı, işletim sisteminden bağımsız olarak diskin kendi firmware aracılığıyla diskin kendi içinde taramalar çalıştırmasını sağlar. Yani diskin kendi kendini denetlemesi için komutlar gönderir, diskin mikrodenetleyicisinde çalışan S.M.A.R.T programı da ilgili tarama prosedürlerini başlatır ve çıktılarını dahili belleğine kaydeder. Disk kendi kendinde bir hata tespit edemediği halde diskten okuma/yazma hataları alabilirsiniz.. Böyle durumlarda sorunu diskin dışındaki bileşenlerde aramak gerekir.
Harici olarak olarak bağlanan disklerde sık karşılaşılan sorunlar arasında USB kablolar başta gelir. Kablo konnektörünün yıpranmış ya da korozyona uğramış olması, kullanılan USB portların temas sorunları ve veri kablosunun iletkenlerinin yeterince kalın olmaması veya kopmuş olması gibi kablo kaynaklı sorunlardan bahsedilebilir. Diğer sık karşılaşılan sorun ise diskin besleme adaptörü ile ilgilidir. Besleme adaptörleri şehir şebekesi (~220v) gerilimini harici diskin çalışabileceği D.C gerilime (9-12v) çevirirerek regüle ederler. Bu çevirme işlemi disk çalıştığı sürece devam eder ve diske okuma/yazma gerçekleştirildiği sırada daha fazla akım ihtiyacı olacağından normalde çalıştığından daha zor koşullarda regülasyon yapar. DC adaptörlerin tamamında kullanılmakta olan elektrolitik kondansatörler ömürlü bileşenlerdir ve yıllar içerisinden özelliğini yitirerek görevini iyi yapamaz duruma gelebilirler. Diskin manyetik malzemesinde sorun olmamasına rağmen yıpranmış bir adaptör karşılanamayan akım ihtiyacından ötürü okuma/yazma işlemleri sırasında başarısızlığa neden olabilir. Diskinizi sağlam ve kaliteli birer kablo ve adaptör ile test etmeniz bu tür sorunları teşhis etmenizi sağlayabilir.
grafik ortamda smart taraması gerçekleştirmek
Eğer grafik masaüstü kurulumuna sahipseniz smartctl aracının görsel versiyonu olan GSmartControl programını da kullanabilirsiniz. Program komut satırı aracı olan smartctl ile gerçekleştirilebilen hemen tüm temel işlevleri yerine getirebilen görsel bir arayüze sahiptir. Programı kurmak için önce paket listesini güncelleyelim:
1 2 3 4 5 6 7 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install gsmartcontrol -y Programı çalıştırmak için grafik ortamda bir terminal penceresi açarak aşağıdaki komutu verin: pi@raspberry:~ $ sudo gsmartcontrol |
Programın ekran görüntüsü aşağıdaki gibidir. Identy sekmesinde sabit diskin marka/model bilgileri, Attributes sekmesinde firmware tarafından disk içinde izlemesi gerçekleştirilen teknik özellikler, Capabilites sekmesinde diskin donanımsal ve yazılımsal özellikleri listelenir. Error Log sekmesinde taramalar sırasında oluşan hataların detaylı bir listesi yer alır. Self-test Logs sekmesinde offline veya kullanıcı tarafından başlatılan sınamaların sonuçları listelenir. Perform Tests sekmesinde kısa (short) ve gelişmiş (extended/long) taramaları başlatmak için komut listesi yer alır.
GSmartControl programınn Self-Tests sekmesi
[1] S.M.A.R.T – https://www.tankado.com/s-m-a-r-t-teknolojisi-ne-anlama-geliyor/
[2] SMART özellik listesi: http://tiny.cc/smart_properties