Збільшити розмір розділу, на якому встановлено Ubuntu?


60

У мене на диску встановлений Ubuntu. Проблема полягає в тому, що на диску є мало місця. Це встановлено на vmware. Я розширив віртуальний диск і завантажився в ubuntu. Але коли я відкрив gparted (sudo gparted), варіант переміщення / зміни розміру недоступний. Це розділ, на який встановлено Ubuntu, але мені потрібно змінити його розмір. Будь-які ідеї? Мені комфортно користуватися командним рядком


Ви можете бачити, як вони це роблять raspi-configдля Raspberry Pi, де розширення кореневої файлової системи - це те, що ви робите майже кожен раз, коли ви встановлюєте новий Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
sshow

Відповіді:


16

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


139

Власне кажучи, ви МОЖЕТЕ збільшити кореневу файлову систему під час роботи Ubuntu (про це я нещодавно дізнався тут ) - це звучить неймовірно, але це правда :)

Ось перелік кроків для простого сценарію, коли у вас є два розділи, /dev/sda1це розділ ext4, з якого завантажується ОС, і він /dev/sdb2є свопом. Для цієї вправи ми хочемо видалити розділ swap розширення /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для збільшення розділу , в той час як ОС продовжує використовувати меншу файлову систему. Тоді. після перезавантаження, після того, як ядро ​​перечитає оновлену таблицю розділів, ми можемо змінити розмір файлової системи, оскільки вона тепер живе у більшому розділі.
Сергій

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

2
Дві швидкі зауваження: 1. Ви можете використовувати dfдля цього показ "результуючого" простору (підтвердіть, що він працював), і 2. не забудьте відтворити деякий простір підкачки!
Крістіан Рондо

1
Дуже дякую. Ubuntu ніколи не використовував простір, який я дав vdisk VirtualBox. Тепер я знаю, чому. Дуже дякую!
penderi

1
@Sid: Дуже важливо, щоб стартовий циліндр був абсолютно таким же. Якщо вільний простір є де завгодно, але одразу після перегородки вам потрібно скористатися іншим методом (який потребує завантаження з іншого диска)
Сергій

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. Розширити корінь

     # 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 ви побачите екран із наступною приміткою "Розділ [деякий номер] змінив розмір": введіть тут опис зображення

  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.
one.time

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/sda3dкомандою), і знову додати /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.