लिनक्स पर जीपीटी विभाजन का लाइव आकार


12

लिनक्स पर मैं एमबीआर विभाजन का उपयोग करता था fdisk का उपयोग करते हुए, यहां तक ​​कि लाइव फाइलसिस्टम पर भी, और फिर नई जगह आवंटित करने के लिए एक resize2fs / pvresize / ... (fs प्रकार के आधार पर) जारी करें।

हाल ही में मैं एक्सपी और जीपीटी विभाजन का उपयोग कर रहा हूं, और मैंने देखा है कि दुर्भाग्यवश भाग एक घुड़सवार विभाजन के आकार-परिवर्तन की अनुमति नहीं देता है, वास्तव में यह शिकायत करेगा:

Error: Partition XXX is being used. You must unmount it before you modify it with Parted.

मैंने resizeकमांड और सम rm+ mkpartसंयोजन दोनों का प्रयास किया है , लेकिन वे दोनों विभाजन के माउंट होने की शिकायत करेंगे।

मैं उसे कैसे कर सकता हूँ?


RHEL / CentOS पर बॉक्स से बाहर निकलने का एक तरीका काफी सराहा जाएगा
साइबरब

जवाबों:


12

ऐसा करने का सबसे सुरक्षित तरीका आपातकालीन माध्यम (लाइव सीडी या लाइक) का उपयोग कर बूट करना है और GParted का उपयोग करना है, जिसमें विभाजन और फाइलसिस्टम दोनों शामिल होंगे। यह तभी काम करेगा जब वर्तमान में विभाजन का उपयोग नहीं किया जा रहा है, हालांकि।

यदि आप कोई डाउनटाइम नहीं दे सकते हैं, हालांकि, आप gdiskइसके बजाय उपयोग करने का प्रयास कर सकते हैं parted। आपको उस विभाजन को हटाना होगा जिसे आप आकार बदलना चाहते हैं और उसी स्थान पर एक नया स्टार्ट पॉइंट बना सकते हैं, जितना आपने किया है fdiskgdiskउपयोग-इन डिस्क पर काम करने के लिए तैयार है, हालांकि कर्नेल किसी भी परिवर्तन को पंजीकृत नहीं कर सकता है। उस स्थिति में, आपको नए विभाजन तालिका को स्वीकार करने के लिए कर्नेल का उपयोग करने partprobeया kpartxप्राप्त करने की आवश्यकता हो सकती है , या कंप्यूटर को रिबूट भी कर सकता है यदि वह काम नहीं करता है। (यह सब उपयोग करने के लिए समान होना चाहिए fdisk।)


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

2
कोई उपकरण नहीं है जो कि CentOS के साथ जहाज काम करेगा। आप जो चाहते हैं उसे करने के लिए आपको CentOS रिपॉजिटरी से बाहर जाना होगा । ध्यान दें कि लगभग सभी अन्य वितरण (फेडोरा सहित) gdiskउनके रिपॉजिटरी में शामिल हैं , और मैंने सुना है कि gdiskआरएचईएल के अगले संस्करण में शामिल किया जाएगा (और इसलिए CentOS की)।
रॉड स्मिथ

उत्तर और टिप्पणी के लिए धन्यवाद, यह बिल्कुल वही जानकारी है जिसकी मुझे तलाश थी
साइबर

1
gdiskEPEL में उपलब्ध है।
jornane

मैंने दोनों की कोशिश की partxऔर partprobeआखिरकार रिबूट करना पड़ा। वैसे भी उन युक्तियों के लिए धन्यवाद
अलेक्जेंड्रे बॉलीयर

10

यह आमतौर पर केवल अधिक हाल के लिनक्स वितरण के साथ काम करता है। आवश्यक उपकरण:

  • partprobe (आमतौर पर जुदा का हिस्सा)
  • gdisk / sgdisk

GPT विभाजन डिस्क के अंत में एक बैकअप हेडर को संग्रहीत करता है। यदि आपने अंतर्निहित डिवाइस का आकार बदल दिया है, तो बैकअप हेडर कहीं बीच में होगा। पहला कदम डिस्क के अंत में विभाजन हेडर को स्थानांतरित करना है।

मान लिया जाता है कि डिस्क / dev / sda है और विभाजन / dev / sda3 है (अंतिम विभाजन भी होना चाहिए):

sgdisk -e /dev/sda

फिर, पिछला विभाजन हटाएं और इसे फिर से बनाएं:

sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda

