ฉันจะปรับขนาดพาร์ติชั่นรูท ext ใน runtime ได้อย่างไร


236

ฉันจะเพิ่มขนาดพาร์ติชันรูทของระบบตอนรันไทม์ได้อย่างไร?

ฉันมีพาร์ติชั่นที่ไม่ได้ถูกจัดสรรหลังรูทพาร์ติชั่น (ซึ่งก็คือ ext4) ฉันจะเพิ่มพื้นที่ที่ไม่ได้ปันส่วนให้กับพื้นที่ที่จัดสรรให้กับพาร์ติชั่นรูทโดยไม่ต้องปิดเซิร์ฟเวอร์ได้อย่างไร?


3
ฉันเกลียดที่จะฟังดูเหมือนติดอยู่ในโคลน แต่สิ่งนี้มีความเสี่ยงอยู่บ้างไหม? ทำไมสิ่งนี้จึงต้องเกิดขึ้น? ข้อ จำกัด ที่สำคัญคืออะไร?
Cloud

คุณไม่สามารถปรับขนาดพาร์ติชันไปทางซ้ายได้เพราะนั่นเป็นการย้าย
Zaz

5
การเพิ่มขนาดของ ext4 parititions ออนไลน์เป็นเรื่องง่าย ส่วนที่ยากจะลดขนาดลง (หัวข้อของคุณเกี่ยวกับ "การปรับขนาด") สำหรับผู้ที่สนใจโดยการจัดการใด ๆ บนพาร์ติชันรูท (ย้าย, ลดขนาด, เปลี่ยนระบบไฟล์, อุปกรณ์) ที่รันไทม์ควรศึกษาคำตอบของฉัน: askubuntu.com/a/728141/21888
vaab

ใช้growpart
guettli

คำตอบ:


214

GUI (Ubuntu 14.04 ขึ้นไป) : GParted v0.17 และใหม่กว่าเป็น GUI ที่ดีสำหรับสิ่งนี้ (เวอร์ชั่นที่เก่ากว่าจะปฏิเสธที่จะปรับขนาดพาร์ติชันที่เมาท์)

บรรทัดคำสั่ง (ทุกรุ่นของ Ubuntu): มีสามขั้นตอนดังนี้

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

นี่คือวิธีที่ฉันทำ: ใช้fdiskเพื่อลบพาร์ติชันก่อน (แนวคิดคือข้อมูลบนดิสก์จะถูกเก็บรักษาไว้) จากนั้นสร้างใหม่อย่างระมัดระวังด้วยขนาดที่ใหญ่กว่าในตำแหน่งเดียวกัน

ตัวอย่าง:

$ sudo fdisk /dev/sda

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9437183     4717568   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    10485759     5241856   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 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)
Syncing disks.

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

เป็นทางด้านความปลอดภัยที่คุณอาจเรียกคืนธงบูต (ซึ่งเป็นไปตามวิกิพีเดียยังคงจำเป็นต้องใช้ในคอมพิวเตอร์บางเครื่อง) aโดยการกด

ดูในส่วนความคิดเห็นว่าจะทำอย่างไรถ้าพาร์ติชั่นสว็อปของคุณอยู่ระหว่างทาง

โดยตอนนี้มันควรจะชัดเจนว่าทำไมคนแนะนำให้ใช้ซีดีสด ;-)

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

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

ตัวอย่าง:

$ sudo resize2fs /dev/sda1

16
มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน อย่างไรก็ตามฉันยังให้แน่ใจว่าการตั้งค่าสถานะการบูตที่เก็บไว้เป็นสถานะเดิม
Augustus Kling

