Linux’ta sabit diskleri otomatik bekletme

____________________________________________________________________

Sabit diskler bilgisayarlarımızın veri depoları, sürekli çalışan mekanik ya da elektronik aksanlar. Elektronik olanlarında sıkıntı yok da, mekanik olmayanlar biraz daha hassas oluyorlar. Özellikle dizüstü bilgisayarlar gibi mobil kullanımda gerekmediğinde hem güç tasarrufu hem de darbe ve sarsıntıdan koruma amaçlı kapatmakta fayda var. Ben de böyle düşündüm ve bunu yapmaya çalıştım ki, bir miktar başarı elde etsem de Spindown adlı aracı bulana kadar tam istediğimi bir şekilde yapamadım. Aslında isteğim çok basitti, dizüstündeki ikinci sabit disk belli bir süre kullanılmayınca kafasını park edip disk motorunu durduracaktı.

Dizüstündeki ilk diskim bir katı hal diski, ikincisi ise 1 TB boyutunda mekanik ve elektronik aksamından dolayı S.M.A.R.T. hataları veren bir disk. İhtiyacım olan çoğu şey SSD üzerinde bulunduğundan, kullanmadığımda mekanik diski kapatmak istiyordum. Bunun için Ubuntu Diskler uygulamasını denedim, ilgili ayar vardı ama işe yaramıyordu. Sürücü ayarlarında bekleme süresini ve APM ayarlarını ayarlıyordum ama disk bazen kapanıyor çoğu zaman ise kapanmıyordu. Genel olarak şarjdan çıkarıp kullandığımda kapanıyordu ama şarjda iken kapanmıyordu. Tabi benim istediğim şarjda da kapanması. Bazen de kapansa da çoğu zaman kapanmıyordu. Bundan başka direk olarak Hdparm uygulaması ayarlarından yapılandırmayı denedim. Yine garip bir şekilde stabil olmadı, bazen kapanıyor bazen de kapanmıyordu.

Mekanik diski kullanılmadığında bekleme konumuna almak için çarem bir Google Code projesi olan Spindown adında bir uygulama oldu. Uygulama diskteki blok okuma ve yazma aktivitelerini takip ediyor ve belli bir süre boyunca bir aktivite olmamışsa diski bekleme durumuna getiriyor. Ayrıca çıkarılabilir diskleri de destekleyen uygulama kayıtlarını da syslog ile tutup her disk için ayrı ayar yapabilmeye olanak sağlıyor.

Kurulum

Uygulama bağımlılık olarak sg_start gerektiriyor ki sg3-utils paketini yükleyerek bunu elde edebilirsiniz. Bundan sonra uygulamayı Spindown Downloads sayfasından indirmeniz gerekiyor. Yazıyı yazdığım anda son sürüm spindown 0.4.0.

Bundan sonra indirdiğiniz arşivin içindeki dosyanın içindeki klasörü uygun bir konuma çıkartıp bir terminal uygulamasında CD komutu ile sabitlemeniz ve make komutlarını çalıştırmanız gerekiyor. Ya da aşağıdaki kodları sırası ile çalıştırmak yüksek ihtimalle bir sorun çıkartmadan kurulumu gerçekleştirecektir, kodda tar xvzf komutundan sonra indirdiğiniz dosyanın yolunu vermeniz gerekli.

tar xvzf spindown-x.x.x.tar.gz
$ cd spindown-x.x.x.tar.gz
$ make
# make install

Bundan sonra kurulum gerçekleşmiş olacaktır.

Konfigürasyon

İndirdiğiniz ilk dosyanın içinde spindown.conf.example adında bir dosya var. Bu dosyayı bir metin düzenleyicide açın ve oradaki açıklama ve örneklere göre düzenlemeye başlayın.

cycle-time değeri sabit diskteki blok aktivitesinin kontrol edileceği sıklığı saniye cinsinden belirtir.

idle-time Disk burada saniye cinsinden belirtilen süre kadar boşta yani aktivitesiz kaldıktan sonra kapatılır.

syslog Spindown uygulamasının syslog kullanarak kayıt tutmasını istiyorsanız bu değeri 1 yapın, istemiyorsanız da 0 olsun.

Disk sık kullanılan bir disk ise idle-time olarak 3600 altı bir değer tavsiye edilmiyor, çünkü kafanın sıksık park edilerek hareket kolunun aşınmasına sebep olabiliyor. Ancak benimki gibi nadir kullanılan bir disk ise değeri azaltabilirsiniz. Benim mesela cycle-time ve idle-time değeri de 60.

Uygulama ile kontrolünü ayarlamak istediğimiz diskler için [Disk 0], [Disk 1] şeklinde devam eden girdiler oluşturuyoruz. Bundan sonra da aşağıda örneğini verdiğim gibi name = yazarak / işaretleri olmadan bir disk yolu girmek yetiyor. Örneğin; name = sdb. name yerine id değeri de girilebilir tabii ki, ancak taşınabilir disklerinizi de kontrol etmek istiyorsanız name değeri daha kullanışlı. Bundan sonra spindown = 1 diye bir satır ekleyerek bekleme konumuna alınmasını istediğimizi belirtiyoruz. Son olarak da command değerine diski bekletmek için kullanacağımız komutu belirtiyoruz. Burada hdparm -y komutunu kullandım ben ama işe yaramazsa uygulama sayfalarından başka bir şeyler bulabilirsiniz. Ayrıca repeat = 1 diye bir satır ekleyerek de bekleme komutunun disk beklemede olsa bile diske tekrar gönderilmesini sağlayabilirsiniz ancak pek ihtiyaç duyacağınızı sanmıyorum. Son olarak dosyanın sonunda bir boş satır bırakmanızda fayda var, bu bir iniParser hatası ile ilgiliymiş. Bundan sonra oluşturduğunuz dosyayı kaydedip kök yetkileri ile dosya gezgininizi açın ve kaydettiğiniz dosyayı /etc/ yoluna spindown.conf adı ile kaydedin. Yani orijinal dosyanın sonundaki “.example” ifadesinin atılması gerekiyor. Benim spindown.conf dosyamdaki ayarlar aşağıdaki gibi.

cat /etc/spindown.conf
[General]
cycle-time = 60
idle-time = 60
syslog = 1

[Disk 0]
name = sda
spindown = 1
command = hdparm -y

Artık sabit diskinizin ayarladığınız süre kadar sonra bekleme moduna geçmesi lazım. Ayrıca S.M.A.R.T. değerlerinden Load / Unload Cycle değerini de arada kontrol etmenizi tavsiye ederim. Genelde 3,5 inç diskler 60 bin, mobil 2,5 inç diskler de 600 bin civarı mekanik kol yükleme ve toplama çevrimine göre hazırlanmıştır. Bu yüzden bu değeri arada takip edip bir sıkıntı görürsek önlem almakta fayda var.