Sda1 से sda2 में विभाजन की संख्या बदलें


20

मेरे पास दो विभाजनों के साथ एक डिस्क है: sda1 और sda2। मैं sda1 की संख्या sda2 और sda2 से sda1 में बदलना चाहूंगा।

यह संभव है लेकिन मुझे प्रक्रिया याद नहीं है। यानी मेरा पहला विभाजन sda2 और दूसरा sda1 होगा, इसलिए मुझे एक मैन्युअल आदेश निर्दिष्ट करने की आवश्यकता है, न कि fdisk की तरह एक स्वचालित आदेश -> x -> f।

मैं ऑर्डर कैसे बदलूं? मैनुअल या ट्यूटोरियल के लिंक भी उपयोगी हैं।

धन्यवाद।

कारण: मेरे पास एक एप्लिकेशन है जिसे sda1 से रीड डेटा की आवश्यकता है लेकिन डेटा sda2 में है। विभाजन तालिका बदलें इस समस्या का तेज़ समाधान है। प्रणाली महत्वपूर्ण नहीं है, लेकिन मैं बहुत अधिक समय के लिए प्रणाली को रोकना नहीं चाहता।

अद्यतन : OpenBSD के fdisk संस्करण में वह कार्यक्षमता शामिल है।


1
जैसा कि आमतौर पर आप क्या पूछते हैं यह करने के लिए एक बुरा विचार है, कृपया वर्णन करें कि आप ऐसा क्यों चाहते हैं।
rozcietrzewiacz

मेरे पास बैकअप है, चिंता न करें :)
Rufo El Magufo

ठीक है, आपको चेतावनी दी गई है और खेलना चाहते हैं, तो यहाँ जाता है ... :)
rozcietrzewiacz

जवाबों:


17

FYI करें, यह एक बुरा विचार है और आप सब कुछ खो सकते हैं। यदि आप अभी भी इसे करना चाहते हैं, तो यहां चरण हैं:

  1. यह मत करो । यदि यह मदद नहीं करता है, तो:
  2. sfdiskउपकरण का उपयोग करें : सबसे पहले, विभाजन तालिका का एक बैकअप बनाकर उपयोग करें

    sfdisk -d /dev/sda > sda.out
    

    फिर इसके लिए जाएं:

    sfdisk /dev/sda -O sda-partition-sectors.save
    

    आपको कुछ इस तरह दिखाई देगा

    Checking that no-one is using this disk right now ...
    OK
    
    Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track
    Old situation:
    Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/sda1          0+      5       6-     23063+  83  Linux
    /dev/sda2          6    1017    1012    3890128   83  Linux
    /dev/sda3          0       -       0          0    0  Empty
    /dev/sda4          0       -       0          0    0  Empty
    Input in the following format; absent fields get a default value.
    <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
    Usually you only need to specify <start> and <size> (and perhaps <type>).
    
    /dev/sda1 :
    

अब यह आपको 'sda1' विभाजन के लिए नए विवरण देने के लिए कह रहा है। तो आपको यहाँ sda2 के नंबर देने होंगे। इसलिए, मैंने यहां '6 1012' डाला और एंटर दबाया:

    /dev/sda1 :6 1012
    /dev/sda1          6    1017    1012    3890128   83  Linux
    /dev/sda2 :

अब जांचें कि आपके द्वारा Enter दबाए जाने के बाद छपी संख्या ठीक वैसी ही है जैसी कि पहले sda2 के लिए छपी थी। यदि यह ठीक है, तो sda2 के लिए नए नंबर देना जारी रखें:

    /dev/sda2 :0
    /dev/sda2          0+      5       6-     23063+  83  Linux
    /dev/sda3 :

इस बार मेरे मामले में "0" दर्ज करने के लिए पर्याप्त था - लेकिन आपको यह सुनिश्चित करना होगा कि नंबर आपके में गड़बड़ न हों।

इसके बाद, उसी तरह अन्य विभाजनों के साथ जारी रखें। यदि आप पहले से ही डिस्क के अंत तक पहुंच गए हैं, तो एंटर दबाएं पर्याप्त है। अंत में, फिर से जांचें कि सभी नंबर ठीक हैं और विभाजन तालिका (या नहीं) को बचाएं। यदि आप कुछ गड़बड़ करते हैं, तो एक नज़र डालें man sfdiskऔर '-d', '-O' और '-I' विकल्पों का वर्णन करें।

ध्यान दें, कि एक बार जब आप पागल परिवर्तन कर चुके होते हैं, तो आपको 'सिंक' चलाने की आवश्यकता हो सकती है ताकि आप उन्हें माउंट करने का प्रयास करने से पहले विभाजन फिर से पढ़ सकें।


