KOD İÇERİĞİ :
Kod: Tümünü seç
import numpy as np
import matplotlib.pyplot as plt
import subprocess
# Farklı SSD türleri ve tahmini TBW (Terabytes Written) ömürleri
types = ["SLC SATA", "MLC SATA", "TLC SATA", "QLC SATA", "SLC NVMe", "MLC NVMe", "TLC NVMe", "QLC NVMe"]
tbw = [100000, 20000, 5000, 1000, 120000, 30000, 8000, 1500] # Tahmini TBW değerleri
# SMART verilerinden toplam yazma miktarını al (Linux için smartctl kullanımı)
def get_smart_data():
try:
result = subprocess.run(["smartctl", "-A", "/dev/sda"], capture_output=True, text=True)
lines = result.stdout.split("\n")
for line in lines:
if "Total_LBAs_Written" in line:
lba_written = int(line.split()[-1]) # Son sütunu al
tb_written = (lba_written * 512) / (1024**4) # Byte -> TB dönüşümü
return round(tb_written, 2)
except Exception as e:
print(f"SMART verisi okunamadı: {e}")
return None
# Kullanıcıdan yıllık yazma miktarını al
while True:
try:
usage = float(input("Yıllık yazılan veri miktarını girin (TB): "))
break
except ValueError:
print("Lütfen geçerli bir sayı girin.")
# SMART verisinden toplam yazılan veriyi al
smart_tb_written = get_smart_data()
if smart_tb_written is not None:
print(f"SMART verisinden okunan toplam yazılmış veri: {smart_tb_written} TB")
# Yıl aralığı belirle
years = np.arange(1, 11) # 1'den 10 yıla kadar
plt.figure(figsize=(10, 6))
for i, ssd_type in enumerate(types):
lifespan = tbw[i] / usage # Kaç yıl dayanabilir?
fail_prob = np.clip((years / lifespan) * 100, 0, 100) # %100'ü aşmasın
plt.plot(years, fail_prob, label=ssd_type)
plt.xlabel("Yıl")
plt.ylabel("Tahmini Bozulma Olasılığı (%)")
plt.title("Farklı SSD Türleri İçin Bozulma Olasılığı")
plt.legend()
plt.xscale("log") # Logaritmik ölçek
plt.grid(True, which="both", linestyle="--", linewidth=0.5)
plt.show()[/i]
- Kütüphanelerin İçe Aktarılması:
- ve
Kod: Tümünü seç
numpy
kütüphaneleri, sayısal işlemler ve grafik çizimi için kullanılır.Kod: Tümünü seç
matplotlib.pyplot
- kütüphanesi, dış komutları çalıştırmak için kullanılır.
Kod: Tümünü seç
subprocess
- SSD Türleri ve TBW Değerleri:
- Farklı SSD türleri ve her birinin tahmini Terabytes Written (TBW) ömürleri bir liste olarak tanımlanır.
- SMART Verilerinin Alınması:
- fonksiyonu,
Kod: Tümünü seç
get_smart_data
komutunu kullanarak SSD'nin toplam yazma miktarını alır.Kod: Tümünü seç
smartctl
- değerini bulur ve bunu Terabyte cinsine dönüştürür.
Kod: Tümünü seç
Total_LBAs_Written
- Kullanıcı Girdisi:
- Kullanıcıdan yıllık yazma miktarını (TB cinsinden) alır ve geçerli bir sayı girilene kadar tekrar eder.
- SMART Verisinden Yazılan Veri:
- Kullanıcının girdiği yıllık yazma miktarı ile birlikte, SMART verisinden okunan toplam yazılan veri miktarını ekrana yazdırır.
- Yıl Aralığı:
- 1'den 10 yıla kadar bir dizi oluşturur.
- Grafik Çizimi:
- Her SSD türü için bozulma olasılığını hesaplar ve yıllara göre grafik çizer.
- X ekseni logaritmik ölçekle gösterilir.
- Grafiğin Gösterilmesi:
- Grafiği ekranda gösterir.
NASIL ÇALIŞTIRILIR?

