भौतिक क्षेत्र आकार 4096 HDD के लिए तार्किक क्षेत्र आकार का अनुकूलन


20

कई नए हार्ड ड्राइव डिस्क के साथ भौतिक क्षेत्र का आकार 4096 है। क्या 512 के डिफ़ॉल्ट तार्किक क्षेत्र आकार के बजाय सिस्टम को समान आकार के तार्किक क्षेत्र आकार का उपयोग करना संभव होगा?

क्या यह बल्क रीड और राइट को गति देगा? इसे कहां से कॉन्फ़िगर किया जा सकता है?


संरेखण मुद्दों पर टिप्पणियों के लिए unix.stackexchange.com/a/18542/1131 देखें । हाल के संस्करणों mkfs.*को स्वचालित रूप से इष्टतम सेक्टर आकार का उपयोग करना चाहिए। आप कुछ mkfs.*परीक्षण कर सकते हैं और परिणाम का निरीक्षण कर सकते हैं (या तो mkfs की क्रिया आउटपुट में या संबंधित एफएस उपयोगिता कार्यक्रम में)।
14 फरवरी को अधिकतम 13'15

धन्यवाद, लेकिन संरेखण के मुद्दे नहीं
Matan

जवाबों:


29

512 बाइट वास्तव में डिफ़ॉल्ट सेक्टर आकार नहीं है। यह आपके हार्डवेयर पर निर्भर करता है।

आप /sysउदाहरण के लिए, छद्म फाइलसिस्टम के माध्यम से अपनी भौतिक रिपोर्ट का आकार क्या भौतिक / तार्किक क्षेत्र प्रदर्शित कर सकते हैं :

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

उन दो मूल्यों में क्या अंतर है?

  • physical_block_sizeएक ब्लॉक ड्राइव एक परमाणु आपरेशन में लिखने में सक्षम है के न्यूनतम आकार है।
  • सबसे logical_block_sizeछोटा आकार है जो ड्राइव लिखने में सक्षम है (cf. linux कर्नेल प्रलेखन)।

इस प्रकार, यदि आपके पास 4k ड्राइव है, तो यह समझ में आता है कि आपके स्टोरेज स्टैक (फाइलसिस्टम आदि) भौतिक क्षेत्र के आकार के बराबर या अधिक का उपयोग करता है।

fdiskउदाहरण के लिए उन मूल्यों को हाल के संस्करणों में भी प्रदर्शित किया गया है :

# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes

वर्तमान लिनक्स वितरण पर, प्रोग्राम (जिसे इष्टतम सेक्टर आकार के बारे में ध्यान देना चाहिए) जैसे mkfs.xfsडिफ़ॉल्ट रूप से इष्टतम सेक्टर आकार को चुनेंगे (उदाहरण के लिए 4096 बाइट्स)।

लेकिन आप इसे स्पष्ट रूप से एक विकल्प के माध्यम से निर्दिष्ट कर सकते हैं, उदाहरण के लिए:

# mkfs.xfs -f -s size=4096 /dev/sda

या:

# mkfs.ext4 -F -b 4096 /dev/sda

किसी भी मामले में, अधिकांश mkfsवेरिएंट निष्पादन के दौरान उपयोग किए गए ब्लॉक आकार को भी प्रदर्शित करेंगे।

मौजूदा फाइल सिस्टम के लिए ब्लॉक का आकार एक कमांड के साथ निर्धारित किया जा सकता है:

# xfs_info /mnt
[..]
meta-data=                       sectsz=4096
data     =                       bsize=4096
naming   =version 2              bsize=4096
log      =internal               bsize=4096
         =                       sectsz=4096
realtime =none                   extsz=4096

या:

# tune2fs -l /dev/sda
Block size:               4096
Fragment size:            4096

या:

# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size             4
sys_array_size        97
sectorsize            4096
nodesize              16384
leafsize              16384
stripesize            4096
dev_item.sector_size  4096

विभाजन पर फाइल सिस्टम बनाते समय, जांच के लिए एक और बात यह है कि क्या विभाजन शुरू का पता वास्तव में भौतिक ब्लॉक आकार से जुड़ा हुआ है। उदाहरण के लिए, fdisk -lआउटपुट को देखें, प्रारंभ पते को बाइट में परिवर्तित करें, उन्हें भौतिक ब्लॉक आकार से विभाजित करें - यदि विभाजन संरेखित किया जाता है तो अनुस्मारक शून्य होना चाहिए।


धन्यवाद, लिनक्स जो तार्किक और भौतिक ब्लॉक आकारों के रूप में वर्णन करता है, आपका स्पष्टीकरण बहुत मददगार था। मैं हाल ही में एक ऐसी स्थिति में भाग गया, जहां एक ही 8TB हार्ड ड्राइव ने एक USB बाड़े में 512-बाइट ब्लॉक के रूप में दिखाया और दूसरे में 4K ब्लॉक, तार्किक और भौतिक दोनों। मैंने सोचा कि कुछ गलत था क्योंकि लिनक्स ने विभाजन का नक्शा नहीं देखा था जब मैंने बाड़ों को बदल दिया था, लेकिन फिर मैंने पाया कि जीपीटी दूसरे तार्किक ब्लॉक पर शुरू होता है, इसलिए यह नए संरेखण के लिए गलत जगह पर था। मैंने एक एकल बड़े विभाजन को फिर से बनाने के लिए gdisk का उपयोग किया, और मेरा सारा डेटा अभी भी था (4K ब्लॉक के साथ ext4)।
Raptor007

