จะขยายพาร์ติชั่นและระบบไฟล์ ext4 ได้อย่างไร?


44

ฉันมีดิสก์ 400GB พร้อมด้วยพาร์ติชัน 320GB ext4 ฉันต้องการขยายพาร์ติชัน ext4 เพื่อใช้พื้นที่ด้านซ้าย (พื้นที่ว่าง 80GB)

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

ฉันจะทำสิ่งนี้ได้อย่างไร

ฉันเคยเห็นคนใช้resize2fsแต่ฉันไม่เข้าใจว่ามันปรับขนาดพาร์ติชันหรือไม่

โซลูชันอื่นจะใช้fdiskแต่ฉันไม่ต้องการลบพาร์ติชันและข้อมูลหลวม ฉันจะขยายพาร์ติชันได้อย่างไรโดยไม่สูญเสียไฟล์ใด ๆ

หมายเหตุ: ฉันกำลังพูดถึงพาร์ติชันข้อมูลที่ไม่ได้เชื่อมต่อซึ่งไม่มี LVM และฉันมีการสำรองข้อมูล แต่ฉันต้องการหลีกเลี่ยงการใช้เวลาในการกู้คืน


คำถามประเภทนี้มีการถามและตอบหลายครั้งที่ฉันทราบ คุณปรึกษาคลังเก็บที่นี่หรือไม่?
mdpc

คำตอบ:


45

คุณต้องเริ่มต้นด้วยพาร์ติชันที่ไม่ได้ต่อเชื่อม หากคุณไม่สามารถเลิกเมานท์ได้ (เช่นเป็นพาร์ติชันรูทของคุณหรืออย่างอื่นที่ระบบจำเป็นต้องเรียกใช้) ให้ใช้ซีดีระบบช่วยเหลือแทน

  1. เรียกใช้partedหรือgpartedถ้าคุณต้องการ GUI และปรับขนาดพาร์ติชันเพื่อใช้พื้นที่เพิ่มเติม ฉันชอบgpartedเพราะมันให้การแสดงกราฟิกที่ดีคล้ายกับที่คุณวาดไว้ในคำถามของคุณ

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (เพียงเพื่อตรวจสอบว่าคุณปลอดภัยหรือไม่)

  4. ติดตั้งพาร์ติชันของคุณใหม่

ในขณะที่ฉันไม่เคยเห็นความล้มเหลวนี้ให้สำรองข้อมูลของคุณก่อน!


5
resize2fsหน้าคนพูดว่า: ถ้าระบบแฟ้มติดตั้งก็สามารถนำมาใช้ในการขยายขนาดของที่ติดตั้งระบบแฟ้มสมมติว่าเคอร์เนลสนับสนุนเกี่ยวกับสายการปรับขนาด (จากการเขียนนี้เคอร์เนล Linux 2.6 สนับสนุนการปรับขนาดออนไลน์สำหรับระบบไฟล์ที่เมาท์โดยใช้ ext3 และ ext4) อย่างไรก็ตามการปรับขนาดระบบไฟล์ที่เมาท์อยู่นั้นเป็นการดำเนินการที่อันตรายกว่าเนื่องจากเคอร์เนลสามารถหยุดหรือล้มเหลวได้อย่างง่ายดายในขณะที่ใช้งานโค้ดที่ไม่ค่อยได้ใช้งานทำให้ระบบไฟล์ของคุณอยู่ในสถานะไม่ดี
200_success

1
จริง - แต่คุณไม่ต้องการยุ่งกับตารางพาร์ติชันที่ติดตั้งระบบไฟล์ นั่นเป็นเหตุผลที่ฉันเริ่มต้นด้วย fs unmounted
Flup

1
สำหรับ ext4 อาจใช้resize4fsแทน RHEL 5
Zac Thompson

1
การขยายพาร์ติชันด้วยระบบไฟล์รูทของคุณน่าจะใช้ได้ดีตราบใด: 1.คุณไม่ต้องเปลี่ยนหมายเลขเซกเตอร์เริ่มต้น 2.คุณรีบูตหลังจากเปลี่ยนตารางพาร์ติชันก่อนทำตามขั้นตอนถัดไป
kasperd

ส่วนหนึ่งปฏิเสธที่จะปรับขนาดพาร์ติชัน ext4 บน CentOS 6
reinierpost

21

ใช่คุณสามารถขยาย EXT4 fs ออนไลน์ได้หากคุณมีพาร์ติชันที่เรียงไว้แล้ว คุณมีพาร์ทิชันที่จัดเรียง? คุณมี LVM หรือไม่

sudo resize2fs /dev/drive_to_grow

fdiskจะปรับขนาดพาร์ติชันของคุณเป็นจริง แต่ถ้านี่เป็นพาร์ติชันรูท ออฟไลน์มากที่สุด!

เช่นเดียวกับสิ่งที่เกี่ยวข้องกับการดำเนินงานของดิสก์ / f ฉันขอแนะนำให้มีการสำรองและทดสอบกระบวนการกู้คืนที่เข้าใจดี


