Tăng kích thước phân vùng trên Ubuntu được cài đặt?


60

Tôi đã cài đặt Ubuntu trên một ổ đĩa. Vấn đề là nó sắp hết dung lượng đĩa. Điều này được cài đặt trên vmware. Tôi đã mở rộng ổ đĩa ảo và khởi động vào Ubuntu. Nhưng khi tôi mở gparted (sudo gparted), tùy chọn di chuyển / thay đổi kích thước không khả dụng. Đây là phân vùng Ubuntu được cài đặt trên, nhưng tôi cần thay đổi kích thước nó. Có ý kiến ​​gì không? Tôi cảm thấy thoải mái khi sử dụng dòng lệnh


Bạn có thể thấy cách họ làm điều đó raspi-configcho Raspberry Pi, trong đó việc mở rộng hệ thống tập tin gốc là điều bạn làm gần như mỗi khi bạn thiết lập Raspberry Pi mới. github.com/RPi-Distro/raspi-config/blob/ từ
sshow

Câu trả lời:


16

Bạn gần như ở đó.
Bạn không thể thay đổi kích thước phân vùng bằng GParted trong khi Ubuntu đang chạy.
Bạn sẽ cần phải gắn ISO của GParted dưới dạng CD vào máy VM và khởi động lại máy để GParted sẽ được tải thay vì Ubuntu (Tôi nghĩ bạn có thể khởi động từ CD ảo bằng cách nhấn F12 ngay sau khi máy khởi động).
Khi bạn đã khởi động vào GParted, tùy chọn di chuyển / thay đổi kích thước sẽ được bật vì Ubuntu hiện không chạy.


139

Thực tế, bạn CÓ THỂ phóng to hệ thống tập tin gốc trong khi Ubuntu đang chạy (tôi đã tự học gần đây ở đây ) - điều này nghe có vẻ khó tin nhưng đó là sự thật :)

Đây là danh sách các bước cho một kịch bản đơn giản trong đó bạn có hai phân vùng, /dev/sda1là phân vùng ext4 mà HĐH được khởi động từ và /dev/sdb2được trao đổi. Đối với bài tập này, chúng tôi muốn loại bỏ phân vùng trao đổi một phần mở rộng /dev/sda1cho toàn bộ đĩa.

  1. Như mọi khi, hãy đảm bảo bạn có bản sao lưu dữ liệu của mình - vì chúng tôi sẽ sửa đổi bảng phân vùng, có thể mất tất cả dữ liệu của bạn nếu bạn tạo một lỗi đánh máy chẳng hạn.

  2. Chạy sudo fdisk /dev/sda

    • sử dụng pđể liệt kê các phân vùng. Ghi chú của xi lanh bắt đầu của/dev/sda1
    • sử dụng dđể xóa đầu tiên phân vùng trao đổi ( 2) và sau đó /dev/sda1phân vùng. Điều này rất đáng sợ nhưng thực sự vô hại vì dữ liệu không được ghi vào đĩa cho đến khi bạn ghi các thay đổi vào đĩa.
    • sử dụng nđể tạo một phân vùng chính mới. Hãy chắc chắn rằng xi lanh bắt đầu của nó là giống hệt như cũ /dev/sda1đã từng có. Đối với hình trụ cuối đồng ý với lựa chọn mặc định, đó là tạo phân vùng để mở rộng toàn bộ đĩa.
    • sử dụng ađể chuyển cờ khởi động trên mới/dev/sda1
    • xem lại các thay đổi của bạn, hít thở sâu và sử dụng wđể ghi bảng phân vùng mới vào đĩa. Bạn sẽ nhận được một thông báo nói rằng kernel không thể đọc lại bảng phân vùng vì thiết bị đang bận, nhưng không sao.
  3. Khởi động lại với sudo reboot. Khi hệ thống khởi động, bạn sẽ có một hệ thống tập tin nhỏ hơn sống trong một phân vùng lớn hơn .

  4. Lệnh ma thuật tiếp theo là resize2fs. Chạy sudo resize2fs /dev/sda1- biểu mẫu này sẽ mặc định làm cho hệ thống tập tin lấy hết dung lượng có sẵn trên phân vùng.

