เพิ่มขนาดพาร์ติชันที่ติดตั้ง Ubuntu หรือไม่


60

ฉันติดตั้ง Ubuntu ไว้ในไดรฟ์แล้ว ปัญหาคือว่าพื้นที่ดิสก์เหลือน้อย นี้ติดตั้งบน vmware ฉันขยายไดรฟ์เสมือนและบู๊ตเป็นอูบุนตู แต่เมื่อฉันเปิด gparted (sudo gparted) ตัวเลือกย้าย / ปรับขนาดไม่พร้อมใช้งาน นี่คือพาร์ติชันที่ติดตั้งบน Ubuntu แต่ฉันจำเป็นต้องปรับขนาด ความคิดใด ๆ ฉันสบายใจที่ใช้บรรทัดคำสั่ง


คุณสามารถดูวิธีที่พวกเขาทำraspi-configกับ Raspberry Pi ซึ่งการขยายระบบไฟล์รูทเป็นสิ่งที่คุณทำเกือบทุกครั้งที่คุณตั้งค่า Raspberry Pi ใหม่ github.com/RPi-Distro/raspi-config/blob/…
sshow

คำตอบ:


16

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


139

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

นี่คือรายการของขั้นตอนสำหรับสถานการณ์ง่าย ๆ ที่คุณมีสองพาร์ติชัน/dev/sda1คือพาร์ติชัน ext4 ที่ OS ถูกบูทจากและ/dev/sdb2มีการสลับ สำหรับแบบฝึกหัดนี้เราต้องการที่จะลบพาร์ติชั่นสว็อปและขยาย/dev/sda1ไปยังดิสก์ทั้งหมด

  1. เช่นเคยตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรองของคุณเนื่องจากเรากำลังจะปรับเปลี่ยนตารางพาร์ทิชันมีโอกาสที่จะสูญเสียข้อมูลทั้งหมดของคุณหากคุณพิมพ์ผิด

  2. วิ่ง sudo fdisk /dev/sda

    • ใช้pเพื่อแสดงรายการพาร์ติชัน จดบันทึกกระบอกสูบสตาร์ทของ/dev/sda1
    • ใช้dเพื่อลบพาร์ทิชัน swap ก่อน ( 2) จากนั้น/dev/sda1พาร์ติชัน สิ่งนี้น่ากลัวมาก แต่ไม่เป็นอันตรายจริง ๆ เนื่องจากข้อมูลไม่ได้ถูกเขียนลงดิสก์จนกว่าคุณจะเขียนการเปลี่ยนแปลงลงดิสก์
    • ใช้nเพื่อสร้างพาร์ติชันหลักใหม่ ตรวจสอบให้แน่ใจว่ากระบอกสูบสตาร์ทนั้นตรงกับที่/dev/sda1เคยใช้ สำหรับกระบอกสูบปลายเห็นด้วยกับตัวเลือกเริ่มต้นซึ่งจะทำให้พาร์ทิชันเพื่อขยายดิสก์ทั้งหมด
    • ใช้aเพื่อสลับการตั้งค่าสถานะที่สามารถบูตได้ในใหม่/dev/sda1
    • ตรวจสอบการเปลี่ยนแปลงของคุณหายใจเข้าลึก ๆ และใช้wเพื่อเขียนตารางพาร์ติชันใหม่ลงในดิสก์ คุณจะได้รับข้อความแจ้งว่าเคอร์เนลไม่สามารถอ่านตารางพาร์ติชันได้อีกครั้งเนื่องจากอุปกรณ์ไม่ว่าง แต่ก็ไม่เป็นไร
  3. sudo rebootรีบูตเครื่องด้วย เมื่อบูทระบบคุณจะมีขนาดเล็กระบบแฟ้มอาศัยอยู่ภายในขนาดใหญ่พาร์ทิชัน

  4. resize2fsคำสั่งต่อไปคือความมหัศจรรย์ เรียกใช้sudo resize2fs /dev/sda1- แบบฟอร์มนี้จะทำให้ระบบไฟล์ใช้พื้นที่ทั้งหมดที่มีอยู่บนพาร์ติชัน

