विभाजन का उपयोग करके संरेखित विभाजन बनाएँ


66

मैं एक गैर-एसएसडी हार्ड डिस्क को विभाजन के साथ विभाजित कर रहा हूं क्योंकि मुझे जीपीटी विभाजन तालिका चाहिए।

parted /dev/sda mklabel gpt

अब, मैं उन विभाजनों को सही ढंग से बनाने की कोशिश कर रहा हूँ, ताकि मैं यह जानने के लिए निम्न कमांड का उपयोग करूँ कि पहला सेक्टर कहाँ शुरू होता है:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

हम देख सकते हैं कि यह सेक्टर 34 में शुरू होता है (यह डिफॉल्ट तब होता है जब यह विभाजन तालिका का उपयोग किया जाता है)।

इसलिए, मैंने पहले विभाजन को बनाने की कोशिश की:

parted /dev/sda mkpart primary 63s 127s

सेक्टर 64 पर इसे संरेखित करने के लिए क्योंकि यह 8 से अधिक है, लेकिन यह दिखाता है:

चेतावनी: परिणामी विभाजन को सर्वश्रेष्ठ प्रदर्शन के लिए ठीक से संरेखित नहीं किया गया है।

मेरी हार्ड डिस्क में तार्किक और भौतिक क्षेत्र आकार दोनों 512 बाइट्स हैं:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

मैं विभाजन को सही तरीके से कैसे जोड़ूं? मैं क्या गलत कर रहा हूं?


क्या आप सुनिश्चित हैं कि सेक्टर नंबर शून्य से शुरू होंगे?
बर्टन समोग्राड

1
मैंने भी कोशिश की parted /dev/sda mkpart primary 64s 128s(यदि यह 1 में शुरू होता है), लेकिन यह उसी चेतावनी को वापस करता है।
मार्क

ऐसा लगता है कि मान संरेखित करने के लिए जाँच करने के लिए एक आदेश है: gnu.org/software/parted/manual/html_node/align_002dcheck.html । शायद कोशिश करें कि लूप का उपयोग करने वाले विभिन्न मूल्यों के साथ और उन मूल्यों को थूक दें जो ठीक हैं?
बर्टन समोग्रद

बर्टन, मैं उस कमांड के बारे में नहीं जानता था लेकिन इसे तब तक इस्तेमाल नहीं किया जा सकता जब तक कि विभाजन न हो।
मार्क

इसके बारे में क्षमा करें, मैंने विवरण को ध्यान से नहीं पढ़ा।
बर्टन समोग्राड

जवाबों:


68

partedआप के साथ विभाजन संरेखित करने के लिए --alignविकल्प का उपयोग कर सकते हैं । मान्य संरेखण प्रकार हैं:

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

अन्य उपयोगी टिप यह है कि आप इसे संरेखित करने के लिए आकार को प्रतिशत के साथ सेट कर सकते हैं। 0% से शुरू करें और 100% पर समाप्त करें। उदाहरण के लिए:

parted -a optimal /dev/sda mkpart primary 0% 4096MB


5
क्या आज्ञा समाप्त नहीं होनी चाहिए 0% 100%? कहाँ 4096MBसे आता है?
नाहनके 18

4
मूल्य 4096MB और मिश्रण% की क्षमता विशिष्ट आकार संख्या दिखाने के लिए यहाँ सिर्फ एक उदाहरण प्रयोग किया जाता है
lik

3
बस एक नोट, मुझे '0%'अपने शेल के लिए उद्धरण में संलग्न करना था ताकि कमांड को ठीक से निष्पादित किया जा सके।
एडम एर्लिन

@ लिक क्या आपके पास इस पोस्ट के लिए सुझाव है unix.stackexchange.com/questions/248939/…
अंकुरांक

1
ऊपर कभी नहीं, मैं सिर्फ print1000 बाइट्स के रूप में kB का उपयोग करता है पर ध्यान दिया ...
jiggunjer

9

मेरा समाधान gdisk का उपयोग करना है जो डिफ़ॉल्ट रूप से 2048 क्षेत्रों (1024KiB) पर विभाजन संरेखण स्वचालित रूप से कर सकता है, हालांकि इसे विशेषज्ञ मेनू में बदला जा सकता है।


7

से आर्क विकी :

विभाजन बनाते समय, पार्टीशन अनुचित विभाजन संरेखण के बारे में चेतावनी दे सकता है लेकिन उचित संरेखण के बारे में संकेत नहीं देता है। उदाहरण के लिए:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

चेतावनी का अर्थ है कि विभाजन startसंरेखित नहीं है।

Ignoreवैसे भी आगे जाने के लिए दर्ज करें , क्षेत्रों में विभाजन तालिका को प्रिंट करें जहां यह शुरू होता है, और चेतावनी को रोकने तक 2 की बढ़ती हुई शक्तियों तक गोल क्षेत्र के साथ विभाजन को हटा दें / पुन: बनाएँ। एक उदाहरण के रूप में, 512B सेक्टरों के साथ एक फ्लैश ड्राइव पर, पार्टेड ने उन सेक्टरों को शुरू करने के लिए विभाजन चाहते थे जो 2048 के कई थे, जो कि 1MB संरेखण है।

इसके अतिरिक्त, इस खंड के ठीक ऊपर, वे कहते हैं कि KiB, MiB, GiB, इत्यादि की अधिक सटीक IEC बाइनरी इकाइयाँ इकाइयों के साथ-साथ कम सटीक KB, MB, GB, आदि के लिए स्वीकार्य हैं।

