मैं यह देखने के लिए परीक्षण कैसे कर सकता हूं कि क्या सभी मेरी हार्ड ड्राइव को अपने 4k सेक्टरों के साथ जोड़ते हैं?


9

मैं 4 हार्ड ड्राइव के साथ लिनक्स का उपयोग कर रहा हूं जो 4k सेक्टर का उपयोग करता है। मेरे फाइलसिस्टम और कच्चे उपकरणों के बीच कई परतें हैं: डिस्क> लिनक्स रेड 5> डीएम-क्रिप्ट> एलवीएम।

मेरे द्वारा पाया गया प्रत्येक संसाधन ने यह सुनिश्चित करने के लिए कि प्रत्येक परत को कैसे स्थापित किया जाए, यह सुनिश्चित करने के लिए कि उस परत के शीर्ष पर 4k क्षेत्र की सीमा में लिखा जाएगा। हालाँकि, मुझे कुछ भी नहीं मिला है जो बताता है कि कैसे सत्यापित करें कि हार्ड ड्राइव पर किए गए लेखन वास्तव में 4k सीमाओं पर हो रहे हैं।

मुझे यह निर्धारित करने के लिए तर्क का उपयोग करने के लिए मेरे सेट की फिर से जांच करने में दिलचस्पी नहीं है कि क्या यह सही ढंग से संरेखित है। मैं यह जांचना चाहता हूं कि डिस्क पर लिखे जाने पर वास्तव में क्या हो रहा है।

मैं अपनी हार्ड ड्राइव के लिए लिखे जाने वाले पते के पते और आकार को कैसे लॉग या देख सकता हूं, इसलिए मैं सत्यापित कर सकता हूं कि वे सही तरीके से संरेखित हैं?

जवाबों:


2

कुछ समय पहले खुद से यही सवाल पूछा और बस निम्नलिखित किया:

खोल के साथ एक फ़ाइल (बल्कि "WackaWacka" की तरह कुछ) असामान्य स्ट्रिंग के एक जोड़े के साथ लिखा था, तो बस एक हेक्स डंप (इस्तेमाल किया गया था od ) डिस्क की वास्तविक सामग्री के साथ खोज की और स्ट्रिंग की पहली घटना दर्ज की गई थी ठीक 4k ब्लॉक की शुरुआत पर।

संकेत: एक संपादक का उपयोग न करें - यह उन अस्थायी फ़ाइलों को बना सकता है जिनके बारे में आपको पता नहीं है जिनमें तार भी हो सकते हैं। इसे इस तरह से करें:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile

तो .sh_history में खोज स्ट्रिंग हो सकती है, लेकिन पंक्ति में 5 बार नहीं ;-)

और फिर, बस खोजें:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'

खैर, यह डेटा के गिगाबाइट्स के माध्यम से सेर्चिंग से बचने के लिए एक खाली डिस्क पर सबसे अच्छा किया जाता है ;-)


1
चूंकि dm-crypt मेरे स्टैक में एक परत है, इसलिए यह समाधान पर्याप्त नहीं है, क्योंकि ये अक्षर डिस्क पर नहीं लिखे जाएंगे।
ब्रायन पेलिन

यह बुरी बात है। केवल एक अन्य समाधान जिसके बारे में मैं सोच सकता था कि एक फाइल में एक 4k ब्लॉक को आसानी से बदल रहा है और जांचें कि क्या डिस्क पर केवल एक भौतिक ब्लॉक की सामग्री बदल गई है (या यदि दो लगातार ब्लॉक प्रभावित होते हैं) - और यह केवल तभी काम करेगा जब डेटा संपीड़ित न हो एन्क्रिप्शन परत द्वारा। फिर भी किसी को पता होना चाहिए कि किस डिस्क पर फ़ाइल संग्रहीत है और बड़े डिस्क पर किसी भी परिवर्तन की खोज करना मुश्किल हो सकता है।
ktf

2

4k ब्लॉक लिखें और देखें कि डेटा कितना पढ़ा / लिखा गया है iostat('Blk_read' 'Blk_wrtn "कॉलम) के साथ। यदि डेटा संरेखित नहीं किया गया है, तो एक राइट पहले ट्रिगर को पढ़ेगा और 4k से अधिक राइट को ट्रिगर करेगा।

आपको किसी भी मेटाडेटा अपडेट को मापने के लिए सावधानी बरतने की आवश्यकता होगी, हालांकि ... या बस उन्हें 4k से अधिक लिखने से बाहर डुबो दें .... इसलिए सुनिश्चित करें कि कुछ और नहीं डिस्क स्कैन कर रहा है या खुली फाइलों को पकड़े हुए है (मुझे लगता है कि lsofहोगा) पर्याप्त?), फिर एक नई फ़ाइल खोलें, प्रतीक्षा करें, चलाएँ iostat, फ़ाइल में 4k लिखें, लेखन को सिंक करें (या बस थोड़ी देर प्रतीक्षा करें?) फिर से जांचें iostat

यह मेरे लिए एक उचित उत्पादन देने लगता है:

iostat  -d /dev/hdb3
dd if=/dev/urandom of=/mount/path/ofhdb3/tmptest bs=4k count=10000 conv=fdatasync
iostat  -d /dev/hdb3

ध्यान दें iostatकि मैन पेज 512 बाइट ब्लॉक में रिपोर्ट करने का दावा करता है, और मुझे लगता है कि सिर्फ 80000 से अधिक अतिरिक्त ब्लॉक लिखे गए थे, और कोई ब्लॉक नहीं पढ़ा। यदि आपका संरेखण बंद है, तो आपको समान संख्या में रीड्स दिखाई देंगे (क्योंकि गलत एलाइनमेंट 4k लिखने के लिए, दो ब्लॉकों को प्रभावित करने, उन्हें म्यूट करने और उन्हें वापस लिखने की आवश्यकता होती है)। वास्तव में, एकमात्र कारण संरेखण महत्वपूर्ण है ऐसी रीड्स से बचने के लिए (ताकि वास्तव में आप क्या देखना चाहते हैं: क्या एक लेखन कार्यभार ट्रिगर पढ़ता है?)


क्या आप जानते हैं कि अगर iostat रीड की संख्या पर रिपोर्ट कर रहा है / लिखता है कि OS ब्लॉक डिवाइस को बनाता है, या यह संख्या ड्राइव रिपोर्टिंग पर आधारित है कि उसने कितने ब्लॉक पढ़े और लिखे हैं?
ब्रायन पेलिन

मुझे इसके OS ब्लॉक डिवाइस के अमूर्त होने पर शक है, सीधे ड्राइव से नहीं, लेकिन मुझे यकीन नहीं है। मुझे भी यकीन नहीं है कि यह "ऊपर" या "नीचे" होगा dm-crypt परत, या तो।
पीटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.