4
@ jbo5112: ตามที่fdiskกล่าวไว้partprobeหรือkpartxอาจทำงานแทนการรีบูต ดูคำถามนี้ด้วย แม้ว่าคุณจะเริ่มระบบใหม่ แต่วิธีการแก้ปัญหายังคงดีกว่าหากใช้แผ่นซีดีจริงเมื่อถึงเวลาที่เครื่องหยุดทำงานซึ่งการเริ่มระบบแบบง่ายอาจน้อยกว่า 10 วินาทีสำหรับเครื่องเสมือน นอกจากนี้ยังเร็วขึ้นในเวลาผู้ปฏิบัติงานซึ่งเป็นเหตุผลที่ฉันมักจะใช้วิธีนี้ด้วยตนเอง :)
SørenLøvborg

1
@ เรย์มอนด์: หากความดันหน่วยความจำอนุญาต (ดูfree -h) ให้ปิดการใช้งาน swap ( swapoff /dev/sda2) เปลี่ยนตารางพาร์ติชัน (รวมถึงการลบและสร้างพาร์ทิชัน swap) และ 1) รีบูตหรือ 2) โหลดตารางพาร์ติชันswaponอีกครั้ง (หากหน่วยความจำแน่นเกินไปที่จะปิดการใช้งานการสับเปลี่ยนชั่วคราวคุณยังสามารถสร้างและเปิดใช้งานพาร์ทิชัน swap ใหม่/dev/sda3 ) ( ) จากนั้น swapoff sda2แต่คุณจะต้องอัปเดต/etc/fstabชื่ออุปกรณ์ swap ใหม่)
SørenLøvborg

1
หากคุณใช้ vmware และขยายขนาดของดิสก์คุณจะต้องเรียกใช้ดิสก์ sudo lshw -C เพื่อสแกนระบบไฟล์อีกครั้งเพื่อให้ vm รู้จักไดรฟ์ที่ใหญ่กว่า จากนั้นทำตามคำแนะนำด้านบน
Guy

2
สิ่งที่เกี่ยวกับการหดตัว?
Aaron Franke

114

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

sudo resize2fs /dev/sda1

แก้ไข: ไม่อนุญาตให้มีการลดขนาดแบบออนไลน์:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported

55
จากman resize2fs: The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8).คำถามนี้เป็นคำถามเกี่ยวกับการปรับขนาดพาร์ทิชันไม่ระบบแฟ้ม ความแตกต่างนั้นบอบบาง แต่สำคัญมาก
Eliah Kagan

8
คุณสามารถใช้ fdisk เพื่อลบส่วนของรูทแล้วสร้างมันใหม่ที่บล็อกเริ่มต้นเดียวกัน fdisk จะเขียนการเปลี่ยนแปลง แต่จะไม่มีผลจนกว่าจะรีบูต หลังจากรีบูตคุณสามารถใช้โปรแกรม resize2fs เพื่อส่งดิสก์เพื่อเติมพาร์ทิชัน
James Becwar

3
ฉันเพิ่งปรับขนาดพาร์ติชันรูต ext4 ออนไลน์ ดังนั้นฉันสามารถยืนยันได้ว่าเป็นไปได้ แต่แทนที่จะผ่าน / dev / sda * เป็นพารามิเตอร์เพื่อปรับขนาด 2fs คุณต้องผ่านชื่อโลจิคัลวอลุ่ม
CDR

10
ฉันพบย่อหน้าแรกของmanpage resize2fsที่น่าสนใจที่สุดสำหรับคำถามเริ่มต้น:The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.).
mo '

5
กรุณาอย่าโคลนfdiskเมื่อgrowpartจะทำสิ่งนี้ได้อย่างง่ายดายสำหรับคุณ
STRML

54

ทางออกที่ง่ายขึ้น - ใช้growpart <device> <partition>:

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

เช่นเคยสำรองตารางพาร์ติชันของคุณ ( sfdisk -d /dev/xvda > partition_bak.dmp) ในกรณี


สิ่งที่เกี่ยวกับการหดตัว?
Aaron Franke

หวังที่จะใช้วิธีการนี้ แต่ได้sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table(โดยใช้บูตคู่กับหน้าต่าง)
monkut