आपको आमतौर पर एक संदेश दिखाई देगा जो दर्शाता है कि कर्नेल विभाजन तालिका को फिर से लोड करने में असमर्थ है। आपको partprobe चलाना है इसलिए विभाजन नए आकार के साथ पंजीकृत है:

partprobe /dev/sda

यदि यह असफल है, तो आपको वर्चुअल मशीन को रिबूट करना होगा। उसके बाद आप अपने फाइलसिस्टम को उपयुक्त टूल से बढ़ा सकते हैं, ext4 आदि के लिए:

resize2fs /dev/sda3

सावधानी : sgdisk चलाना विनाशकारी हो सकता है। सुनिश्चित करें कि आपके पास उचित बैकअप प्रक्रियाएँ हैं।


बहुत बढ़िया! विशेष रूप से partprobeकदम के लिए धन्यवाद - मैंने हमेशा सोचा कि किसी भी माउंटेड विभाजन के साथ विभाजन तालिका को बदलते समय इसे रिबूट करना आवश्यक है।
piit79

ध्यान रखें कि विभाजन को नष्ट करने और पुन: बनाने से विभाजन के लिए एक नया PARTUUID उत्पन्न होगा, जो अन्यथा fstab / GRUB / etc के लिए एकमात्र विश्वसनीय और फाइलसिस्टम-स्वतंत्र तरीका है, जो बहु-डिस्क सेटअप में विभाजन की पहचान करने के लिए।
टेओ क्लेस्ट्रुप रोइजेजन

5

यहाँ एक उदाहरण है कि एक स्वचालित उपकरण एक विभाजन को ऑनलाइन, एक रन में बदलने के लिए उपयोग करता है:

sgdisk -d 1 -n 1: 2048: 0 -c 1: -u 1: E485F29F-A1F4-4953-9DD8-799EAEA0119B -t 1: 0700 / देव / xvda

यहाँ sgdisk कमांड के विकल्पों की सूची दी गई है:

  • -d 1 डिलीट का पहला विभाजन
  • -n 1: 2048: 0 कहते हैं कि नया विभाजन "नंबर 1" बनाएं, जिसमें सेक्टर 2048 शुरू होगा। अंतिम क्षेत्र = "0" जिसका अर्थ है "इस विभाजन के लिए सभी उपलब्ध स्थान का उपयोग करें"
  • -u उस विभाजन के लिए विशिष्ट मार्गदर्शिका निर्धारित करता है (यह GPT विभाजन के लिए विशिष्ट है); आप GUID के लिए 'R' का उपयोग रैंडम वैल्यू पर सेट करने के लिए कर सकते हैं। gdisk /dev/xvda; pसमान यूआईडी का पुन: उपयोग करने के लिए आप आउटपुट के माध्यम से वर्तमान विभाजन की आईडी प्राप्त कर सकते हैं
  • -t 1: 0700 मूल रूप से पहला विभाजन टाइपबॉक्स '0700' का है।

/ dev / xvda वह डिस्क थी जिसे हमने रिप्रेजेंट किया था।

इसलिए यह तुरंत ही अपनी जगह पर एक नया विभाजन हटाता है और बनाता है।

पुनश्च। टाइपबॉक्स पर कुछ नोट्स '0700'। आदमी से परिदृश्य (8)

   -t, --typecode=partnum:{hexcode|GUID}
          Change a single partition's type  code.  You  enter  the  type  code  using  either  a  two-byte  hexadecimal  number,  as 

पहले वर्णित, या पूरी तरह से निर्दिष्ट GUID मान, जैसे EBD0A0A2-B9E5-4433-87C0-68B6B72699C7।

'0700' का यहाँ क्या अर्थ है, इसके लिए सर्वश्रेष्ठ स्पष्टीकरण मिला - http://www.rodsbooks.com/gdisk/walkthrough.html

"लेकिन रुको," आप कहते हैं, "मुझे लगा कि डिस्क में एक एफएटी विभाजन था!" वास्तव में यह करता है। विंडोज अपने सभी डेटा विभाजन के लिए एक ही GUID कोड का उपयोग करता है, जैसे वे FAT या NTFS। अतीत में, लिनक्स में इसके डेटा विभाजन के लिए समान कोड का उपयोग किया गया है। (जल्द ही इस पर और अधिक ....) इस प्रकार, इस मामले में कई अलग-अलग एमबीआर कोड सभी को एक एकल जीपीटी गाइड कोड में अनुवादित किया जाता है। जीपीटी fdisk का उपयोग करता है, कुछ हद तक, इन सभी के लिए 0x0700 कोड (या अधिक सटीक, EBD0A0A2-B9E5-4433-87C0-68B6B72699C7)।