व्यक्तिगत रूप से, मेरा सटीक आदेश जो इसे हल करता था:

mkpart hd ext4 1024KiB 8470MB

यह शिकायत नहीं की, मुझे लगता है कि यह 1MB संरेखण चाहता था।


नहीं, मैंने 1048576KiB की कोशिश की, कोई पासा नहीं।
बेहारोज़

5

एक मामूली सुधार। जैसा कि मैं इसे समझता हूं, GPT डिस्क में विभाजन प्रकार नहीं हैं, वे सभी "प्राथमिक" हैं। कमांड 'mkpart प्राइमरी' एक प्राथमिक विभाजन नहीं बनाता है, जैसे कि यह msdos डिस्क पर करता है, यह सिर्फ एक विभाजन बनाता है जिसे प्राथमिक कहा जाता है। आप बस कमांड का उपयोग कर सकते हैं

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

यह भ्रम पैदा कर सकता है यदि आप तार्किक विभाजन बनाने की कोशिश करते हैं, मुझे पता है कि यह मेरे लिए था।

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

आप "विस्तारित" नामक विभाजन के अंदर "तार्किक" नामक विभाजन नहीं बना सकते।


धन्यवाद, मैंने अभी बहुत समय बर्बाद किया है इस उपकरण खराब क्ली के लिए धन्यवाद, और आपने मुझे पता लगाया कि क्या चल रहा है।
फ्लोरियन हीगल

5

@Lik द्वारा स्वीकार कर लिया जवाब से पता चलता है कि कैसे आप को प्राथमिकता दी संरेखण निर्दिष्ट कर सकते हैं। हालाँकि, पार्टेड हमेशा परिणामी विभाजन की जाँच के लिए उस संरेखण का उपयोग करता है, लेकिन हमेशा उस संरेखण के साथ विभाजन नहीं बनाता है।

TL; DR: जब 1MiB इष्टतम संरेखण होता है, तो 0% निर्दिष्ट करना 200MiB और उससे अधिक के डिस्क के लिए काम करेगा। छोटे डिस्क या बड़े संरेखण के लिए, 0G निर्दिष्ट करना 0% काम नहीं कर सकता है। नीचे देखें क्यों।

विभाजन बनाते समय संरेखण बाधाओं को संतुष्ट करने का प्रयास करता है, लेकिन यह आपके अनुरोधित मूल्यों से बहुत अधिक विचलन नहीं करेगा। "बहुत अधिक" के रूप में क्या मायने रखता है यह इस बात पर निर्भर करता है कि आपने पोस्ट कैसे निर्दिष्ट किए हैं।

जब आप mkpart कमांड के लिए एक शुरुआत (या अंत) स्थिति निर्दिष्ट करते हैं, तो यह आंतरिक रूप से स्वीकार्य मानों की एक श्रृंखला उत्पन्न करता है। यह सीमा आपके द्वारा निर्दिष्ट मूल्य पर केंद्रित है, और आपके द्वारा उपयोग किए जाने वाले आधे इकाई आकार तक दोनों तरफ समान रूप से फैली हुई है (जो कि मैं कोड से पढ़ता हूं , टिप्पणी दोनों छोरों पर एक पूर्ण इकाई आकार कहती है)।

उदाहरण के लिए, जब आप "10M" निर्दिष्ट करते हैं, तो यह 9.5M और 10.5M के बीच किसी भी स्थिति का उपयोग करने का प्रयास करेगा। वही प्रतिशत के लिए जाता है, इसलिए यदि आप 0% निर्दिष्ट करते हैं तो यह 0% और 0.5% के बीच किसी भी मूल्य का उपयोग करेगा (यह नकारात्मक नहीं जाता है, जाहिर है)।

एक अपवाद यह है कि पावर-ऑफ-टू-यूनिट्स (जैसे कि 1024 के लिए KiB, 1000 के लिए K के विपरीत) का उपयोग करते हुए, यह माना जाता है कि आप एक सटीक स्थिति निर्दिष्ट करने का प्रयास कर रहे हैं और केवल आपके द्वारा निर्दिष्ट सटीक मान पर विचार कर रहे हैं।

चूंकि इष्टतम संरेखण आमतौर पर 1MiB- संरेखित होता है, K और M इकाइयों में अक्सर इष्टतम संरेखण तक पहुंचने के लिए पर्याप्त जगह नहीं होगी। जी में निर्दिष्ट पदों में बहुत जगह होनी चाहिए, लेकिन% आमतौर पर भी ठीक है।

तो, यही कारण है कि 0% आमतौर पर काम करता है, हालांकि इसकी सीमा भी है।


क्या आप अपने उत्तर के एक व्यावहारिक TLDR को संक्षेप में प्रस्तुत कर सकते हैं: स्वीकृत उत्तर की तुलना में वास्तव में बेहतर तरीके से क्या किया जाना चाहिए?
यूर्कानिस

अच्छा सुझाव है, मैंने एक TL जोड़ा, डॉ। व्यवहार में, मुझे लगता है कि 0% सभी लेकिन वास्तव में छोटे डिस्क के लिए काम करेगा, लेकिन मेरा जवाब थोड़ा पृष्ठभूमि जोड़ता है कि यह बिल्कुल कैसे काम करता है।
मैथिज्स कोइजमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.