การหดตัวเป็นไปไม่ได้ที่จะทำออนไลน์ ฉันแนะนำให้ใช้gpartedสำหรับมัน
STRML

4
growpart เป็นส่วนหนึ่งของ cloud-utils ในกรณีที่คุณไม่ได้ติดตั้งคุณสามารถติดตั้งด้วยapt-get install cloud-utils
klor

1
@monkut ไปงานปาร์ตี้ช้า แต่มีโอกาสมากที่ดิสก์ของคุณ /dev/nvme0n1p5 คือพาร์ติชัน 5 บนดิสก์นี้ เปรียบเทียบกับแผ่นดิสก์ BSD แบบดั้งเดิมพวกเขาใช้รูปแบบการกำหนดหมายเลขที่คล้ายกัน
ต่อ Lundberg

12

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

โซลูชันทั่วไปที่ฉันใช้จะทำงานกับโซลูชันเฉพาะหรือ VPS ทุกประเภท

TLDR; วิธีการแก้ปัญหานี้เกี่ยวข้องกับpivot_rootเพื่อtmpfsให้คุณสามารถumountแบ่งพาร์ติชันของคุณอย่างปลอดภัยและอยู่กับมันได้อย่างปลอดภัย เมื่อเสร็จแล้วคุณจะpivot_rootกลับไปที่พาร์ติชันรูทใหม่ของคุณ

สิ่งนี้ช่วยให้การจัดการใด ๆ บนระบบไฟล์รูทค่อนข้างมาก (ย้ายเปลี่ยนระบบไฟล์เปลี่ยนอุปกรณ์ทางกายภาพ ... )

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

ฉันใช้สิ่งนี้เป็นการส่วนตัวและใช้งานได้ดีกับระบบ debian เช่นกันดังนั้นจึงควรใช้กับ Ubuntu ฉันประหลาดใจมากที่ไม่เห็นโซลูชันในเชิงลึกนี้เชื่อมโยงกับคำถามมากมายในเว็บไซต์ stackexchange ที่เกี่ยวข้องกับปัญหาเดียวกัน

หมายเหตุ:แน่นอนถ้าคุณต้องการขยายพาร์ติชันของคุณความเรียบง่ายresize2fsจะเพียงพอตามที่ระบุไว้ในหลาย ๆ ที่และในคำตอบอื่น ๆ ที่นี่


4
ฉันคิดว่าสำหรับคนส่วนใหญ่เมื่อคุณหยุดโปรแกรมและบริการทั้งหมดที่เข้าถึงพาร์ติชันรูทคุณอาจรีบูตเครื่อง สำหรับการย่อ / ย้ายนั่นอาจยังเร็วกว่าการใช้ซีดีสด แต่สำหรับการเติบโต (โดยงานที่พบบ่อยที่สุดและสิ่งที่ OP ถามเกี่ยวกับ) มีวิธีที่ไม่เกี่ยวข้องกับการปิดระบบชั่วคราวของระบบส่วนใหญ่ .
SørenLøvborg

2
@ SørenLøvborg: คุณสามารถเริ่มบริการหลักที่ต้องการการผลิตอย่างต่อเนื่องในขณะที่ทำขั้นตอนอย่างเต็มรูปแบบ มีการกำหนดค่ามากมายที่คุณไม่สามารถใส่ LiveCD (อินสแตนซ์ VPS, เซิร์ฟเวอร์เฉพาะ ... ) หรือสถานการณ์ที่คุณต้องการหลีกเลี่ยงการรีบูตเครื่องด้วยเหตุผลบางประการ ชื่อเรื่องของคำถามเดิมกล่าวถึง "การปรับขนาด" ซึ่งดึงดูดผู้คนที่กำลังมองหาพาร์ติชันที่ลดขนาดทางออนไลน์ ** ไม่มีวิธีการอื่นที่ช่วยให้ ext4 ออนไลน์หดตัวได้ ** วิธีนี้มีความเสี่ยงซับซ้อน แต่มีประสิทธิภาพมากที่สุดและเติมข้อบกพร่องของผู้อื่น
vaab