Vậy đó, chúng tôi vừa thay đổi kích thước phân vùng cài đặt Ubuntu mà không cần khởi động từ ổ đĩa ngoài.


@EliahKagan: Xin hãy xem câu trả lời (từ Gilles) tôi liên kết đến. Ý tưởng là có thể sử dụng fdiskđể phóng to phân vùng , trong khi HĐH tiếp tục sử dụng hệ thống tệp nhỏ hơn. Sau đó. Sau khi khởi động lại, sau khi kernel đọc lại bảng phân vùng đã cập nhật, chúng ta có thể thay đổi kích thước hệ thống tập tin vì nó hiện đang sống trong một phân vùng lớn hơn.
Sergey

1
@Isaac: Có, chúng tôi vẫn phải khởi động lại để tạo kernel để đọc lại bảng phân vùng. Tuy nhiên, khởi động lại nhanh trong nhiều tình huống là một vấn đề nhỏ hơn nhiều so với khởi động từ phương tiện bên ngoài (nghĩ về máy từ xa, máy không đầu, VPS, v.v.)
Serge

2
Hai lưu ý nhanh: 1. Bạn có thể sử dụng dfđể hiển thị không gian "kết quả" sau này (xác nhận rằng nó đã hoạt động) và 2. nhớ tạo lại một số không gian hoán đổi!
Christian Rondeau

1
Cám ơn rất nhiều. Ubuntu không bao giờ sử dụng không gian mà tôi đã cho VirtualBox vdisk. Bây giờ tôi biết tại sao. Cảm ơn nhiều!
penderi

1
@Sid: Điều rất quan trọng là xi lanh bắt đầu là giống hệt nhau. Nếu không gian trống ở bất cứ đâu nhưng ngay sau phân vùng, bạn cần sử dụng một phương pháp khác (sẽ yêu cầu khởi động từ ổ đĩa khác)
Sergey

21

Hai phương pháp

1. Đã thử nghiệm trong Ubuntu Server 16.04 đến 18.10

Sau khi mở rộng âm lượng trong VMware ESXi (tắt vm, sao lưu / xuất vm, xóa tất cả các ảnh chụp nhanh, sau đó tăng số lượng kích thước đĩa, chụp lại vm trước khi làm theo các bước tiếp theo để bạn có thể hoàn nguyên lỗi / lỗi).

