Увеличить размер раздела, на котором установлена ​​Ubuntu?


60

У меня Ubuntu установлен на диске. Проблема в том, что на диске мало места. Это установлено на VMware. Я расширил виртуальный диск и загрузился в Ubuntu. Но когда я открыл gparted (sudo gparted), опция перемещения / изменения размера была недоступна. Это раздел, на котором установлена ​​Ubuntu, но мне нужно изменить его размер. Есть идеи? Мне удобно пользоваться командной строкой


Вы можете увидеть, как они это делают raspi-configдля Raspberry Pi, где расширение корневой файловой системы - это то, что вы делаете почти каждый раз, когда настраиваете новый Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
шоу

Ответы:


16

Вы почти у цели.
Вы не можете изменить размер раздела, используя GParted во время работы Ubuntu.
Вам нужно будет подключить ISO-образ GParted в виде компакт-диска к машине с виртуальной машиной и перезагрузить компьютер, чтобы вместо Ubuntu загружалась GParted (я думаю, что вы можете загрузиться с виртуального компакт-диска, нажав F12 сразу после запуска машины).
Как только вы загрузитесь в GParted, опция перемещения / изменения размера будет включена, так как Ubuntu в данный момент не работает.


139

На самом деле, вы МОЖЕТЕ увеличить корневую файловую систему во время работы Ubuntu (я недавно узнал об этом здесь ) - это звучит невероятно, но это правда :)

Вот список шагов для простого сценария, в котором у вас есть два раздела, /dev/sda1это раздел ext4, с которого загружается ОС , и это раздел /dev/sdb2подкачки. Для этого упражнения мы хотим удалить раздел подкачки, распространяющийся /dev/sda1на весь диск.

  1. Как всегда, убедитесь, что у вас есть резервная копия ваших данных - поскольку мы собираемся изменить таблицу разделов, есть шанс потерять все ваши данные, если вы, например, сделаете опечатку.

  2. Бегать sudo fdisk /dev/sda

    • используйте pдля перечисления разделов. Запишите стартовый цилиндр/dev/sda1
    • используйте dдля удаления сначала раздел подкачки ( 2), а затем /dev/sda1раздел. Это очень страшно, но на самом деле безвредно, так как данные не записываются на диск, пока вы не запишите изменения на диск.
    • использовать nдля создания нового основного раздела. Убедитесь, что его стартовый цилиндр точно такой же, как и у старого /dev/sda1. Для конечного цилиндра согласитесь с выбором по умолчанию, который состоит в том, чтобы раздел был разделен на весь диск.
    • используйте aдля переключения загрузочного флага на новом/dev/sda1
    • просмотрите ваши изменения, сделайте глубокий вдох и используйте wдля записи новой таблицы разделов на диск. Вы получите сообщение о том, что ядро ​​не может перечитать таблицу разделов, потому что устройство занято, но это нормально.
  3. Перезагрузитесь с помощью sudo reboot. Когда система загрузится, у вас будет меньшая файловая система, расположенная внутри большего раздела .

  4. Следующая команда магии resize2fs. Выполнить sudo resize2fs /dev/sda1- эта форма по умолчанию заставит файловую систему занять все доступное пространство на разделе.

Вот и все, мы только что изменили размер раздела, на котором установлена ​​Ubuntu, без загрузки с внешнего диска.


@EliahKagan: Пожалуйста, взгляните на ответ (от Жиля), на который я ссылался. Идея заключается в том, что можно использовать fdiskдля увеличения раздела , в то время как ОС продолжает использовать меньшую файловую систему. Затем. после перезагрузки, после того как ядро ​​перечитает обновленную таблицу разделов, мы можем изменить размер файловой системы, потому что теперь она находится в большем разделе.
Сергей

1
@Isaac: Да, нам все еще нужно перезагрузиться, чтобы ядро ​​перечитало таблицу разделов. Однако быстрая перезагрузка во многих сценариях - это гораздо меньшая проблема, чем загрузка с внешнего носителя (например, удаленных машин, безголовых машин, VPS и т. Д.)
Сергей,

2
Две быстрые заметки: 1. Вы можете использовать, dfчтобы показать «результирующее» пространство после этого (подтвердите, что это сработало), и 2. Не забудьте воссоздать некоторое пространство подкачки!
Кристиан Рондо,

1
Спасибо. Ubuntu никогда не использовал пространство, которое я дал VirtualBox vdisk. Теперь я знаю почему. Большое спасибо!
Penderi

1
@ Сид: Очень важно, чтобы стартовый цилиндр был точно таким же. Если свободное место есть где-то, но сразу после раздела, вам нужно использовать другой метод (который потребовал бы загрузки с другого диска)
Сергей

21

Два метода

1. Протестировано в Ubuntu Server с 16.04 по 18.10

После расширения тома в VMware ESXi (завершение работы с vm, резервное копирование / экспорт vm, удаление всех снимков, затем увеличение размера диска, снова сделайте снимок vm, прежде чем выполнять следующие шаги, чтобы вы могли исправить ошибку / ошибку).

В следующем примере расширение тома в корневом разделе в системе, в которой уже используется LVM.

  1. sshв систему, переключитесь на root и запустите 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. Расширить root

     # 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. sshв систему, переключитесь на root и запустите cfdisk.

  2. Выберите раздел для расширения и выберите «Изменить размер». введите описание изображения здесь

  3. Установите «Новый размер». введите описание изображения здесь

  4. После нажатия Enter вы увидите экран со следующим примечанием «Размер раздела [someNumber] изменен»: введите описание изображения здесь

  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


Ух ты. Это было очень полезно. Хотелось бы, чтобы я проголосовал не раз. Спасибо!
Марио Таке

1
Отлично работал на 18.10 под управлением ESXi. Спасибо!
Джон Винопал

Абсолютно невероятно, как раз то, что мне нужно, как Linux Noob. ,
bigbadmouse

Отличный гид! Затем следует расширить хранилище в Ubuntu, работающем как Proxmox VM.
tokenizer_fsj

Фантастика! Спасибо тебе за это. Это сработало 18.04 на ESXi.
один раз

0

Ответ от Сергея был превосходным. Однако если у вас есть свободное место не на следующем устройстве, вам необходимо удалить другие устройства. Например:

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, используя методологию, описанную здесь .

Некоторые заметки из моего личного опыта:

  • Пример ссылки для сокращения раздела, следовательно, сначала порядок resize2fs, а затем fdisk. При увеличении раздела (как в моем случае) порядок должен быть сначала fdisk, перезагрузиться, а затем resize2fs. Кроме того, при использовании fdisk основной и расширенный разделы должны быть удалены и переопределены.
  • Я загрузил Ubuntu с другого диска, а затем работал над этим диском, который фактически был зеркальным (с использованием dd) старого диска. Сделал его загрузочным с помощью GParted
  • Текущая версия resize2fs (я использую Ubuntu 12.04LTS) поддерживает ext4 - не нужно выполнять действия, описанные в ссылке, чтобы изменить ее в ext2.

1
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Брайам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.