/ dev / sda1 नहीं उप / देव / sda का उपसमूह?


18

मेरी विभाजन तालिका की पहली प्रविष्टि है:

$ sudo hexdump -Cv -n 16 -s 446 /dev/sda
000001be  80 01 01 00 83 fe ff ff  3f 00 00 00 81 1c 20 03  |........?..... .|

( -Cv , उत्पादन प्रारूप का वर्णन -n 16 16 बाइट्स के लिए पूछता है और -s 446 स्किप के पहले 446 बाइट्स)
आप देख सकते हैं कि मेरा पहला विभाजन एक प्राथमिक लिनक्स विभाजन है और यह विभाजन कि सेक्टर 63 (उदाहरण के लिए देखें [पर शुरू यहाँ] [1] विभाजन तालिका की संरचना के लिए)।
मैं तब उम्मीद करूंगा कि पहले 63 क्षेत्रों और अन्य विभाजनों को छोड़कर, / dev / sda1 और / dev / sda बिल्कुल समान हैं।

लेकिन यह मामला नहीं है, सेक्टर # 2 / देव / sda1 सेक्टर # 65 / देव / sda के समान नहीं है (लेकिन वे बहुत समान हैं, केवल 16 बाइट्स अलग हैं):

$ sudo hexdump -Cv -n 512 -s 65b /dev/sda
00008200  00 20 19 00 90 03 64 00  2d 00 05 00 5a 2f 56 00  |. ....d.-...Z/V.|
00008210  b6 b1 16 00 00 00 00 00  02 00 00 00 02 00 00 00  |................|
00008220  00 80 00 00 00 80 00 00  00 20 00 00 d8 38 ee 4c  |......... ...8.L|
00008230  9a 01 ef 4c 05 00 24 00  53 ef 01 00 01 00 00 00  |...L..$.S.......|
00008240  59 23 e9 4c 00 4e ed 00  00 00 00 00 01 00 00 00  |Y#.L.N..........|
00008250  00 00 00 00 0b 00 00 00  00 01 00 00 3c 00 00 00  |............<...|
00008260  42 02 00 00 7b 00 00 00  85 23 eb f2 71 67 44 f5  |B...{....#..qgD.|
00008270  bb 8f 6f f2 3a 59 ff 4d  55 62 75 6e 74 75 00 00  |..o.:Y.MUbuntu..|
00008280  00 00 00 00 00 00 00 00  2f 75 62 75 6e 74 75 00  |......../ubuntu.|
00008290  d8 3c df 5d 00 88 ff ff  52 d0 ef 1d 00 00 00 00  |.<.]....R.......|
000082a0  c0 40 51 b6 00 88 ff ff  00 4e c8 bb 00 88 ff ff  |.@Q......N......|
000082b0  c0 f6 86 b8 00 88 ff ff  30 2e 0d a0 ff ff ff ff  |........0.......|
000082c0  38 3d df 5d 00 88 ff ff  00 00 00 00 00 00 fe 03  |8=.]............|
000082d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000082e0  08 00 00 00 00 00 00 00  00 00 00 00 8a 53 d3 0e  |.............S..|
000082f0  7c 7a 43 e4 8b fb ca e0  72 b7 fa c8 01 01 00 00  ||zC.....r.......|
00008300  00 00 00 00 00 00 00 00  16 4c 47 4b 0a f3 03 00  |.........LGK....|
00008310  04 00 00 00 00 00 00 00  00 00 00 00 fe 7f 00 00  |................|
00008320  24 b7 0c 00 fe 7f 00 00  01 00 00 00 22 37 0d 00  |$..........."7..|
00008330  ff 7f 00 00 01 00 00 00  23 37 0d 00 00 00 00 00  |........#7......|
00008340  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 08  |................|
00008350  00 00 00 00 00 00 00 00  00 00 00 00 1c 00 1c 00  |................|
00008360  01 00 00 00 e9 7f 00 00  00 00 00 00 00 00 00 00  |................|
00008370  00 00 00 00 04 00 00 00  9f 7d bb 00 00 00 00 00  |.........}......|
00008380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00008390  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000083f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

बनाम