Ví dụ sau đây là mở rộng âm lượng trên phân vùng gốc trên hệ thống đã sử dụng LVM.

  1. sshvào hệ thống, chuyển sang root và chạy cfdisk
    # cfdisk

  2. nhập mô tả hình ảnh ở đây

  3. nhập mô tả hình ảnh ở đây

  4. nhập mô tả hình ảnh ở đây

  5. nhập mô tả hình ảnh ở đây

  6. nhập mô tả hình ảnh ở đây

  7. nhập mô tả hình ảnh ở đây

  8. nhập mô tả hình ảnh ở đây

  9. nhập mô tả hình ảnh ở đây

  10. nhập mô tả hình ảnh ở đây

  11. nhập mô tả hình ảnh ở đây

  12. nhập mô tả hình ảnh ở đây

  13. Sau khi thoát 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. Khởi động lại hệ thống trước bước tiếp theo (hoặc nếu không bạn có thể nhận được Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Khởi tạo âm lượng mới

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Lấy tên của âm lượng để mở rộng

     # 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. Mở rộng nhóm khối lượng

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Mở rộng gốc

     # 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. Nhận tên hệ thống tập tin cho bước tiếp theo

     # 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. Mở rộng hệ thống tập tin

     # 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. Xem kích thước tăng lên

     # 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. Phương pháp nhanh hơn được thử nghiệm trong Ubuntu Server 18.04.3 LTS

Phương pháp này nhanh hơn một chút so với lần đầu tiên. Điều này là do một tùy chọn mới trong cfdiskmenu có tên "Thay đổi kích thước" để lưu một số bước.

Sau khi mở rộng âm lượng trong VMware ESXi (tắt vm, sao lưu / xuất vm, xóa tất cả các ảnh chụp nhanh, sau đó tăng số lượng kích thước đĩa, chụp lại vm trước khi làm theo các bước tiếp theo để bạn có thể hoàn nguyên lỗi / lỗi).

Ví dụ sau đây là mở rộng âm lượng trên phân vùng gốc trên hệ thống đã sử dụng LVM.

  1. sshvào hệ thống, chuyển sang root và chạy cfdisk.

  2. Chọn phân vùng để mở rộng và chọn "Thay đổi kích thước". nhập mô tả hình ảnh ở đây

  3. Đặt "Kích thước mới". nhập mô tả hình ảnh ở đây

  4. Sau khi nhấn enter, bạn sẽ thấy màn hình với ghi chú sau "Phân vùng [someNumber] đã thay đổi kích thước": nhập mô tả hình ảnh ở đây

  5. Tiếp theo bạn sẽ cần "Viết" (lưu) các thay đổi của mình: nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

  6. Quit cfdisk. Khi bạn thoát, bạn có thể thấy thông báo "đồng bộ hóa đĩa". nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

  7. Tôi đã khởi động lại hệ thống của mình vào thời điểm này nhưng có thể không cần thiết. Bây giờ bạn có thể lấy từ bước 19 từ phương thức đầu tiên (lặp lại bên dưới).

  8. (19) Nhận tên hệ thống tập tin cho bước tiếp theo

     # 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) Mở rộng hệ thống tập tin

     # 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) Xem kích thước tăng

     # 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
    

Các bài viết:
https://wiki.ubfox.com/Lvm
http://www.geoffstratton.com/Exand-hard-disk-ubfox-lvm


Ồ Điều này là vô cùng hữu ích. Ước gì tôi có thể nâng cao hơn một lần. Cảm ơn!
Mario Tacke

1
Hoạt động hoàn hảo vào ngày 18.10 chạy dưới ESXi. Cảm ơn!
John Vinopal

Hoàn toàn tuyệt vời, Chỉ cần những gì tôi cần là một noob linux. .
bigbadmouse

Hướng dẫn tuyệt vời! Thực hiện theo điều này để mở rộng lưu trữ trên Ubuntu chạy dưới dạng Proxmox VM.
tokenizer_fsj

Tuyệt vời! Cảm ơn vì điều này. Điều này làm việc cho 18.04 chạy trên ESXi.
giờ

0

Câu trả lời từ Serge là tuyệt vời. Tuy nhiên, nếu bạn có không gian trống không trực tiếp trong thiết bị tiếp theo, bạn sẽ cần xóa các thiết bị khác. Ví dụ:

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

Trong trường hợp trên, nếu bạn muốn kết hợp /dev/sda3với /dev/sda1, bạn sẽ cần phải loại bỏ /dev/sda1, /dev/sda2/dev/sda3(với dlệnh), và thêm lại /dev/sda2và cập nhật loại của nó (với ntlệnh).


0

Tôi đã thành công trong việc mở rộng phân vùng ext4 chính của mình bằng phương pháp được mô tả ở đây .

Một số lưu ý từ kinh nghiệm cá nhân của tôi:

  • Ví dụ liên kết là để thu hẹp phân vùng, do đó thứ tự là resize2fs trước và sau đó là fdisk. Khi mở rộng phân vùng (như trong trường hợp của tôi), thứ tự sẽ là fdisk trước, khởi động lại và sau đó thay đổi kích thước2fs. Ngoài ra, khi sử dụng fdisk, các phân vùng chính cũng như mở rộng cần được loại bỏ và xác định lại.
  • Tôi đã khởi động Ubuntu từ một ổ đĩa khác và sau đó làm việc trên ổ đĩa này thực sự là bản sao (sử dụng dd) của ổ đĩa cũ. Làm cho nó có khả năng khởi động bằng cách sử dụng GParted
  • Phiên bản hiện tại của resize2fs (Tôi đang sử dụng Ubuntu 12.04LTS) hỗ trợ ext4 - không cần thực hiện các hành động được mô tả trong liên kết thay đổi ext2.

1
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Braiam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.