Linux altında 'yazılan toplam bayt' ölçümü


36

Sunucu ortamında SSD sürücüleri kullanma olasılığını keşfetmekle oldukça ilgileniyoruz. Ancak, oluşturmamız gereken bir şey uzun ömürlü olması bekleniyor. Bu makaleye göre, üreticilerin “yazılan toplam bayt” (TBW) cinsinden dayanma gücü bildirdiği bildiriliyor. Örneğin, bu maddeden bir Crucial C400 SSD 72 TB TBW olarak derecelendirilmiştir. Linux ekosistemi altında TBW'yi ölçmemize yardımcı olacak herhangi bir komut dosyası / araç var mı? (ve daha sonra SSD sürücülerini kullanmanın uygulanabilirliği konusunda daha eğitimli bir karar veriniz)

Yanıtlar:


28

Diğer bir olasılık, / proc / diskstats'a bakmaktır . Yeniden başlatmalar arasında kalıcı değildir, ancak her blok cihaz için verilere sahiptir. Muhtemelen sizin için en ilginç olanı, yazılan toplam sektör sayısını içeren alan 10'dur. Sektör boyutu 512 bayt olan scsi diskleri olan bir sistemde çalıştırabilirsiniz.

awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats

Her cihaza kaç megabayt yazıldığını görmek için Çıktı gibi görünecek

sda 728.759
sda1 79.0908
sda2 649.668


4
Sektör boyutu #cat / sys / block / sda / queue / hw_sector_size komutunu çalıştırarak bulunamadı
Antonio

@Antonio teşekkürler! Ne zaman eklendiğinden emin değilim. 3.2 gibi görünüyor ama 2.6.18 değil.
Sciurus

@sciurus hesaplamanızın arkasındaki matematiği açıklar mısınız? Sen sektörün = 512 büyüklüğünde bahsediyoruz ama hesaplamalar 2/1024 ile okuma değeri bölünüyor
gyre

@gyre Alan 10, yazılmış 0,5 kilobayt sektör sayısını içerir. Yazılan kilobayt sayısını elde etmek için bunu 2'ye bölüyorum. Daha sonra 1024'e megabayta dönüştürmek için bölüyorum.
sciurus

@antonio O yapar temel donanım ile birlikte kullanılan kesim boyutu gösterir, ancak AFAICT çekirdek kaynak, kaynak iostat ve deneysel testlerden, / Proc / diskstats olarak "alanları" sayısı , her zaman bile, 512 baytlık belirtir hw_sector_size(farklıdır En azından 2.4 serisinden beri). block/cfq-iosched.cÖzellikle bakınız cfqg_stats_update_dispatch().
Paul,

23

Defterimde de aynı sorunla mücadele ediyordum, ancak günlük olarak yeniden başlattığım için kabul edilen cevap yardımcı olmadı. SMART özniteliği # 241 Total_LBAs_Written olan bir Samsung mSATA SSD'im var. Göre resmi belgeler ,

Toplam boyutu hesaplamak için (Bytes cinsinden), bu özelliğin ham değerini 512B ile çarpın.

Dolayısıyla aşağıdaki komut bana SSD diskime (sdb) yazılan toplam TBM'yi veriyor

sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '

HDD'mde de çalıştığı için hemen hemen her modern sabit diskte çalışması gerektiğini düşünüyorum.


3
Hayır, bu yalnızca belirli SSD sürücü modellerinde bulunur. Bu evrensel değil.
Michael Hampton

3
Denkleminizin gerçekte şu şekilde daha kesin olacağı bir sayı ürettiğini belirtmek isterdim sudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'.
Jordon Bedwell

