Aşağıda, NVMe ve SATA disklerin TBW (Terabytes Written) değerlerini hesaplamak için yazılmış bir bash scriptini paylaşıyorum. Bu script, kullanıcıdan disk türünü seçmesini istiyor ve ardından ilgili disk için SMART verilerini okuyarak TBW değerini hesaplıyor.
Betiğin Özellikleri:
Disk Türü Seçimi: Kullanıcı, NVMe veya SATA disklerden birini seçebilir ya da her ikisini ayrı ayrı hesaplayabilir.
SMART Verisi Okuma: NVMe diskler için smartctl, SATA diskler için ise /proc/diskstats kullanılarak veriler okunuyor.
Hesaplama: Okunan veriler kullanılarak TBW değeri terabayt (TB) ve gigabayt (GB) cinsinden hesaplanıyor.
Gereksinimler:
Scriptin sağlıklı çalışabilmesi için sistemde aşağıdaki uygulamaların kurulu olması gerekiyor:
- smartmontools: NVMe disklerin SMART verilerini okumak için.
- bc: Hesaplamalar için gerekli bir hesap makinesi.
- /proc/diskstats : GNU/Linux işletim sisteminin bir parçası olarak gelir ve kullanıcı tarafından ayrı bir kurulum gerektirmez. Bu dosya, Linux çekirdeği tarafından otomatik olarak oluşturulur ve sistemdeki disklerin istatistiklerini gerçek zamanlı olarak sağlar.
- Scripti çalıştırın. (chmod +x tbw_hesapla.sh) >>> ( sudo ./tbw_hesapla.sh)
- Disk türünü seçin (1: NVMe, 2: SATA, 3: İkisini hesapla).
- İlgili disk adını girin.
- Hesaplanan TBW değerini görüntüleyin.
Kod: Tümünü seç
#!/bin/bash
# Terminali temizle
clear
# Mevcut tarih ve saat
tarih_saat=$(date "+%d/%m/%Y - %H:%M:%S")
# Kullanıcıdan seçim yapmasını iste
echo "-------------------------------"
echo "Disk türünü seçin:"
echo "-------------------------------"
echo "1 - NVMe (örn: nvme0n1)"
echo "2 - SATA (örn: sda)"
echo "3 - İkisini ayrı ayrı hesapla, sonucu toplu göster"
echo "-------------------------------"
read -p "Seçiminizi yapın (1, 2 veya 3): " disk_secim
echo "-------------------------------"
echo "ℹ️ SONUÇLAR ($tarih_saat)"
echo "-------------------------------"
# NVMe TBW hesaplama fonksiyonu
hesapla_nvme() {
local disk=$1
echo "ℹ️ SMART verileri okunuyor..."
echo "-------------------------------"
local data_units_written=$(sudo smartctl -x /dev/$disk | grep "Data Units Written" | awk '{print $4}' | tr -d '.')
if [[ -z "$data_units_written" ]]; then
echo "❌ Hata: SMART verileri okunamadı!"
return
fi
local tbw=$(echo "scale=2; ($data_units_written * 512 * 1000) / (1024^4)" | bc)
local toplam_gb=$(echo "scale=2; ($data_units_written * 512 * 1000) / (1024^3)" | bc)
echo "✅ NVMe SSD için gerçek TBW: $tbw TB ($toplam_gb GB)"
echo "-------------------------------"
}
# SATA TBW hesaplama fonksiyonu
hesapla_sata() {
local disk=$1
echo "ℹ️ SMART verileri okunuyor..."
echo "-------------------------------"
local sector_size=$(sudo blockdev --getbsz /dev/$disk)
if [[ -z "$sector_size" ]]; then
echo "❌ Hata: Sektör boyutu alınamadı! Varsayılan olarak 512 bayt kullanılacak."
sector_size=512
fi
local total_lbas_written=$(sudo cat /proc/diskstats | grep "$disk " | awk '{print $10}')
if [[ -z "$total_lbas_written" ]]; then
echo "❌ Hata: SMART verileri okunamadı!"
return
fi
local tbw=$(echo "scale=2; ($total_lbas_written * $sector_size) / (1024^4)" | bc)
local toplam_gb=$(echo "scale=2; ($total_lbas_written * $sector_size) / (1024^3)" | bc)
echo "✅ SATA HDD/SSD için gerçek TBW: $tbw TB ($toplam_gb GB)"
echo "-------------------------------"
}
# Kullanıcının seçimine göre işlemi gerçekleştir
case "$disk_secim" in
1)
read -p "NVMe disk adını girin (örn: nvme0n1): " nvme_disk
hesapla_nvme "$nvme_disk"
;;
2)
read -p "SATA disk adını girin (örn: sda): " sata_disk
hesapla_sata "$sata_disk"
;;
3)
read -p "NVMe disk adını girin (örn: nvme0n1): " nvme_disk
read -p "SATA disk adını girin (örn: sda): " sata_disk
hesapla_nvme "$nvme_disk"
hesapla_sata "$sata_disk"
;;
*)
echo "❌ Hata: Geçersiz seçim!"
exit 1
;;
esac
--------------------------------------------------------------------
ÖZEL KULLANICI NOTLARI :
Terminal'den SATA Disk ve NWme Diskleri Görüntüleme komutları
SATA DİSK İÇİN (mekanik disk) :
Kod: Tümünü seç
sudo smartctl -A /dev/sdaKod: Tümünü seç
sudo smartctl -x /dev/nvme0n1Toplam Yazma TB Değerini Bulmak İçin :
Kod: Tümünü seç
sudo smartctl -x /dev/nvme0n1 | grep "Data Units Written"Kod: Tümünü seç
sudo smartctl -x /dev/nvme0n1 | grep "Power On Hours"Kod: Tümünü seç
sudo smartctl -x /dev/nvme0n1 | grep "Power On Hours" | awk '{print $4}'Yaptığım hesaplamalar da sezgisel olarak her birim TB değerine = 0,58 ( yüzde sıfır tam onda elli sekiz'lik sağlık kaybı denk geliyor) değeri gelmekte...
ÖRNEK HESAPLAMA :
SSD İçin Tahmini Sağlık Değerini Hesaplama
18,78 x 0,58 = 10,89
100 - 10,89 = %89,11
Gerçekten bendeki SSD diskin Windows OS tarafında portable çalışan CristalDiskİnfo yazılımının gösterdiği değer'de %89....
Ekran görüntüsü (Sistem : Windows 11 Yapı 22H2 x64 Home TR)

Son durum GNOME Diskler İle Performans Ölçümü :
100 örnek (bunun Windows dengi : 100 MB Veri Parçası) üzerinden