1
กรุณาอย่าโพสต์คำตอบขึ้นอยู่กับลิงค์ภายนอก ใส่ส่วนที่เกี่ยวข้องลงในคำตอบของคุณหรือโพสต์ลิงค์เป็นความคิดเห็นคำถาม ดูวิธีการตอบคำถามสำหรับรายละเอียด
Melebius

10

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

GPartedทำตามขั้นตอนทั้งหมด - เพียงแค่อิงตาม GUI ด้านหน้า


ฉันบูทระบบของฉันด้วย Ubuntu 12.04 Live CD และฉันปรับขนาดพาร์ติชัน ext4 ด้วย GParted ทำงานได้ดีสำหรับฉัน อย่างไรก็ตามก่อนการดำเนินการนี้ฉันสำรองข้อมูลสำคัญทั้งหมดของฉันไว้
StandDuPp

ฉันคิดว่า gparted ต้องการพาร์ติชันที่ไม่ได้ต่อเชื่อม แต่ฉันอาจจะผิด
Nick

คำถามชัดเจนเกี่ยวกับพาร์ติชันที่พวกเขาบูทจากและการบู๊ตซีดีสดต้องรีสตาร์ทเครื่อง -1
wjandrea

5

เพิ่งปรับขนาดพาร์ติชันรูต ext4 บนระบบที่ใช้งานจริงในขณะที่รูทเมาต์เสร็จแล้ว

[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[root@habib i686]# 

5

ฉันต้องการสร้างส่วนขยายตามคำตอบของ @ SørenLøvborg: ขยายพาร์ติชั่นด้วยพาร์ทิชัน swap ปัจจุบัน

ก่อนอื่นเค้าโครงของดิสก์หลังจากขยายมัน:

$sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start      End        Size       Type      File system     Flags
        63s        2047s      1985s                Free Space
 1      2048s      10485759s  10483712s  primary   ext4            boot
        10485760s  10487805s  2046s                Free Space
 2      10487806s  12580863s  2093058s   extended
 5      10487808s  12580863s  2093056s   logical   linux-swap(v1)
        12580864s  14335999s  1755136s             Free Space

ดังนั้น sda1 จะต้องมีการขยายด้วยพื้นที่ว่างที่ส่วนท้ายของดิสก์ แต่พาร์ทิชัน swap อยู่ระหว่างพวกเขา นี่คือวิธีที่คุณสามารถทำได้:

ก่อนอื่นเราต้องปิดการแลกเปลี่ยน ตรวจสอบว่ามีการใช้งานเท่าใดและคุณสามารถปิดได้

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M         52M        464M        3.2M        475M        784M
Swap:          1.0G          0B        1.0G

การแลกเปลี่ยนไม่ได้ใช้ที่นี่เพื่อให้เราสามารถปิดได้

$sudo swapoff /dev/sda5

ตอนนี้เราจะเปลี่ยนตารางพาร์ติชัน:

$sudo fdisk /dev/sda

(หมายเหตุ: หากคุณมีพาร์ติชั่นแรกเริ่มที่ภาค 63 แทน 2048 คุณจะต้องเพิ่มตัวเลือก-c=dos)

Welcome to fdisk (util-linux 2.27.1).
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/sda: 6.9 GiB, 7340032000 bytes, 14336000 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: dos
Disk identifier: 0x9e11c6df

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 10485759 10483712    5G 83 Linux
/dev/sda2       10487806 12580863  2093058 1022M  5 Extended
/dev/sda5       10487808 12580863  2093056 1022M 82 Linux swap / Solaris

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

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 12242941

Created a new partition 1 of type 'Linux' and of size 5.9 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):

Created a new partition 2 of type 'Linux' and of size 1022 MiB.

Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is enabled now.

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).

