लिनक्स के तहत 'कुल बाइट्स लिखे' को मापना


36

हम सर्वर वातावरण में SSD ड्राइव का उपयोग करने की संभावना तलाशने में काफी रुचि रखते हैं। हालांकि, एक चीज जो हमें स्थापित करने की आवश्यकता है वह है ड्राइव लंबी उम्र। इस लेख के अनुसार निर्माता 'कुल बाइट्स लिखे' (TBW) के संदर्भ में ड्राइव धीरज की रिपोर्ट कर रहे हैं। उदाहरण के लिए उस लेख से एक महत्वपूर्ण C400 SSD को 72TB TBW पर रेट किया गया है। क्या टीबीडब्ल्यू को मापने में हमारी मदद करने के लिए लिनक्स पारिस्थितिकी तंत्र के तहत कोई स्क्रिप्ट / उपकरण मौजूद हैं? (और फिर SSD ड्राइव का उपयोग करने की व्यवहार्यता पर अधिक शिक्षित निर्णय लें)

जवाबों:


28

एक और संभावना है कि / proc / diskstats को देखना है । यह रिबूट के पार नहीं है, लेकिन इसमें हर ब्लॉक डिवाइस का डेटा है। संभवतः आपके लिए सबसे दिलचस्प क्षेत्र 10 है, जिसमें कुल सेक्टरों की संख्या लिखी गई है। 512 बाइट्स के सेक्टर आकार के साथ एक सिस्टम डिस्क के साथ, आप चला सकते हैं

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

यह देखने के लिए कि प्रत्येक डिवाइस पर कितने मेगाबाइट लिखे गए थे। आउटपुट जैसा दिखेगा

sda 728.759
sda1 79.0908
sda2 649.668


4
#Cat / sys / block / sda / que / hw_sector_size
एंटोनियो

@ एंटोनियो धन्यवाद! मुझे यकीन नहीं है कि जब जोड़ा गया था। ऐसा लगता है कि यह 3.2 में है, लेकिन 2.6.18 में नहीं है।
19ur में Sciurus

@sciurus क्या आप अपनी गणना के पीछे का गणित बता सकते हैं? आप सेक्टर के आकार = 512 के बारे में बात कर रहे हैं, लेकिन आपकी गणना 2/1024 के साथ रीड वैल्यू को विभाजित कर रही है
gyre

@gyre Field 10 में 0.5 किलोबाइट सेक्टरों की संख्या लिखी गई है। मैं विभाजित करता हूं कि 2 से किलोबाइट की संख्या लिखी जाए। मैं तब मेगाबाइट में परिवर्तित करने के लिए 1024 तक विभाजित करता हूं।
रात

@antonio यही करता है क्षेत्र आकार अंतर्निहित हार्डवेयर के साथ इस्तेमाल किया जा रहा दिखाते हैं, लेकिन AFAICT गिरी स्रोत, स्रोत iostat, और अनुभवजन्य परीक्षण से / proc / diskstats में "क्षेत्रों" संख्या हमेशा 512 बाइट्स को संदर्भित करता है, तब भी जब hw_sector_sizeअलग है ( कम से कम 2.4 श्रृंखला के बाद से)। block/cfq-iosched.cविशेष रूप से देखें cfqg_stats_update_dispatch()
द पाऊल

23

मैं अपनी नोटबुक पर एक ही समस्या से जूझ रहा था, लेकिन जैसा कि मैंने इसे दैनिक आधार पर बहुत रीबूट किया, स्वीकृत उत्तर सहायक नहीं था। मेरे पास एक सैमसंग mSATA SSD है, जिसमें SMART विशेषता # 241 Total_LBAs_Written है। आधिकारिक दस्तावेज के अनुसार ,

कुल आकार (बाइट्स में) की गणना करने के लिए, इस विशेषता के कच्चे मूल्य को 512B से गुणा करें।

तो निम्न कमांड मुझे मेरी SSD डिस्क (sdb) पर लिखी कुल टीबी देता है

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

जैसा कि यह मेरे एचडीडी पर भी काम करता है, मेरा मानना ​​है कि इसे हर आधुनिक हार्ड डिस्क पर बहुत अधिक काम करना चाहिए।


3
नहीं, यह केवल SSD ड्राइव के कुछ मॉडल पर मौजूद है। यह सार्वभौमिक नहीं है।
माइकल हैम्पटन

3
मैं बाहर बात करने के लिए है कि अपने समीकरण वास्तव में एक संख्या है कि बंद के रूप में यह ज्यादा सही होगा पैदा करता है चाहता था: sudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'
जॉर्डन बेडवेल

मेरे इंटेल SSD में एक ही विशेषता है लेकिन इसे कहा जाता है Host_Writes_32MiB। इसके अलावा एट्रीब्यूट 249 है NAND_Writes_1GiB। तो ध्यान रखें कि प्रत्येक SSD पर यह अलग-अलग लगता है (जैसे कि एक mSATA इंटेल SSD की मेरे पास वे विशेषताएँ नहीं हैं)
reox