जवाब के लिए धन्यवाद। आप सही हैं, यह डरावना है :)।
रुफो एल मगूफो

कमाल की बुराई है। यदि संख्याएँ समान नहीं हैं तो क्या होगा? त्याग और प्रतिकार? (यही मैंने किया है)
पर्यवेक्षण

1
@supervacuo Testisk तो आप मदद कर सकता है। testdiskअपने डिस्ट्रो के सॉफ्टवेयर डेटाबेस में पैकेज की खोज करें।
rozcietrzewiacz

@supervacuo यदि संख्याएँ समान नहीं हैं, तो आपके नए विभाजन पुराने विभाजन के समान नहीं हैं और आप उन्हें संभावित रूप से बदल देंगे। यदि आप डिस्क के लिए कुछ और नहीं करते हैं तो आप विभाजन तालिका को पुनर्स्थापित कर सकते हैं जिसे आपने शुरू करने से पहले उम्मीद की थी और फिर से प्रयास करें। यदि नहीं, तो आप बेहतर उम्मीद करेंगे कि सही संख्याएँ अभी भी आपके कंसोल पर हैं, या यह कि आप अपने विभाजन के सटीक आकार और स्थान को याद कर सकते हैं और संख्याओं पर काम कर सकते हैं।
माइकल जॉनसन

32

मैंने इसे आसान तरीके से किया:

# sfdisk -d /dev/sdb > sdb.bkp

सुरक्षा के लिए एक प्रति छोड़ दें

# cp sdb.bkp sdb.new 

अब संपादित करें sdb.new मेरे मामले में केवल लाइनों के क्रम और विभाजन संख्याओं को बदलते हुए:

से

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=  1026048, size=975747120, Id=83
/dev/sdb2 : start=     2048, size=   204800, Id=83
/dev/sdb3 : start=   206848, size=   819200, Id= b
/dev/sdb4 : start=        0, size=        0, Id= 0

सेवा

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   204800, Id=83
/dev/sdb2 : start=   206848, size=   819200, Id= b
/dev/sdb3 : start=  1026048, size=975747120, Id=83
/dev/sdb4 : start=        0, size=        0, Id= 0

फिर इसे डिस्क विभाजन तालिका में वापस फेंक दें?

# sfdisk /dev/sdb < sdb.new

मेरा क्रम अनुक्रम मैं सिकुड़ गया था और डिस्क का उपयोग करने की शुरुआत में दो छोटे विभाजन जोड़ने के लिए एकमात्र विभाजन (sdb1) को सही स्थानांतरित कर दिया था gparted

यदि अंतिम कमांड काम नहीं करती है, जैसा कि मेरे मामले में है, तो इसके लिए इसे बदलें:

# sfdisk --no-reread -f /dev/sdb < sdb.new

यह मेरे लिए काम किया और मुझे उस 2 कमांड की जरूरत नहीं थी।
आरोन फ्रेंके

मुझे रूप में अच्छी तरह, धन्यवाद के लिए;) ... नोट सुनिश्चित करें कि सभी अपने विभाजन आदेशों से पहले अनमाउंट कर रहे हैं
intika

3

आपको आदेश को उलटने के लिए ड्राइव विभाजन तालिका को फिर से लिखना होगा, जो करना थोड़ा जोखिम भरा है। अगर मैं आप होते तो मैं उस समस्या को ठीक कर देता जो आपको डिवाइस के नामों के क्रम को स्वैप करना और विभाजन को अकेले छोड़ना चाहती है।

उदाहरण के लिए यदि आपके पास एक स्क्रिप्ट है जिसे दोनों मशीनों पर चलाने की आवश्यकता है और आप चाहते हैं कि यह एक ही उपकरण तक पहुंच सके, तो एक अलग निर्देशिका में लिंक बनाएं (न कि देव /) जो दोनों सर्वरों पर एक ही नाम है, लेकिन / के लिए लिंक dev / sda1 एक पर, और / dev / sda2 दूसरे पर।

आप विभाजन को संपादित करने के लिए किसी भी विभाजन संपादक ( fdiskया cfdisk) का उपयोग कर सकते हैं लेकिन आपको वर्तमान सेटिंग्स को लिखने या स्क्रीन की एक तस्वीर लेने की आवश्यकता है। सभी सही मान निर्दिष्ट करते हुए, दो विभाजन हटाएं और फिर उन्हें मैन्युअल रूप से बनाएं। ऐसा करने के लिए सिस्टम को LiveCD के साथ बूट करें।