หมายเหตุ: ขนาดของ sda1 คือยอดรวมของภาคลบด้วยขนาดเซกเตอร์ของพาร์ติชั่นสว็อปของคุณ: 14335999-2093058 = 12242941

ในฐานะที่เป็น fdisk กล่าวถึง: เคอร์เนลยังคงใช้ตารางพาร์ทิชันเก่าดังนั้นเราจึงจำเป็นต้องโหลดใหม่

$partprobe

ตอนนี้เราจำเป็นต้องเรียกใช้ resize2fs บน sda1 (อย่าลืมสิ่งนี้!)

$resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.

ตอนนี้สิ่งต่าง ๆ ยังไม่จบ ตามที่คุณอาจสังเกตเห็นว่า sda2 ถูกแบ่งพาร์ติชันเป็นประเภท Linux (Ext4) ด้วยเหตุผลบางอย่างไม่มีวิธีใน fdisk ในการเลือกประเภท ดังนั้นเราต้องเลือกใช้มันcfdisk

$ sudo cfdisk

เลือก sda2 และเปลี่ยนประเภทเป็น82 Linux swap / Solarisและให้แน่ใจว่าคุณเขียน (พิมพ์ใช่เพื่อยืนยัน)

ตอนนี้เราสามารถเปิดใช้งานการแลกเปลี่ยนอีกครั้ง

$mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0

และในที่สุดก็เปิดใช้งาน:

$swapon /dev/sda2

สิ่งเดียวที่เราต้องทำคืออัพเดต fstab เพื่อติดตั้ง swap partition โดยอัตโนมัติเมื่อทำการบูท

$sudo nano /etc/fstab

และเปลี่ยน UUID ของ swap partition เป็น output ด้านบน:

# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none            swap    sw              0       0

ตอนนี้ทุกอย่างดีและคุณสามารถรีบูตได้โดยไม่มีปัญหา


สำหรับการสลับประเภทพาร์ติชั่นสว็อป, สามารถทำได้ในการซื้อ fdisk เลือก t แล้ว 5 (พาร์ติชั่น 5) จากนั้น 82 (ประเภทลินุกซ์แลกเปลี่ยน / โซลาริส)
Oz Edri

ไม่ควรขยายพาร์ติชัน 2 (และใน fdisk เราควรเลือก e แทน p) นอกจากนี้คำสั่ง mkswap และ swapon ควรรันบน / dev / sda5 แทนที่จะเป็น sda2 หรือไม่
Oz Edri

1
สำหรับประเภทพาร์ทิชัน swap: ฉันพบในคำแนะนำอื่น ๆ ที่คุณสามารถเลือกประเภทใน fdisk ได้ แต่ด้วยเหตุผลบางอย่างมันไม่ทำงานในเวอร์ชั่นของฉัน อย่างไรก็ตามมันจะทำงานกับ cfdisk เสมอ
wouter205

1
สำหรับพาร์ติชัน swap: คุณสามารถใช้พาร์ติชันเสริมได้ แต่คุณต้องเพิ่มสองพาร์ติชั่น: พาร์ติชันเสริมและโลจิคัลหนึ่ง (ดูโครงร่างพาร์ติชันเริ่มต้นของฉัน) ในตัวอย่างของฉันฉันลงเอยด้วย 2 พาร์ติชั่นหลัก: sda1 - ext4 - root partition & sda2 - swap partition ดังนั้นคำสั่งmkswap& swaponจำเป็นต้องรันบน sda2 ฉันทำผิดพลาดในตอนต้นของการโพสต์ของฉัน: swapoffต้องดำเนินการใน sda5 ความคิดเห็นยินดีต้อนรับเสมอมันเป็นเรื่องยากที่จะทราบ
wouter205

1
เมื่อพาร์ทิชัน swap จะถูกเข้ารหัสหนึ่งที่มีการหยุดครั้งแรก cryptdisks ด้วยcryptdisks_stopแล้วปรับปรุง / etc / crypttab แทนและเริ่มต้นใหม่กับ/etc/fstab cryptdisks cryptdisks_start
Dmitri Chubarov