Intel SSD'mde aynı özellik var, ancak deniyor Host_Writes_32MiB. Ayrıca Öznitelik 249 var NAND_Writes_1GiB. Öyleyse her SSD'de bunun farklı göründüğünün farkında olun (örn.
Benim

Intel SSD Pro 5400'lerimde (SATA) Total_LBAs_WrittenGB cinsinden belirtildi! Düşük 4714akıllı gösterdiği hiçbir anlam ifade edemedi. Ancak Windows’taki Intel SSD Araç Kutusu’na bakmak, GB’de olduğunu gösterdi.
MrCalvin

15

/ Sys / fs / ext4 / $ DEVICE / lifetime_write_kbytes dizinine bakarak bir ext4 dosya sistemine ne kadar veri yazıldığını görebilirsiniz.


Bu bilmediğim harika bir özellik! Bir utanç, sistemlerimizin çoğu ext3 ve VM'ler için bazı ham LVM bölümleri çalıştırıyor :)
badnews

ext3 (ve biraz daha az ölçüde) ext4 flaş yazmak için tasarlanmamıştır. Hata, bir konumun yazılma sayısına bağlı olarak ortaya çıkar - ve geleneksel dosya sistemlerinde, sıcak noktalar çok hızlı gelişir. Üreticiler tarafından verilen rakamlar, yazarların eşit şekilde yayıldığını varsaydıkları için çok yanıltıcıdır. SSD'lerinizin ömrünü uzatmak için özel olarak tasarlanmış dosya sistemleri - JFFS2 gibi - vardır.
symcbean

2
@symcbean - günümüzdeki flaş cihazlarıyla, bu büyük ölçüde sorun değil. Hepsinde, yerleşik kontrol cihazlarında yerleşik olarak bulunan aşınma seviyeli rutinler vardır.
AÇAA

1
@symcbean - İki tür flaş aygıtı vardır. Bellek Teknolojisi Cihazları (veya MTD'ler), flash belleğe doğrudan bir arayüz sunar. Bunlar genellikle gömülü aygıtlarda bulunur ve JFFS2 gibi bir dosya sistemi için tasarlandı. Diğer bir tür flaş cihazı, flaş belleği bir Flash Translation Later (FTL) arkasına gizler, böylece normal bir blok cihaz gibi görünür. SSD'ler, usb bellekler ve bellek kartları gibi tüketici teknolojisi bu şekilde uygulanır. JFFS2 gibi dosya sistemleri bunlar için uygun değildir; bunun yerine, blok aygıtları için tasarlanmış ext4 gibi dosya sistemlerini kullanmanız gerekir.
Sciurus

1
DİKKAT: ext4 lifetime_write_kbytes ve session_write_kbytes, SSD bellek hücresi yazarlarının temsilcisi değildir. Ext4 lifetime_write_kbytes için bir sistem raporu 15TB gördüm, ancak SSD'nin 241 SMART özniteliği ile sadece 1TB bildirdiği halde, SSD'nin SSD'ye rağmen her seferinde ext4'ün dosya sisteminin boşluğunun tamamını bu istatistiklere ekleyebileceğinden şüpheleniyorum. Son silme işleminden bu yana dokunulmasaydı kontrolör, mevcut tüm blokları tekrar tekrar silemezdi. tune2fs -l çıkışı benzer şekilde yanıltıcı görünüyor.
Ɉsәɹo 1:

2

Deneyebilirsin iostat. Size IO ve CPU kullanımı ile ilgili istatistikleri verir. Kılavuza bir bakın man iostat.


Sanırım işe yarayabilirdi ama kümülatif bayt toplamları sağlayabilecek daha yüksek düzeyde bir şeyler olduğunu umuyordum :)
badnews

2

KINGSTON SEDC400S37480G ürünüm için, Ubuntu Server 14.04 altında, TBW'yi izlemek için aşağıdaki betiği kullanıyorum. Her gün bir kere crondan çalıştırıyorum. Komut dosyası bir günlük dosyasına çıkar.

Çalışması için calc'a ihtiyacınız var. Calc kullanarak şunları kurun:

apt-get install apcalc

Komut dosyası içeriği:

echo "*** $(date -R) ***" >> /scripts/tbw/log.txt
tbw=$(cat /sys/fs/ext4/sda1/lifetime_write_kbytes)
TB=1000000000
echo TB written to sda1: >> /scripts/tbw/log.txt | calc $tbw / $TB >> /scripts/tbw/log.txt

Çıkacak:

*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
    3.062138442

Kalk yerine, GNU bc
Elton Carvalho 18
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.