หากคุณใช้fdiskตรวจสอบให้แน่ใจว่าคุณใช้ MBR ไม่ใช่ GPT (พร้อมไฮบริด MBR เป็นตัวอย่าง)
stek29

2
บนเซิร์ฟเวอร์ XEN debian ของฉันฉันปรับขนาดโลจิคัลวอลุ่มของฉันด้วยlvextend +40G /dev/vg0/volumeNameจากนั้นล็อกอินเป็น root ใน vm และป้อนresize2fs /dev/xvda2ซึ่งทำให้ระบบไฟล์รูทที่รันอยู่เพิ่มขึ้นเป็น max ใหม่ ฉันไม่แน่ใจว่าจำเป็นหรือไม่ แต่ฉันรีบูต vm หลังจากดำเนินการนี้ ทุกอย่างดูดี
rubo77

1
@ rubo77 ไม่ไม่ต้องรีบูท
Chris

5

หมายเหตุบนเซิร์ฟเวอร์ VDS บางเครื่องคุณอาจมีพาร์ติชันรูทที่ไม่ใช่หลักและจำเป็นต้องปรับขนาดคอนเทนเนอร์ของพาร์ติชันเสริมก่อน

ตัวอย่างเช่นคุณเพิ่งอัปเกรดแผนของคุณและมีลักษณะดังนี้:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

ที่นี่ / dev / vda2 - เป็นคอนเทนเนอร์แบบขยายของคุณ และ / dev / vda5 - พาร์ติชั่นหลักที่เราต้องการปรับขนาดให้เต็มพื้นที่ว่าง

วิธีที่ง่ายที่สุด:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

สิ่งที่ช่วยฉันได้จริงๆคือการได้เห็นว่าคุณสามารถตั้งค่าENDเป็นจำนวนลบได้ โดยปกติแล้วคุณไม่ทราบขนาดที่แน่นอนของลินุกซ์พาร์ทิชันปรับขนาด - คุณไม่ทราบวิธีการตั้งข้อโต้แย้งของEND resizepartการตั้งค่าเป็น-1sจะปรับขนาดพาร์ติชันของคุณเป็นสูงสุด
srigi

ข้อผิดพลาด: โทเค็น -1 ไม่ถูกต้อง
starbeamrainbowlabs

3

แยกไม่ทำงานบน ext4 บน Centos ฉันต้องใช้ fdisk เพื่อลบและสร้างพาร์ติชันใหม่ซึ่ง (ฉันตรวจสอบความถูกต้อง) ทำงานได้โดยไม่สูญเสียข้อมูล ผมทำตามขั้นตอนที่http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ ที่นี่พวกเขาอยู่ในสรุป:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w

1
ยินดีต้อนรับสู่ Server Fault! โปรดสรุปขั้นตอนต่าง ๆ ในคำตอบเพื่อป้องกันการเชื่อมโยงที่เน่า
200_ ประสบความสำเร็จ

ใช้กระบวนการนี้ แต่ใช้ gdisk เพื่อสร้างพาร์ติชัน สิ่งนี้ทำให้ฉันสามารถบันทึกข้อมูลและสร้างพาร์ติชันที่มีขนาด> 2TB
pcnate

2

partedสามารถresizeแบ่งพาร์ติชั่นและระบบไฟล์ได้


ขอบคุณฉันใช้กราฟิกและไม่รองรับการปรับขนาดพาร์ติชัน ฉันเห็นตัวเลือกในโปรแกรม cli แต่คุณสามารถบอกฉันได้ว่าจะใช้มันอย่างไรโดยไม่สูญเสียข้อมูล? ในresize NUMBER START ENDคือเริ่มต้นและสิ้นสุดหมายเลขภาคหรือไม่ ฉันจะรู้ได้อย่างไร
mimipc

ขอแนะนำเสมอให้สำรองข้อมูลของคุณก่อนที่จะทำการดำเนินการที่มีความเสี่ยงเช่นการปรับขนาดพาร์ติชัน partedรองรับตัวเลือกหน่วย - ตัวอย่างเช่นใช้sส่วนต่อท้ายสำหรับเซ็กเตอร์BหรือGBไบต์%สำหรับเปอร์เซ็นต์ของขนาดอุปกรณ์และcylสำหรับกระบอกสูบ
200_success

2

คุณสามารถใช้fdiskหรือcfdiskการปรับเปลี่ยน (หรือสร้างใหม่อีกครั้ง) พาร์ทิชัน (เพียงให้แน่ใจว่าคุณจะไม่เปลี่ยนแปลงเขตแดนเริ่มต้น) resize2fsแล้วเริ่มต้นใหม่และ แต่โดยทั่วไปแล้วเราแนะนำให้ใช้ LVM-2 แทน MBR / GPT เนื่องจากจะช่วยให้คุณสามารถนำการเปลี่ยนแปลงเหล่านั้นได้โดยไม่ต้องรีบูตเครื่องเคอร์เนล


1