เพียงแค่เราปรับขนาดพาร์ติชันที่ติดตั้ง Ubuntu ไว้โดยไม่ต้องบูตจากไดรฟ์ภายนอก


@EliahKagan: โปรดดูคำตอบ (จาก Gilles) ฉันเชื่อมโยงกับ แนวคิดก็คือมันเป็นไปได้ที่จะใช้fdiskเพื่อขยายพาร์ติชันในขณะที่ระบบปฏิบัติการยังคงใช้ระบบไฟล์ขนาดเล็ก แล้วก็ หลังจากรีบูตหลังจากเคอร์เนลอ่านตารางพาร์ติชันที่อัปเดตแล้วเราสามารถปรับขนาดระบบไฟล์ได้เพราะตอนนี้มันอยู่ในพาร์ติชั่นที่ใหญ่
Sergey

1
@Isaac: ใช่เรายังต้องรีบูตเพื่อทำให้เคอร์เนลอ่านตารางพาร์ติชันอีกครั้ง อย่างไรก็ตามการรีบูตอย่างรวดเร็วในหลาย ๆ สถานการณ์เป็นปัญหาที่เล็กกว่าการบู๊ตจากสื่อภายนอก (คิดว่าเครื่องรีโมต, เครื่องหัวขาด, VPSes และอื่น ๆ )
Sergey

2
หมายเหตุสั้น ๆ สองข้อ: 1. คุณสามารถใช้dfเพื่อแสดงพื้นที่ "ส่งผล" หลังจากนี้ (ยืนยันว่ามันใช้งานได้) และ 2. อย่าลืมสร้างพื้นที่สว็อปขึ้นใหม่!
Christian Rondeau

1
ขอบคุณมาก. Ubuntu ไม่เคยใช้พื้นที่ที่ฉันให้กับ VirtualBox vdisk ตอนนี้ฉันรู้ว่าทำไม ขอบคุณมาก!
penderi

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

21

สองวิธี

1. ผ่านการทดสอบใน Ubuntu Server 16.04 ถึง 18.10

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

ตัวอย่างต่อไปนี้กำลังขยายวอลุ่มบนรูทพาร์ติชันบนระบบที่ใช้ LVM อยู่แล้ว

  1. sshเข้าสู่ระบบสลับไปที่รูทและเรียกใช้cfdisk
    # cfdisk

  2. ป้อนคำอธิบายรูปภาพที่นี่

  3. ป้อนคำอธิบายรูปภาพที่นี่

  4. ป้อนคำอธิบายรูปภาพที่นี่

  5. ป้อนคำอธิบายรูปภาพที่นี่

  6. ป้อนคำอธิบายรูปภาพที่นี่

  7. ป้อนคำอธิบายรูปภาพที่นี่

  8. ป้อนคำอธิบายรูปภาพที่นี่

  9. ป้อนคำอธิบายรูปภาพที่นี่

  10. ป้อนคำอธิบายรูปภาพที่นี่

  11. ป้อนคำอธิบายรูปภาพที่นี่

  12. ป้อนคำอธิบายรูปภาพที่นี่

  13. หลังจากออกจาก cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. รีบูทระบบก่อนขั้นตอนถัดไป (มิฉะนั้นคุณอาจได้รับDevice /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. เริ่มต้นปริมาณใหม่

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. รับชื่อของโวลุ่มเพื่อขยาย

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. ขยายกลุ่มวอลุ่ม

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. ขยายราก

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. รับชื่อระบบไฟล์สำหรับขั้นตอนต่อไป

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. ขยายระบบไฟล์

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. ดูขนาดที่เพิ่มขึ้น

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. วิธีที่เร็วกว่าทดสอบใน Ubuntu Server 18.04.3 LTS

วิธีนี้เร็วกว่าวิธีแรกเล็กน้อย นี่เป็นเพราะตัวเลือกใหม่ในcfdiskเมนูที่เรียกว่า"ปรับขนาด"ที่บันทึกบางขั้นตอน

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

ตัวอย่างต่อไปนี้กำลังขยายวอลุ่มบนรูทพาร์ติชันบนระบบที่ใช้ LVM อยู่แล้ว

  1. sshcfdiskเข้าสู่ระบบสลับไปที่รากและเรียกใช้

  2. เลือกพาร์ติชันเพื่อขยายและเลือก "ปรับขนาด" ป้อนคำอธิบายรูปภาพที่นี่

  3. ตั้งค่า "ขนาดใหม่" ป้อนคำอธิบายรูปภาพที่นี่

  4. หลังจากกด Enter คุณจะเห็นหน้าจอพร้อมหมายเหตุต่อไปนี้ "Partition [someNumber] resized": ป้อนคำอธิบายรูปภาพที่นี่

  5. ต่อไปคุณจะต้อง "เขียน" (บันทึก) การเปลี่ยนแปลงของคุณ: ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

  6. cfdiskเลิก เมื่อคุณออกคุณอาจเห็นข้อความ "ซิงค์ดิสก์" ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

  7. ฉันรีบูทระบบของฉัน ณ จุดนี้ แต่มันอาจไม่จำเป็น ตอนนี้คุณสามารถรับได้จากขั้นตอนที่ 19 จากวิธีแรก (ทำซ้ำด้านล่าง)

  8. (19) รับชื่อระบบไฟล์สำหรับขั้นตอนต่อไป

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) ขยายระบบไฟล์

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) ดูขนาดที่เพิ่มขึ้น

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

