Raspberry Pi SD Kart Ömrünü Uzatmak: Yazma Trafiğini Azaltmanın Yolları
SD kartlar sınırlı sayıda yazma döngüsüne dayanır. 7/24 çalışan bir Raspberry Pi'de kartın bozulmasını geciktirmek için günlük kayıtları, swap'ı ve veritabanı yazımını nasıl yöneteceğinizi anlatıyoruz.
Raspberry Pi'nin en sık anlatılan sorunu, haftalarca sorunsuz çalıştıktan sonra bir sabah açılmayan cihazdır. Çoğu zaman suçlu SD karttır. Flash bellek hücreleri sınırlı sayıda silme/yazma döngüsüne dayanır; sürekli küçük yazmalar yapan bir sistem kartı beklenenden çok daha hızlı yıpratır. Elektrik kesintisinde yarım kalan yazma da dosya sistemini bozabilir.
Bu yazıda kartın ömrünü uzatmak için işe yarayan, test edilebilir adımları sıralıyoruz. Hiçbiri garanti vermez; amaç riski azaltmak ve her durumda yedek bulundurmaktır.
Önce ölçün: kim yazıyor?
Önlem almadan önce yazmaların nereden geldiğini görün. iotop paketi bunu gösterir:
sudo apt install iotop
sudo iotop -oPa
-a kümülatif toplamı, -o yalnızca yazan süreçleri gösterir. Bir kaç saat sonra liste genellikle şu isimleri öne çıkarır: günlük kaydı (journald, rsyslog), veritabanı ve uygulamanın kendi log dosyaları.
1. Günlükleri RAM'e almak
Raspberry Pi OS'ta systemd-journald varsayılan olarak kalıcı ya da otomatik modda çalışabilir. Günlükleri yalnızca bellekte tutmak yazmaları büyük ölçüde azaltır. /etc/systemd/journald.conf içinde:
[Journal]
Storage=volatile
RuntimeMaxUse=50M
sudo systemctl restart systemd-journald
Bunun bedeli: yeniden başlatmadan sonra önceki açılışın günlükleri gider. Çökme sonrası "ne olmuştu" sorusunu cevaplamak zorlaşır. Bu nedenle kritik cihazlarda günlükleri ağdaki bir sunucuya göndermek (uzak syslog) daha dengeli bir çözümdür.
Alternatif olarak log2ram gibi araçlar /var/log dizinini RAM diskine bağlar ve belirli aralıklarla kalıcı depoya yazar. Kurmadan önce projenin güncel belgesini okuyun.
2. Swap'i azaltmak
Raspberry Pi OS varsayılan olarak dosya tabanlı swap kullanır. Bellek yeterliyse swap'e yazmak gereksiz yıpranmadır. Mevcut durum:
free -h
swapon --show
Bellek kullanımınız sürekli düşükse swap'i kapatabilirsiniz. Ancak 1 GB'lık bir Pi 3'te bellek aşıldığında süreçlerin öldürülmesi (OOM) riskini göz önünde bulundurun. Orta yol: vm.swappiness değerini düşürmek.
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system
3. Dosya sistemi bağlama seçenekleri
/etc/fstab içindeki kök bölümüne noatime eklemek, her dosya okunduğunda erişim zamanının diske yazılmasını engeller:
PARTUUID=xxxx-02 / ext4 defaults,noatime 0 1
Küçük görünür ama okuma ağırlıklı sistemlerde fark yaratır. /tmp için tmpfs kullanmak da geçici dosyaların kartı yormasını önler:
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=64m 0 0
4. Veritabanı yazımını ayarlamak
MariaDB her işlemde günlüğü diske zorlar (fsync). Yoğun olmayan bir iç uygulamada bile bu sürekli yazmaya dönüşür. İki yaklaşım vardır:
- Veritabanını harici SSD veya USB diske taşımak. En etkili çözümdür. Pi 3, USB'den doğrudan açılış desteğine sahiptir; Pi 4 ve sonrasında daha da kolaydır.
innodb_flush_log_at_trx_commit=2ayarı. Her işlem yerine saniyede bir yazar. Yazmayı azaltır ama elektrik kesilirse son bir saniyenin işlemleri kaybolabilir. Personel giriş-çıkışı gibi kayıtlarda bu riski bilerek kabul edin.
Ayrıca uygulamanın gereksiz yazdığı alanları (ör. her isteği veritabanına loglamak) gözden geçirin.
5. Elektrik kesintisine karşı
Dosya sistemi bozulmalarının en yaygın sebebi ani elektrik kesintisidir. Kaliteli bir adaptör (en az 2,5 A) kullanın, mümkünse küçük bir UPS veya "UPS HAT" ekleyin. Sunucu odasında çalışıyorsa cihazı gelişigüzel fişten çekmek yerine sudo shutdown -h now ile kapatma alışkanlığı edinin.
6. Kaliteli kart ve alan bırakmak
- Markalı, "endurance" ya da "high endurance" olarak satılan kartlar sürekli yazma için tasarlanmıştır; sıradan kameralar için üretilmiş kartlar bunu çok daha kötü kaldırır.
- Kartı tamamen doldurmayın. Boş alan, kartın aşınma dengelemesi (wear leveling) için yer bırakır. Kapasitenin en fazla %70-80'ini kullanmak iyi bir hedeftir.
7. Asıl çözüm: bozulacağını varsaymak
Hiçbir ayar kartın bir gün bozulmayacağını garanti etmez. Bu yüzden:
- Düzenli veritabanı yedeği alın ve başka bir cihaza kopyalayın (yazımız).
- Çalışan kartın tam kopyasını (imajını) bir kez alın: başka bir bilgisayarda
ddveya Raspberry Pi Imager ile. Yedek kartı hazır tutarsanız arıza dakikalar içinde çözülür. - Kartın sağlığını izleyin:
dmesg | grep -i mmckomutunda tekrar eden I/O hataları görüyorsanız kartı hemen değiştirin.
Kısaca: önce ölçün, günlükleri ve geçici dosyaları RAM'e alın, veritabanını mümkünse SSD'ye taşıyın, kaliteli güç kaynağı kullanın ve her koşulda yedek bulundurun.