मेरे मामले में मेरा मानना ​​है कि लिनक्स एक्स्ट 4 विभाजन था, लेकिन विभाजन के टाइपबॉस् का मतलब फाइलसिस्टम प्रकार नहीं है, इसलिए '0700' sgdisk के लिए एक catchall प्रकार की तरह दिखता है। कम से कम मामलों में मैंने देखा है।

पी पी एस। आपको partprobeरिबूटिंग सिस्टम के बिना विभाजन परिवर्तन से अवगत होने के लिए कर्नेल को चलाने की आवश्यकता हो सकती है।


'p' आपको डिस्क का UUID दिखाएगा। 'i' आपको विभाजन का UUID दिखाएगा।
कीथ

2

मैं यहाँ कुछ जवाब और टिप्पणियों का सारांश दे रहा हूँ:

partedबस किसी भी घुड़सवार विभाजन को बदलने से इंकार कर देगा। gdiskआपके लिए काम करेगा, लेकिन यह मानक RHEL या CentOS रिपॉजिटरी में नहीं है। यह EPEL रिपॉजिटरी में है, हालांकि।

ध्यान रखें कि एक डिस्क जो कि प्रयोग में है पर विभाजन को बदलने से कर्नेल को रोकने से रोक सकती है। यदि ऐसा होता है, तो उपयोग करें partprobe, partxया रिबूट करें।


1

क्या आप तार्किक आयतन को आकार देने के बारे में पूछ रहे हैं? यहाँ है कि मैं यह कैसे करेंगे:

vgextend vgname /dev/sdb3
lvextend -L +3T /dev/mapper/location
resize2fs /mount/point

या (एक्सएफ़एस):

xfs_growfs /mount/point -D <bytes>

वह शायद ext2 / ext3 / ext4 का उपयोग नहीं कर रहा है, अन्यथा resize2fs मक्खी पर काम करना चाहिए?

1
@ एंटनी ली: यदि आप पास -rहोते हैं lvextend, तो यह आपके लिए आक्रमण करता resize2fsहै।
jmtd

0

fdisk आम तौर पर अभी भी उपलब्ध है और यह कर सकते हैं, यदि विभाजन अंतिम विभाजन है और विभाजन की शुरुआत चलती नहीं है।

हालांकि, यह एक खतरनाक ऑपरेशन है जिसे बहुत सावधानी से किया जाना चाहिए। एक बैकअप बनाओ!

ec2-user@ip-10-0-20-15 ~]$ sudo fdisk /dev/nvme0n1

Welcome to fdisk (util-linux 2.30.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/nvme0n1: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 70E4A118-98BD-4BF4-8DF9-6926A964902A

Device           Start      End  Sectors Size Type
/dev/nvme0n1p1    4096 16777182 16773087   8G Linux filesystem
/dev/nvme0n1p128  2048     4095     2048   1M BIOS boot

Partition table entries are not in disk order.

Command (m for help): d
Partition number (1,128, default 128): 1

Partition 1 has been deleted.

Command (m for help): n
Partition number (1-127, default 1): 1
First sector (34-50331614, default 4096):
Last sector, +sectors or +size{K,M,G,T,P} (4096-50331614, default 50331614):

Created a new partition 1 of type 'Linux filesystem' and of size 24 GiB.
Partition #1 contains a xfs signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): p

Disk /dev/nvme0n1: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 70E4A118-98BD-4BF4-8DF9-6926A964902A

Device           Start      End  Sectors Size Type
/dev/nvme0n1p1    4096 50331614 50327519  24G Linux filesystem
/dev/nvme0n1p128  2048     4095     2048   1M BIOS boot

Partition table entries are not in disk order.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

[ec2-user@ip-10-0-20-15 ~]$ sudo partprobe

[ec2-user@ip-10-0-20-15 ~]$ sudo fdisk -l
Disk /dev/nvme0n1: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 70E4A118-98BD-4BF4-8DF9-6926A964902A

Device           Start      End  Sectors Size Type
/dev/nvme0n1p1    4096 50331614 50327519  24G Linux filesystem
/dev/nvme0n1p128  2048     4095     2048   1M BIOS boot

Partition table entries are not in disk order.

[ec2-user@ip-10-0-20-15 ~]$ sudo xfs_growfs /
meta-data=/dev/nvme0n1p1         isize=512    agcount=4, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=2096635, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096635 to 6290939
```
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.