1

ผมก็ไม่ได้ประสบความสำเร็จโดยไม่ต้องนี้umount, pivot_rootหรือการกำจัดชั่วคราวของพาร์ทิชันหลักที่ใช้แยก 3.2 บน Ubuntu 16.04, 4.4.0 เคอร์เนล เพื่อความระมัดระวังฉันได้ทำทุกอย่างจากคอนโซลเสมือนที่ปิดการใช้งานเครือข่ายและถ่ายภาพไว้ล่วงหน้าในกรณี แต่ไม่จำเป็นต้องใช้สแนปชอตดังนั้นฉันจึงทำได้เช่นนี้ผ่าน SSH โดยไม่ต้องเปลี่ยนระดับแนวนอน

กำหนดขนาดพาร์ติชัน: parted /dev/sda1 print | egrep "Disk.*GB"

เลือกที่จะเปลี่ยนเป็นโหมดผู้ใช้หลายคนโดยไม่มีระบบเครือข่าย (ต้องทำจากคอนโซลไม่ใช่ SSH):

runlevel     # remember the original runlevel
init 2

อาจเลือกใช้สแนปชอตของ VM อย่างระมัดระวัง

ปรับขนาดพาร์ติชัน:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

ปรับขนาดระบบไฟล์: resize2fs /dev/sda1

หากมีสิ่งใดผิดพลาดคุณสามารถกู้คืนสแน็ปช็อตได้ที่นี่ หากทุกอย่างinit 5เรียบร้อยแล้วให้กลับสู่ระดับปกติ (ได้รับด้านบน) - ปกติ 5: มันอาจเป็นการดีกว่าที่จะทำการรีบูทเต็มรูปแบบ ณ จุดนี้เพื่อให้แน่ใจว่าทุกอย่างกลับมาอย่างถูกต้อง (ฉันมีปัญหาวันที่ / ntp หลังจากนั้น)


1

ทำตามขั้นตอนเหล่านี้

  1. เปิดเทอร์มินัลเป็น superuser su
  2. วิ่ง parted
  3. พิมพ์pเพื่อดูพาร์ติชันที่มีอยู่
  4. ระบุหมายเลขพาร์ติชันรากของคุณ (เช่น: 'sda 3' หมายถึงหมายเลข 3) และลบพาร์ติชันที่อยู่ติดกันโดยใช้rm PARTITION NUMBERเพื่อสร้างพื้นที่ว่าง
  5. ตอนนี้เพิ่มขนาดรูทโดยการพิมพ์resizepart ROOT NUMBERและรีบูตระบบหากจำเป็น
  6. ออกpartedจากการพิมพ์exitและพิมพ์เทอร์มินัลpartprobeแล้วกด Enter (สามารถทำได้แม้หลังจากรีบูตเครื่อง)
  7. ในที่สุดก็รันresize2fs /dev/sda PARTITION NUMBERและเพลิดเพลินไปกับการแบ่งพาร์ติชันที่กว้างขวาง

0

ตามที่ระบุไว้ก่อนหน้า:

  • สามารถขยายการถ่ายทอดสดจากระบบรูทได้ (ไม่ยากเนื่องจากส่วนการบู๊ตจะไม่ถูกย้าย)

  • การลดขนาดพาร์ติชันรูตสดจะต้องทำจากอุปกรณ์บูตภายนอก (บูตจากระบบ live cd / usb-stick) ราวกับว่ามีข้อผิดพลาดใด ๆ ไม่ตรงกัน .. สิ่งที่ .. ระบบของคุณค้างต้องรีบูตและในที่สุดจะไม่ สามารถบูตได้อย่างถูกต้อง

การเรียงลำดับใด ๆ "แต่ฉันทำแล้วมันใช้งานได้" เป็นโชคที่บริสุทธิ์

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