เพียงชี้แจงให้ชัดเจนว่าฉันทำสิ่งนี้กับใครที่ยังอ่านหัวข้อนี้อยู่
หากเป็นพาร์ติชันสำหรับเริ่มระบบที่คุณต้องการปรับขนาดคุณต้องบูตจากไดรฟ์ bootcd หรือ bootusb "rescue" ซึ่งเป็นเพียง Live Linux สิ่งนี้ช่วยให้คุณสามารถรัน Linux บนเครื่องอื่นจากนั้นเป็นไดรฟ์ที่คุณต้องการเปลี่ยนแปลง

ฉันคิดว่า cd "usb" หรือ "กู้ภัย" ที่ดีที่สุดในกรณีนี้จะเป็น
เคสUSB หรือ CD ที่สามารถบู๊ตได้ซึ่งคุณต้องใช้อิมเมจการกู้ภัย
1. พาร์ติชันที่จะขยายคือพาร์ติชั่นสุดท้าย แต่คุณบูตจากมัน
sda1 = boot (หรือ swap)
sda2 = swap (หรือ boot)
sda3 = /
พื้นที่ที่ไม่ได้ใช้

  1. หากพาร์ติชันที่จะขยายไม่ใช่พาร์ติชั่นสุดท้ายคุณต้องใช้อิมเมจการบูต gparted เพื่อย้ายหรือปรับขนาดพาร์ติชัน
    sda1 = boot
    sda2 = / (พาร์ติชั่นที่จะขยายไม่อยู่สุดท้าย)
    sda3 = swap
    พื้นที่ที่ไม่ได้ใช้

หากคุณต้องการเปลี่ยนพาร์ติชันที่เมาท์ซึ่งไม่ใช่พาร์ติชัน "รูท" (/) เช่น / home ซึ่งเป็นพาร์ติชันที่แตกต่างกันคุณไม่จำเป็นต้องใช้อิมเมจการช่วยเหลือ โดยเฉพาะอย่างยิ่งถ้าเป็นพาร์ติชันสุดท้าย
sda1 บูต =
sda2 = /
sda3 = / home
ที่ไม่ได้ใช้พื้นที่
หรือ
sda1 = /
sda2 = / home
พื้นที่ไม่ได้ใช้

นี่คือสถานการณ์ที่ฉันมีเมื่อฉันถ่ายภาพจากไดรฟ์ขนาดเล็กหรือ SSD และย้ายไปยัง SSD ที่มีขนาดใหญ่กว่า

ในกรณีนี้คุณเพียงแค่ต้องถอนติดตั้ง / กลับบ้านในขณะที่คุณขยาย แต่สำหรับ unmount / home คุณต้องแน่ใจว่าคุณไม่ได้ลงชื่อเข้าใช้บัญชีผู้ใช้ใด ๆ ที่มีโฮมไดเรกทอรีอยู่ภายใน เนื่องจากโฮมไดเร็กตอรี่ของผู้ใช้ "root" อยู่ภายใต้รูทของระบบ / เหมือนใน / root, หากคุณสามารถล็อกอินเข้าสู่รูทได้, จากนั้นคุณสามารถ unmount / home ได้

ฉันออกจากเซสชัน GUI (KDE / Gnome / ฯลฯ ) และใช้ [CTRL] + [ALT] + [F1] เพื่อเปิดเซสชันเชลล์
หากคุณเพิ่งลงชื่อออกจากการเข้าสู่ระบบของผู้ใช้อาจใช้เวลา Linux 20-30 วินาทีในการปิดไฟล์ใด ๆ ให้เสร็จดังนั้นคุณอาจได้รับข้อผิดพลาดในการพยายามติดตั้ง / ใช้งานที่บ้าน
1. umount / home (ฉันลองคำสั่งนี้อีกครั้งถ้ามันล้มเหลวนานถึง 30 วินาทีจากนั้นไปดูที่เซสชั่นอื่น ๆ เพื่อดูว่าฉันเป็น "cd / home / xxx" ที่ไหนสักแห่ง)
2. แยก / dev / sda
a ปรับขนาด x (x = พาร์ทิชันที่คุณต้องการปรับขนาดการใช้งาน "p" ที่จะได้รับรายชื่อของพาร์ทิชัน)
ข ป้อนเซ็กเตอร์สุดท้ายของการปรับขนาด = "-1" (ลบ 1 หมายถึง 1 เซกเตอร์จากจุดสิ้นสุดดิสก์)
c q (ออกจากกัน)
3 resize2fs / dev / sda "x" (x = พาร์ติชั่นที่จะปรับขนาดอีกทั้งยังเป็นการติดตั้งระบบไฟล์ใหม่)
4. df -m (ฉันตรวจสอบ / ที่บ้านเพื่อตรวจสอบว่ามีการปรับขนาด)
ฉันไม่เคยสูญเสียไฟล์หรือไดรฟ์เสียหายโดยใช้วิธีนี้

โชคดี


และคุณยังไม่ได้สำรองข้อมูล
Deer Hunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.