क्या आपके द्वारा संरेखण की जांच के लिए वर्णित विधि विश्वसनीय है? मैंने "parted" उपयोगिता का उपयोग किया और यह बताया कि एक hdd विभाजन संरेखित है, लेकिन आपके पास आने के साथ मैंने भौतिक ब्लॉक आकार को समझा, 512 प्राप्त किया, फिर विभाजन के प्रारंभ पते से लिया fdisk -l, इसे 8 से विभाजित किया और फिर 512। शेष 0 नहीं था, इसलिए विभाजन को संरेखित नहीं किया गया लगता है
user907860

1
@ user907860 आप 8 से क्यों विभाजित हैं? मेरी लिनक्स प्रणालियों में से एक में एक fdisk -lरिपोर्ट Units = sectors of 1 * 512 = 512 bytes- इस प्रकार, 2048 और 1026048 पर शुरू होने वाले 2 विभाजनों के साथ 512/4096 तार्किक / भौतिक ड्राइव के लिए मैं गणना करता हूं 2048*512%4096और 1026048*512%4096- जैसे एक अजगर खोल में। चूंकि दोनों अभिव्यक्तियाँ समान शून्य हैं, इसलिए इन विभाजनों को 4k संरेखित किया गया है।
मैक्सक्लेपज़िग

स्पष्टीकरण के लिए बहुत-बहुत धन्यवाद, मैंने ध्यान नहीं दिया कि संख्या सेक्टर थी, बिट्स नहीं। मैंने कुछ महीने पहले उत्तर दिया, दुख की बात है, इसे फिर से नहीं कर सकते हैं
user907860

2

नहीं, यह संभव नहीं है, और न ही अगर यह होता तो कोई बात नहीं। IO आमतौर पर किसी भी तरह कम से कम 4096 बाइट्स की इकाइयों में किया जाता है, और आमतौर पर बहुत अधिक होता है।


2
यह सुनिश्चित नहीं है कि यह कथन मेरे प्रश्न से कैसे संबंधित है .. तार्किक क्षेत्र का आकार IO पाइपलाइन के कुछ हिस्से में छोटे टुकड़े कर सकता है, साथ ही HDD फर्मवेयर पर अनावश्यक उत्सर्जन भी हो सकता है। स्पष्ट करने के लिए देखभाल?
मटन

2
@ मतन, मैं आपकी टिप्पणी से बिल्कुल भी समझ नहीं बना सकता। मैंने समझाया कि IO को एक बार में 512 बाइट्स नहीं किए जाते हैं, इसलिए यह तथ्य कि 512 बाइट सेक्टरों में डिस्क को संबोधित किया जाता है, कोई फर्क नहीं पड़ता। जब भी ड्राइव को किसी भी तरह का अनुकरण करना होता है, यदि आप एक ऐसा लेखन करने का प्रयास करते हैं जो 4k संरेखित न हो, और चूँकि IO सामान्य रूप से किसी भी तरह 4k के गुणक में किया जाता है, और आधुनिक विभाजन उपकरण यह सुनिश्चित करते हैं कि विभाजन 4k भिन्न पर शुरू होता है। ऐसा नहीं होगा।
Psusi

1
यह "उत्तर" पूरी तरह से गलत है, इसके दावों और इसके निष्कर्ष दोनों में। जब किसी वॉल्यूम को स्वरूपित किया जाता है, तो तार्किक आकार सेट किया जाता है। तार्किक और भौतिक आकार के बीच बेमेल का उपयोग फ्लैश-आधारित भंडारण जैसी प्रौद्योगिकियों में एक निश्चित लागत है।
क्रिस स्ट्रैटन

@ChrisStratton, नहीं, आप फाइलसिस्टम ब्लॉक / क्लस्टर आकार के बारे में सोच रहे हैं। लॉजिकल सेक्टर का आकार एक सेक्टर का आकार है जो ड्राइव OS को रिपोर्ट करता है, और यह केवल उस आकार या उस आकार के कई हिस्से की इकाइयों को पढ़ और लिख सकता है, और सेक्टर उस आकार की इकाइयों में गिने जाते हैं। भौतिक क्षेत्र के आकार के साथ तुलना करें, जहां कुछ ड्राइव वास्तव में आंतरिक रूप से 4k क्षेत्रों को पढ़ते और लिखते हैं, लेकिन दिखावा करते हैं कि वे पुराने ऑपरेटिंग सिस्टम के साथ पिछड़े संगतता के लिए 512 बाइट क्षेत्रों का उपयोग कर रहे हैं जो 4k तार्किक क्षेत्रों के साथ सौदा नहीं कर सकते हैं।
psusi