บทความ:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm


ว้าว. สิ่งนี้มีประโยชน์มาก หวังว่าฉันจะสามารถโหวตมากกว่าหนึ่งครั้ง ขอบคุณ!
Mario Tacke

1
ทำงานอย่างสมบูรณ์แบบใน 18.10 วิ่งภายใต้ ESXi ขอบคุณ!
John Vinopal

สุดยอดจริงๆสิ่งที่ฉันต้องการในฐานะ linux noob .
bigbadmouse

สุดยอดคู่มือ! ติดตามสิ่งนี้เพื่อขยายพื้นที่เก็บข้อมูลบน Ubuntu ที่ทำงานเป็น Proxmox VM
tokenizer_fsj

Fantastic! ขอบคุณสำหรับสิ่งนี้. สิ่งนี้ใช้ได้กับ 18.04 ที่ทำงานบน ESXi
one.time

0

คำตอบจาก Sergey นั้นยอดเยี่ยม หากคุณมีพื้นที่ว่างไม่ได้อยู่ในอุปกรณ์ถัดไปโดยตรงคุณจะต้องลบอุปกรณ์อื่น ตัวอย่างเช่น:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

ในกรณีข้างต้นหากคุณต้องการผสาน/dev/sda3กับ/dev/sda1คุณจะต้องลบ/dev/sda1, /dev/sda2และ/dev/sda3(ที่มีdคำสั่ง) และเพิ่ม/dev/sda2และปรับปรุงประเภทของ (ที่มีnและtคำสั่ง)


0

ผมประสบความสำเร็จในการขยายพาร์ทิชัน ext4 หลักของฉันโดยใช้วิธีการที่อธิบายไว้ที่นี่

บันทึกบางส่วนจากประสบการณ์ส่วนตัวของฉัน:

  • ตัวอย่างการเชื่อมโยงใช้สำหรับลดขนาดพาร์ติชันดังนั้นใบสั่งจะถูกปรับขนาด 2fs ก่อนแล้วจึง fdisk เมื่อขยายพาร์ติชัน (เช่นในกรณีของฉัน) ใบสั่งควร fdisk ก่อนรีบูตแล้ว resize2fs นอกจากนี้เมื่อใช้ fdisk พาร์ทิชันหลักและพาร์ติชันเสริมควรถูกลบออกและกำหนดใหม่
  • ฉันบูตอูบุนตูจากไดรฟ์อื่นแล้วทำงานกับไดรฟ์นี้ซึ่งจริงๆแล้วเป็น Mirror (ใช้ dd) ของไดรฟ์รุ่นเก่า ทำให้สามารถบูตได้โดยใช้ GParted
  • รุ่นปัจจุบันของ resize2fs (ฉันใช้ Ubuntu 12.04LTS) รองรับ ext4 - ไม่จำเป็นต้องทำตามที่อธิบายไว้ในลิงก์ของการเปลี่ยนแปลง ext2

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