$ sudo hexdump -Cv -n 512 -s 2b /dev/sda1
00000400  00 20 19 00 90 03 64 00  2d 00 05 00 5a 2f 56 00  |. ....d.-...Z/V.|
00000410  b6 b1 16 00 00 00 00 00  02 00 00 00 02 00 00 00  |................|
00000420  00 80 00 00 00 80 00 00  00 20 00 00 df 76 ef 4c  |......... ...v.L|
00000430  df 76 ef 4c 06 00 24 00  53 ef 01 00 01 00 00 00  |.v.L..$.S.......|
00000440  59 23 e9 4c 00 4e ed 00  00 00 00 00 01 00 00 00  |Y#.L.N..........|
00000450  0

अच्छा सवाल ... जवाब पर कोई विचार नहीं हालांकि +1
रोबॉट ह्यूमंस

उचित अंतर हो सकता है?
हैलो'१

जवाबों:


6

अच्छी खोज, जैसा कि मैं अपने सिस्टम पर भी इस प्रभाव को पुन: पेश करने में सक्षम था। मेरी साइट पर यह / dev / hda पर होता है, इसलिए यह कोई SCSI समस्या नहीं है।

# uname -a
Linux X.X.X 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686 GNU/Linux

मुझे लगता whitequarkहै कि यह सही है कि यह एक कैश मुद्दा है। यहाँ मेरी व्याख्या है कि आपकी साइट पर क्या हुआ ( ध्यान दें कि मुझे यकीन नहीं है कि मेरी व्याख्या सही है, हालांकि ):

/ dev / sda1 उपयोग में है। इसलिए "सिंक" सुपरब्लॉक को हर बार अपडेट करता है जब पत्रिका फ्लश होती है (या समान)। तो डिस्क / देव / sda1 को बदल दिया जाता है।

हालाँकि कर्नेल / dev / sda और / dev / sda1 के लिए संयुक्त कैश का उपयोग नहीं करता है, इसके बजाय दोनों "फाइलें" अपने आप में कैश हैं। / Dev / sda1 (सिंक) को अपडेट करने से / dev / sda का कैश अमान्य नहीं होता है। इसलिए / dev / sda से पढ़ना पुराने कैश मान को दर्शाता है (इसलिए कैश हार्डड्राइव के साथ सिंक से बाहर है) जबकि / dev / sda1 सही (नए) मान दिखाता है।

यहाँ मेरी तरफ देखा गया स्थिति है। मैं यहाँ पहले / देव / hda पर कुछ डंप कर रहा था, इसलिए यह पहले से ही कुछ पुराने डेटा को कैश कर चुका था:

# od -tx1z -N 10k /dev/hda2 > NOW1
# dd ibs=512 skip=1975995 if=/dev/hda | od -tx1z -N 10k > MAIN1
# diff NOW1 MAIN1
3,4c3,4
< 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 be 1a 39 00  >..1.W.a..}....9.<
< 0002020 4e ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >N.!.............<
---
> 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 4e 1b 39 00  >..1.W.a..}..N.9.<
> 0002020 52 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >R.!.............<

# od -tx1z -N 10k /dev/hda2 > NOW1
# diff NOW1 MAIN1
3,4c3,4
< 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 be 1a 39 00  >..1.W.a..}....9.<
< 0002020 4e ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >N.!.............<
---
> 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 4e 1b 39 00  >..1.W.a..}..N.9.<
> 0002020 52 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >R.!.............<

# od -tx1z -N 10k /dev/hda2 > NOW2
# dd ibs=512 skip=1975995 if=/dev/hda | od -tx1z -N 10k > MAIN2
# diff MAIN1 MAIN2
# diff NOW2 MAIN2
3,4c3,4
< 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 f0 19 39 00  >..1.W.a..}....9.<
< 0002020 41 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >A.!.............<
---
> 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 4e 1b 39 00  >..1.W.a..}..N.9.<
> 0002020 52 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >R.!.............<
106c106
< 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 01 00  >................<
---
> 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 00 00  >................<
334c334
< 0021540 00 80 4d 00 01 80 4d 00 02 80 4d 00 02 00 63 3e  >..M...M...M...c><
---
> 0021540 00 80 4d 00 01 80 4d 00 02 80 4d 00 02 00 64 3e  >..M...M...M...d><

जबकि / dev / hda कोई अपडेट नहीं दिखाता है, / dev / hda2 कुछ बदलाव दिखाता है। लेकिन जब मैं कैश फ्लश करता हूं और फिर से कोशिश करता हूं, तो सब कुछ एक जैसा होता है:

# hdparm -f /dev/hda

/dev/hda:

# dd ibs=512 skip=1975995 if=/dev/hda | od -tx1z -N 10k > MAIN2
# diff MAIN1 MAIN2
3,4c3,4
< 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 4e 1b 39 00  >..1.W.a..}..N.9.<
< 0002020 52 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >R.!.............<
---
> 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 dc 1a 39 00  >..1.W.a..}....9.<
> 0002020 96 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >..!.............<
36,37c36,37
< 0010300 00 00 03 00 01 00 03 00 02 00 03 00 00 00 bb 3b  >...............;<
< 0010320 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
---
> 0010300 00 00 03 00 01 00 03 00 02 00 03 00 00 00 bc 3b  >...............;<
> 0010320 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
48c48
< 0010600 00 00 06 00 01 00 06 00 02 00 06 00 03 00 18 3f  >...............?<
---
> 0010600 00 00 06 00 01 00 06 00 02 00 06 00 04 00 18 3f  >...............?<
106c106
< 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 00 00  >................<
---
> 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 01 00  >................<

# od -tx1z -N 10k /dev/hda2 > NOW2
# diff NOW2 MAIN2
# diff MAIN1 MAIN2
3,4c3,4
< 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 4e 1b 39 00  >..1.W.a..}..N.9.<
< 0002020 52 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >R.!.............<
---
> 0002000 00 00 31 01 57 c4 61 02 04 7d 1e 00 dc 1a 39 00  >..1.W.a..}....9.<
> 0002020 96 ea 21 01 00 00 00 00 02 00 00 00 02 00 00 00  >..!.............<
36,37c36,37
< 0010300 00 00 03 00 01 00 03 00 02 00 03 00 00 00 bb 3b  >...............;<
< 0010320 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
---
> 0010300 00 00 03 00 01 00 03 00 02 00 03 00 00 00 bc 3b  >...............;<
> 0010320 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
48c48
< 0010600 00 00 06 00 01 00 06 00 02 00 06 00 03 00 18 3f  >...............?<
---
> 0010600 00 00 06 00 01 00 06 00 02 00 06 00 04 00 18 3f  >...............?<
106c106
< 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 00 00  >................<
---
> 0012440 00 80 14 00 01 80 14 00 02 80 14 00 00 00 01 00  >................<

पुन: पेश करने के तरीके पर संक्षिप्त टिप्पणी:

  • सुनिश्चित करें कि आपका सिस्टम निष्क्रिय है और कैशिंग के लिए भरपूर रैम है।
  • fdisk -u -lजहां विभाजन शुरू होता है, उसे खोजने के लिए दौड़ें । मेरी तरफ से यह 1975995 है
  • एक माउंटेड पार्टीशन और पूरा ड्राइव चुनें।
  • फिर दोनों डंप (Now1, MAIN1) करें और उनकी तुलना करें। वे बराबर तुलना करेंगे।
  • विभाजन पर थोड़ा बदलें, सिंक करें।
  • इसे और समय दें।
  • थोड़ा बदलें, फिर से सिंक करें।
  • अब डंप 2 करें, यह Now1 से अलग होगा
  • एक डंप MAIN2 करें, यह MAIN1 से अलग नहीं होना चाहिए !
  • hdparmअपने ड्राइव के लिए लाइन निष्पादित करें
  • MAIN2 को फिर से डंप करें, अब यह MAIN1 से अलग होगा।
  • यदि आप पर्याप्त जल्दी हैं, तो Now2 और MAIN2 की तुलना बराबर होगी।

0

इसी तरह के परीक्षण करने के बाद मुझे कोई भिन्नता नहीं मिली। हो सकता है कि प्रत्येक डंप के बीच विशेष क्षेत्र लिखा गया हो।

निम्न आदेश की तुलना ~ देव / sda और / dev / sda1 से निकाले गए समान क्षेत्र के पहले ~ 48MB से होती है:

$ diff <(sudo hexdump -Cv -n $((512*100000)) -s 0x7e00 /dev/sda | awk '{$1=""}1' ) <(sudo hexdump -Cv -n $((512*100000)) /dev/sda1 | awk '{$1=""}1' )

जहां 0x7e00 पहले विभाजन की भरपाई है।


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