मैं कुछ भी नहीं बदल सकता। मेरा सिस्टम एक Xen डोम है और समस्या DOM0 में है। मैं विभाजन के क्रम को फिर से बना सकता हूं लेकिन मेरी स्थिति में अधिक जटिल है। लेकिन वैसे भी, मैं यह जानना चाहूंगा कि ऑर्डर कैसे बदलते हैं।
रूफो एल मगूफो

2

सबसे पहले, यह पूरी चीज चीजों को तोड़ने की पूरी कोशिश करने के लिए एक अभ्यास है, लेकिन वैसे भी, यहां एक और दृष्टिकोण आप कोशिश कर सकते हैं।

नोट: आपने यह उल्लेख नहीं किया है कि आप कहां से बूट करते हैं, और यह समाधान, और कोई अन्य उस समय नहीं है जब मैं यह लिख रहा हूं, यह संबोधित कर रहे हैं कि आपको LILO या GRUB को ठीक से काम करने के लिए क्या करना होगा।

/dev/sda1और /dev/sda2ब्लॉक डिवाइस (8,1) और (8,2) हैं। आप mknodबस दो को स्वैप करने का उपयोग करके देख सकते हैं ।

telinit 1
(...)
rm -f /dev/sda{1,2}; mknod /dev/sda1 b 8 2; mknod /dev/sda2 b 8 1
chmod 640 /dev/sda{1,2}; chown root:disk /dev/sda{1,2}
reboot

बस याद रखें कि यह स्वैपिंग तब होगी जब आपका विभाजन /dev/बूट पर लोड है, इसलिए initrdअभी भी "सही" वाले होंगे जब तक कि आप इसे वहां ठीक नहीं करते हैं (पाठक के लिए व्यायाम - mkinitrdविचित्रता की नकल करेंगे ?) यह भी नहीं करता है ? पता SELinux संदर्भों।


बूटलोडर एक समस्या नहीं है :)। समाधान के लिए धन्यवाद, लेकिन मुझे सिस्टम में नहीं, विभाजन तालिका में क्रम बदलने की आवश्यकता है।
रुफो एल मगूफो

1
यह udv का उपयोग करने वाले किसी भी सिस्टम पर काम नहीं करने वाला है, और यह केवल तभी मदद करेगा जब एप्लिकेशन को एक फ़ाइल से पढ़ा जाता है /dev/sda(जैसा कि डिस्क को सीधे पढ़ने के विपरीत है)।
गिल्स एसओ-

दोनों - सहमत थे। संपूर्ण प्रश्न IMHO दर्द में एक व्यायाम है। मैं udevसामान के बारे में निश्चित नहीं था ; जाहिरा तौर पर पहली प्रणाली है जो मैंने sshनहीं की थी।
एरोन डी। मैरास्को

2

मैंने अभी इस समस्या का आश्चर्यजनक रूप से आसान समाधान खोजा है। मान लें कि आपके पास केवल एक विभाजन नाम शेष है /dev/sda3। आप चाहते हैं कि इसे बुलाया जाए /dev/sda1। खोलें gdisk, विभाजन तालिका को GPT में बदलें, लिखें और बाहर निकलें। फिर इसे फिर से खोलें, सॉर्ट करें (यह GPT नंबर को 1 में बदल देगा), और फिर विशेषज्ञ विकल्पों के माध्यम से GPT को MBR में वापस कनवर्ट करें।


1

- रूट के रूप में टर्मिनल में विभाजन / देव / sda3 / / देव / sda2 का संपादन -

  1. बैकअप पार्टीशन टेबल

    sfdisk -d / dev / sda> sda.bkp

  2. नए पार्टीशन टेबल में पार्टीशन टेबल बैकअप कॉपी करें

    cp sda.bkp sda.new

  3. नई विभाजन तालिका संपादित करें

    gedit sda.new

यहाँ छवि विवरण दर्ज करें

सहेजे बंद करें

  1. नए विभाजन तालिका को पुनर्स्थापित करें

    sfdisk --no-reread -f / dev / sda <sda.new

  2. रिबूट कंप्यूटर


हालांकि यह
उल्लेखनीय

1
मुझे लगता है कि आप एक गैर-मोनोस्पेस फ़ॉन्ट, एक दृश्य सम्मिलन बिंदु और दृश्य वर्तनी जाँचकर्ता के साथ पाठ संपादक के स्क्रीनशॉट से बेहतर कर सकते हैं।
माइकल जॉनसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.