mdadm raid1 और 4k ड्राइव पर क्या chunksize (या blockize) है?


13

मैं एक mdadm raid1 सेटअप में दो 3 टीबी ड्राइव का उपयोग करना चाहता हूं (डेबियन सीक्वेज़ का उपयोग करके)।

ड्राइव पारंपरिक 512 बाइट वाले के बजाय 4k हार्डवेयर क्षेत्रों का उपयोग करते हैं।

मैं थोड़ा उलझन में हूँ क्योंकि एक ओर कर्नेल रिपोर्ट:

$ cat /sys/block/sdb/queue/hw_sector_size
512

लेकिन दूसरी ओर fdiskरिपोर्ट:

# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

इस प्रकार, ऐसा लगता है कि कर्नेल को कुछ विचार है कि ड्राइव 4k सेक्टर का उपयोग करता है।

mdadmआदमी पेज हिस्सा आकार और raid1 के बारे में थोड़ा गुप्त है:

   -c, --chunk=
          Specify chunk size of kibibytes.  The default when  creating  an
          array  is 512KB.  To ensure compatibility with earlier versions,
          the default when Building and array with no persistent  metadata
          is  64KB.   This  is  only  meaningful  for RAID0, RAID4, RAID5,
          RAID6, and RAID10.

यह छापे 1 के लिए सार्थक क्यों नहीं है?

देखते हुए /proc/mdstat, raid1 डिवाइस md8 में 2930265424 ब्लॉक हैं, यानी

3000591794176/2930265424/2 = 512

क्या mdadmफिर 512 बाइट्स का एक ब्लॉकसेक उपयोग करता है ? (/ 2 क्योंकि यह एक दो तरफा दर्पण है)

और chunk-size एक अलग अवधारणा है जिसे blockize किया जाता है?

किसी उपकरण को mdadm समझाने की कोशिश करना :

# mdadm -E /dev/sdb -v -v
Avail Dev Size : 5860531120 (2794.52 GiB 3000.59 GB)
Array Size : 5860530848 (2794.52 GiB 3000.59 GB)

कहाँ पे

3000591794176/5860530848 = 512

mkfs.xfsMd डिवाइस पर डिफ़ॉल्ट के साथ , यह रिपोर्ट करता है:

sectsz=512
bsize=4096

मैंने एक कॉल के साथ इसे ठीक किया mkfs.xfs -s size=4096 /dev/md8

संपादित करें: कुछ चीजों का परीक्षण करने के बाद मैंने निम्नलिखित चीजों पर ध्यान दिया:

ऐसा लगता है कि प्रारंभिक रेसकंक 128k के ब्लॉक आकार (और 512 बाइट्स नहीं) के साथ किया जाता है:

md: resync of RAID array md8
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync.
md: using 128k window, over a total of 2930265424 blocks.

के माध्यम से प्रदर्शित गति /proc/mdstatउस रुकावट के लिए संगत है (512bytes के लिए एक प्रदर्शन हिट की उम्मीद करेगा):

[>....................]  resync =  3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec

(उदाहरण के लिए जब लेखन कैश को अक्षम करें तो प्रदर्शित गति तुरंत 18m / sec पर गिर जाती है)

के तहत /sysवहाँ वास्तव में कुछ और संबंधित फाइलों के अलावा हैं hw_sector_size:

# cat /sys/block/sdb/queue/physical_block_size
4096
# cat  /sys/block/sdb/queue/logical_block_size
512

इसका मतलब है कि ड्राइव कर्नेल पर अपने 4k सेक्टर के आकार के बारे में नहीं बताता है और कर्नेल को कुछ 4k सेक्टर का समर्थन है (जैसा कि fstab -lसुझाए गए आउटपुट के रूप में )।

थोड़ा सा घूमने से डब्ल्यूडी डिस्क के बारे में कुछ रिपोर्ट मिलीं, जो 4k आकार की रिपोर्ट नहीं करती हैं - सौभाग्य से यह 3 टीबी डब्ल्यूडी डिस्क ऐसा नहीं करता है - शायद डब्ल्यूडी ने वर्तमान फर्मवेयर के साथ अपने फर्मवेयर को ठीक किया।

जवाबों:


16

धारी का आकार raid1 पर लागू नहीं होता है क्योंकि कोई स्ट्रिपिंग नहीं है; अनिवार्य रूप से पूरी डिस्क एक हिस्सा है। संक्षेप में, आपको 4k भौतिक क्षेत्र के आकार के बारे में चिंता करने की आवश्यकता नहीं है। Mdadm के हाल के संस्करण कर्नेल से जानकारी का उपयोग यह सुनिश्चित करने के लिए करते हैं कि डेटा की शुरुआत 4kb सीमा से जुड़ी हो। बस सुनिश्चित करें कि आप 1.x मेटाडेटा प्रारूप का उपयोग कर रहे हैं।

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