NOT:
Kullandığınız SSD donanımının hangi hücre türüne ait olduğunu bulmanız için yapmanız gereken adımlar
1.Terminal komut satırına ;
Kod: Tümünü seç
udisksctl info -b /dev/nvme0n1
ÖRNEK KOMUT ÇIKTISI :
Kod: Tümünü seç
~$ udisksctl info -b /dev/nvme0n1
/org/freedesktop/UDisks2/block_devices/nvme0n1:
org.freedesktop.UDisks2.Block:
Configuration:
CryptoBackingDevice: '/'
Device: /dev/nvme0n1
DeviceNumber: 66304
Drive: '/org/freedesktop/UDisks2/drives/SAMSUNG_MZALQ256HBJD_00BL2_S65FNX0T438908'
HintAuto: false
HintIconName:
HintIgnore: false
HintName:
HintPartitionable: true
HintSymbolicIconName:
HintSystem: true
Id: by-id-nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
IdLabel:
IdType:
IdUUID:
IdUsage:
IdVersion:
MDRaid: '/'
MDRaidMember: '/'
PreferredDevice: /dev/nvme0n1
ReadOnly: false
Size: 256060514304
Symlinks: /dev/disk/by-id/nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
/dev/disk/by-id/nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908_1
/dev/disk/by-id/nvme-eui.002538d421b3f01e
/dev/disk/by-path/pci-0000:00:0e.0-pci-10000:e1:00.0-nvme-1
UserspaceMountOptions:
org.freedesktop.UDisks2.PartitionTable:
Partitions: /org/freedesktop/UDisks2/block_devices/nvme0n1p1
/org/freedesktop/UDisks2/block_devices/nvme0n1p5
/org/freedesktop/UDisks2/block_devices/nvme0n1p4
/org/freedesktop/UDisks2/block_devices/nvme0n1p3
/org/freedesktop/UDisks2/block_devices/nvme0n1p2
Type: gpt
~$
Kod: Tümünü seç
Id: by-id-nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
Model :
Kod: Tümünü seç
SAMSUNG_MZALQ256HBJD-00BL2
Kod: Tümünü seç
S65FNX0T438908
Samsung SSD modeli:MZALQ256HBJD-00BL2
Bu model, Samsung PM991 serisine aittir ve QLC (Quad-Level Cell) 3D V-NAND kullanır.
Özellikleri:
- Arayüz: NVMe (PCIe 3.0 x4)
- NAND Türü: QLC 3D V-NAND
- Kapasite: 256GB
- Performans: Ortalama tüketici ve giriş seviyesi cihazlar için optimize edilmiştir
- DRAM: DRAM’siz yapı (Host Memory Buffer - HMB teknolojisini kullanır)
SSD’nin sağlığını ve kullanım ömrünü kontrol etmek isterseniz şu komutu kullanabilirmiş.....
Kod: Tümünü seç
sudo smartctl -a /dev/nvme0
Kod: Tümünü seç
~$ sudo smartctl -a /dev/nvme0
[sudo] linuxmaster için parola:**********************
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-133-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: SAMSUNG MZALQ256HBJD-00BL2
Serial Number: S65FNX0T438908
Firmware Version: 5L2QFXM7
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 256.060.514.304 [256 GB]
Unallocated NVM Capacity: 0
Controller ID: 5
NVMe Version: 1.4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 256.060.514.304 [256 GB]
Namespace 1 Utilization: 117.922.439.168 [117 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 002538 d421b3f01e
Local Time is: Sun Mar 2 17:07:20 2025 +03
Firmware Updates (0x16): 3 Slots, no Reset required
Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test
Optional NVM Commands (0x0057): Comp Wr_Unc DS_Mngmt Sav/Sel_Feat Timestmp
Log Page Attributes (0x0f): S/H_per_NS Cmd_Eff_Lg Ext_Get_Lg Telmtry_Lg
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 81 Celsius
Critical Comp. Temp. Threshold: 87 Celsius
Namespace 1 Features (0x10): NP_Fields
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 5.35W - - 0 0 0 0 0 0
1 + 5.35W - - 1 1 1 1 0 0
2 + 5.35W - - 2 2 2 2 0 500
3 - 0.0500W - - 3 3 3 3 210 1200
4 - 0.0050W - - 4 4 4 4 1000 9000
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 24 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 11%
Data Units Read: 65.256.588 [33,4 TB]
Data Units Written: 40.344.428 [20,6 TB]
Host Read Commands: 1.028.856.782
Host Write Commands: 757.913.641
Controller Busy Time: 1.991
Power Cycles: 957
Power On Hours: 9.409
Unsafe Shutdowns: 164
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 24 Celsius
Error Information (NVMe Log 0x01, 16 of 64 entries)
No Errors Logged
EKRAN GÖRÜNTÜSÜ : (Sistem : GNU/Linux Mint 21.1 x64 LXDE)