गलत। किसी भी समय आपके पास मौजूद सॉफ़्टवेयर में स्टोरेज सिस्टम के भौतिक आकार की तुलना में छोटी इकाइयों को संचालित करने का प्रयास करने में समस्या होती है। यह विशेष रूप से तर्क इकाइयों के साथ एक फ्लैश मिटा ब्लॉक आकार से छोटा होता है - सॉफ्टवेयर एक नए भौतिक ब्लॉक से अछूते भागों को डुप्लिकेट करने के लिए समाप्त होता है, और यह लागत जीवन को मिटा देता है, भले ही यह ऑपरेटिंग सिस्टम फ़ाइल सिस्टम कोड या कोड द्वारा किया गया हो ड्राइव के लिए आंतरिक।
क्रिस स्ट्रैटन

1

हां यह संभव है, हालांकि ऐसा करने से ड्राइव को जितना हो सके उतना जल्दी भरना होगा। 512K से कम की फ़ाइलों के लिए, प्रत्येक फ़ाइल को पूर्ण 4096K (4MB) तक ले जाएगा और शेष फ़ाइलों को साझा करने की अनुमति देने के लिए अधिकांश filesystems (NTFS और इसी तरह) के लिए अक्षमता के कारण बाकी सेक्टर को भर देगा। एक फाइलसिस्टम के लिए सबसे अच्छा विकल्प यह होगा कि वह चर क्षेत्र के आकारों की अनुमति दे, हालांकि इससे एमएफटी (मास्टर फाइल टेबल) का आकार बढ़ता है और डेटा को आसानी से पुनर्प्राप्त करने की क्षमता को कम करते हुए डेटा भ्रष्टाचार का खतरा बढ़ जाता है। दूसरे शब्दों में, रिकवरी सॉफ़्टवेयर द्वारा सीमाओं को पूरी तरह से नहीं जाना जाएगा। इसलिए, जबकि 4096K तार्किक क्षेत्र का आकार बड़ी फ़ाइलों के लिए, सामान्य रोजमर्रा के उपयोग के पीसी के लिए कमाल है, यह सिर्फ 0 का एक गुच्छा है। अब, उस ने कहा, जब यह तार्किक क्षेत्र के आकार से छोटे डेटा की बात आती है तो एमएफटी में ही डेटा संग्रहीत करने का विकल्प होता है। हालांकि, इसका मतलब है कि आपका एमएफटी बहुत बड़ा हो गया है और डेटा दो बार लिखा जाएगा (आपके एचडीडी पर एमएफटी की दो प्रतियां हैं)। आपको एमएफटी के अधिकतम आकार को भी निर्दिष्ट करना होगा जो समस्याओं के कारण हो सकता है जब आप या तो इसके अधिकतम तक पहुंचते हैं या ड्राइव का उपयोग एमएफटी के उपयोग के लिए मुफ्त होगा। यह सब NTFS फाइल सिस्टम के उपयोग पर आधारित है। चीजों के उज्जवल पक्ष में, NTFS आपको 4MB या उससे कम के किसी भी तार्किक क्षेत्र आकार के लिए ब्लॉक स्तर पर फ़ाइलों के लिए देशी संपीड़न का उपयोग करने की अनुमति देता है। यह सीमा NTFS संपीड़न के काम करने के तरीके के कारण लागू की जाती है। तार्किक क्षेत्र आकार की परवाह किए बिना 4MB ब्लॉक पढ़े और संपीड़ित किए जाते हैं। यह, ज़ाहिर है,

तो, क्या यह स्पष्ट चीजें आपके लिए थोड़ी हैं?


मुझे लगता है कि यह जवाब बेहतर होगा यदि यह NTFS का उदाहरण फाइलसिस्टम के रूप में उपयोग नहीं करता, जैसा कि (जब तक कि पिछले कुछ वर्षों में चीजें नहीं बदली हैं) यह अच्छी तरह से या यूनिक्स और दोस्तों के तहत समर्थित नहीं है
फॉक्स

K का मतलब किलो होता है जो कि एक मीट्रिक इकाई उपसर्ग है जिसका अर्थ एक हजार है। 4 MiB 1024 सेक्टर्स हैं और 1 नहीं जैसा कि आप सुझाव देते हैं। 4096 बाइट्स 4 KiB या 0,00390625 MiB है।
ऐयून

यह कोई उत्तर नहीं है। ओपी की एचडीडी के सेक्टर साइज के बारे में बात करना, फाइल सिस्टम का ब्लॉक साइज नहीं। वह अलग परत है।
6 :07

-1
Sector:

1) Logical Sector: Called Native Sector.

Manufacture default setting. user cannot change.

Before 2010 year: 512b/sector

After 2010 year: 4k/sector.

Few manufacture provide HDD tool to change native sector.

2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)

User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.

(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)

(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)

3) File system deal with Physical sector(or block or Cluster) only.

आप इस उद्धरण के स्रोत को लिखने से चूक गए। दूसरे हाथों में, मुझे लगता है कि यह आपकी पिछली टिप्पणी की एक प्रति है: superuser.com/a/1372494/141252
andras.tim
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.