मेरे इंटेल SSD प्रो 5400s (SATA) में GBs Total_LBAs_Writtenमें निर्दिष्ट है! कम 4714स्मार्ट का कोई मतलब नहीं दिखा सकता था। लेकिन विंडोज में इंटेल एसएसडी टूलबॉक्स में देखने से पता चला कि यह जीबी में था।
MrCalvin

15

आप देख सकते हैं कि कितने डेटा को ext4 फाइल सिस्टम में / sys / fs / ext4 / $ DEVICE / जीवनकाल_लेख_कोबाइट में देख कर लिखा गया है।


यह एक अच्छी सुविधा है जिसके बारे में मुझे नहीं पता था! शर्म की बात है कि हमारे सिस्टम में से अधिकांश ext3 चल रहे हैं और VMs के लिए कुछ कच्चे LVM विभाजन भी हैं :)
badnews

ext3 (और कुछ हद तक) ext4 फ्लैश लिखने के लिए नहीं बनाया गया है। किसी स्थान के लिखे जाने की संख्या के आधार पर विफलता होगी - और पारंपरिक फाइल सिस्टम के साथ, हॉटस्पॉट बहुत तेजी से विकसित होते हैं। निर्माताओं द्वारा उद्धृत आंकड़े बहुत भ्रामक हैं क्योंकि वे लिखते हैं कि यहां तक ​​कि वे भी लिखते हैं। फ़ाइल सिस्टम हैं - जैसे JFFS2 - विशेष रूप से आपके SSDs के जीवन का विस्तार करने के लिए डिज़ाइन किया गया है।
सिम्बियन

2
@symcbean - वर्तमान फ़्लैश उपकरणों के साथ, यह काफी हद तक एक गैर-मुद्दा है। वे सभी बोर्ड-कंट्रोलर में अपने स्तर पर पहनने वाले रूटीन बनाए गए हैं।
EEAA

1
@symcbean - दो तरह के फ्लैश डिवाइस हैं। मेमोरी टेक्नोलॉजी डिवाइसेस (या एमटीडी) फ्लैश मेमोरी के लिए एक सीधा इंटरफ़ेस प्रस्तुत करते हैं। ये आमतौर पर एम्बेडेड उपकरणों में पाए जाते हैं और JFFS2 जैसे फाइल सिस्टम के लिए डिज़ाइन किए गए हैं। दूसरी तरह का फ्लैश डिवाइस फ्लैश ट्रांसलेशन बाद (एफटीएल) के पीछे फ्लैश मेमोरी को छुपाता है ताकि यह एक नियमित ब्लॉक डिवाइस की तरह दिखे। इसी तरह उपभोक्ता तकनीक जैसे एसएसडी, यूएसबी स्टिक और मेमोरी कार्ड को लागू किया जाता है। JFFS2 जैसे फाइलसिस्टम इनके लिए उपयुक्त नहीं हैं; इसके बजाय, आपको ext4 जैसे फाइल सिस्टम का उपयोग करना होगा जो ब्लॉक डिवाइस के लिए डिज़ाइन किए गए हैं।
Sciurus

1
BEWARE: ext4 जीवनकाल_लेख__बाइट्स और सत्र_लेख__बाइट्स एसएसडी मेमोरी सेल के प्रतिनिधि नहीं हैं। मैंने ext4 life_write_kbytes के लिए एक सिस्टम रिपोर्ट 15TB देखी है, जबकि SSD ने केवल SMT विशेषता 241 के माध्यम से केवल 1TB की सूचना दी है। मुझे संदेह है कि ext4 उन सभी के लिए फाइलसिस्टम के रिक्त स्थान के पूरे आकार को जोड़ सकता है जो हर बार फ़र्ज़ीम रन करता है, भले ही एसएसडी नियंत्रक स्पष्ट रूप से बार-बार उन सभी उपलब्ध ब्लॉकों को नहीं मिटाएगा यदि उन्हें पिछले मिटाए जाने के बाद से छुआ नहीं गया था। tune2fs -l आउटपुट समान रूप से भ्रामक प्रतीत होता है।
s19oɈ

2

आप कोशिश कर सकते हैं iostat। यह आपको IO और CPU उपयोग से संबंधित आँकड़े देता है। मैनुअल पर एक नजर है man iostat


मुझे लगता है कि काम कर सकता है, लेकिन मैं उम्मीद कर रहा था कि कुछ उच्च-स्तर उपलब्ध था जो संचयी बाइट के योग प्रदान कर सकते हैं :)
badnews

2

मेरे KINGSTON SEDC400S37480G के लिए, Ubuntu सर्वर 14.04 के तहत, मैं TBW की निगरानी के लिए निम्न स्क्रिप्ट का उपयोग करता हूं। मैं इसे हर दिन एक बार क्रोन से चलाता हूं। स्क्रिप्ट एक लॉग फ़ाइल के लिए आउटपुट।

इसे काम करने के लिए आपको calc की आवश्यकता है। उपयोग करके कैल्क स्थापित करें:

apt-get install apcalc

स्क्रिप्ट सामग्री:

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

उत्पादन होगा:

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

कैल्क के बजाय, कोई
एल्टन कारवाल्हो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.