Як розширити розділ і файлову систему ext4?


44

У мене диск 400 ГБ з розділом 320 ГБ ext4. Я хотів би виростити розділ ext4, щоб використовувати лівий простір (80 Гб вільного місця).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Як я міг це зробити?

Я бачив людей, які використовують, resize2fsале не розумію, чи він змінює розмір розділу.

Іншим рішенням буде використання, fdiskале я не хочу видаляти свій розділ та втрачені дані. Як я можу просто виростити розділ, не втрачаючи жодного файлу?

Примітка. Я говорю про не змонтований розділ даних без LVM і у мене є резервне копіювання, але я хотів би не витрачати певний час на відновлення.


Цей тип запитань мені задавали і відповіли неодноразово, що мені відомо. Ви тут консультувались з архівами?
— mdpc

Відповіді:


45

Почати потрібно з відключеного розділу. Якщо ви не можете його відключити (наприклад, це ваш кореневий розділ або щось інше, що потрібно запустити системі), використовуйте щось на зразок System Rescue CD .

  1. Запустіть partedабо gpartedякщо ви віддаєте перевагу графічний інтерфейс і змініть розмір розділу, щоб використовувати додаткове місце. Я вважаю за краще, gpartedоскільки він дає вам гарне графічне зображення, дуже схоже на те, яке ви намалювали у своєму запитанні.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (просто щоб дізнатися, чи ви на безпеці)

  4. Повторіть свій розділ.

Хоча я ніколи не бачив цього збою, спочатку створіть резервну копію своїх даних!


5
На resize2fsголовній сторінці написано: Якщо файлова система змонтована, її можна використовувати для розширення розміру змонтованої файлової системи, припускаючи, що ядро ​​підтримує зміну розміру в режимі он-лайн. (Станом на це написання, ядро ​​Linux 2.6 підтримує он-лайн розмір файлових систем, встановлених за допомогою ext3 та ext4.) Однак змінити розмір змонтованої файлової системи є більш небезпечною операцією, оскільки ядро ​​може легко застигнути або вийти з ладу під час запуску рідко виконуваного коду, залишивши вашу файлову систему в поганому стані.
— 200_успіх

1
Правда - але ви не хочете возитися зі своєю таблицею розділів із встановленою файловою системою. Тому я почав з fs unmmented.
— Flup

1
Для ext4, можливо, resize4fsзамість RHEL 5.
— Зак Томпсон

1
Зростання розділу з вашою кореневою файловою системою має працювати чудово, доки: 1.Ви не зміните номер початкового сектора. 2.Ви перезавантажуєтесь після зміни таблиці розділів до наступного кроку.
— kasperd

розлука відмовляється змінити розмір розділу ext4 на CentOS 6.
— reinierpost

21

Так, ви можете виростити EXT4 fs в Інтернеті, якщо ви вже відсортовані розділи. Ви сортували розділ? У вас є LVM?

sudo resize2fs /dev/drive_to_grow

fdiskбуде змінювати розмір вашого розділу, правда, але якщо це кореневий розділ (або, якщо це фактично будь-який змонтований розділ), його доведеться спочатку відключити. Так офлайн швидше за все!

Як і у випадку, що стосується операцій на диску / fs, я настійно рекомендую мати резервне копіювання та протестований, добре зрозумілий процес відновлення.


Якщо ви використовуєте, fdiskпереконайтеся, що ви використовуєте MBR, а не GPT (наприклад, з гібридним MBR).
— stek29

2
На моєму сервері debian XEN я змінив розмір свого логічного обсягу lvextend +40G /dev/vg0/volumeName, а потім увійшов як root у vm і ввів, resize2fs /dev/xvda2що збільшує працюючу кореневу файлову систему до нового max. Я не впевнений, чи потрібно це, але я перезавантажив vm після цієї дії. Все здається прекрасним.
— rubo77

1
@ rubo77 Ні, не потрібно перезавантажувати,
— Кріс,

5

Зауважте, на деяких серверах VDS у вас може бути не первинний кореневий розділ і потрібно спершу змінити розмір контейнера розширеного розділу

Наприклад, ви щойно оновили свій план і отримали щось на кшталт:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Тут / dev / vda2 - ваш розширений контейнер. І / dev / vda5 - головний розділ, який нам потрібен для зміни розміру до повного наявного простору.

Найпростіший спосіб:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

Що мені справді допомогло, було бачити, що ви можете встановити ENDнегативну кількість. Зазвичай ви не знаєте точного розміру linux зміненого розділу - ви не знаєте, як встановити ENDаргумент resizepart. Якщо встановити його, -1sви зміните розмір вашого розділу до макс.
— srigi

Помилка: Недійсний маркер -1s
— starbeamrainbowlabs

3

Розділений не працює на ext4 на Centos. Мені довелося використовувати fdisk для видалення та відновлення розділу, який (я підтвердив) працює без втрати даних. Я дотримувався кроків на http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Ось у двох словах:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w

1
Ласкаво просимо до помилки сервера! Будь ласка, підсумуйте кроки у самій відповіді, щоб захистити від гниття посилання
— 200_успіх

Використовували цей процес, але використовували gdisk для створення розділу. Це дозволило мені зберегти дані та створити розділ, який був> 2 ТБ
— pcnate

2

partedможуть resizeрозділи та їх файлові системи.


Дякую, я використовував графічний, і він не підтримує розмір розділів. Я бачив варіант у програмі cli, але чи можете ви сказати мені, як це точно використовувати, не втрачаючи даних? Чи resize NUMBER START ENDє номери сектору START та END? Як я можу це знати?
— mimipc

Завжди рекомендується створити резервну копію даних, перш ніж робити будь-які ризиковані операції, такі як змінити розмір розділу. partedпідтримує вибір одиниць - наприклад, використовуйте sсуфікс для секторів Bабо GBдля байтів, %відсотків від розміру пристрою та cylдля циліндрів.
— 200_успіх

2

Ви можете використовувати fdiskабо cfdiskзмінювати (або відновлювати) розділ (просто переконайтеся, що ви не зміните його початкову межу), а потім перезавантажте та resize2fs. Але в цілому краще використовувати LVM-2 замість MBR / GPT, оскільки це дозволяє вносити ці зміни без перезавантаження ядра.


1

Просто для уточнення, як я це роблю для всіх, хто ще читає цю тему.
Якщо це завантажувальний розділ, який ви хочете змінити розмір, ви повинні завантажитися з bootcd або bootusb "рятувального" диска, який є лише Live Linux. Це дозволяє запустити Linux на іншому комп'ютері, а не на диску, на який потрібно внести зміни.

Я думаю, що найкращим компакт-диском або usb для "порятунку" в цьому випадку буде завантажувальний корпус із USB або CD з завантаженням,
у якому потрібне рятувальне зображення
1. Розділ, який потрібно розширити, є останнім розділом, але ви завантажилися з нього і не можете його відключити.
sda1 = завантажувальний (або swap)
sda2 = swap (або завантажувальний)
sda3 = /
Невикористаний пробіл

  1. Якщо розділ, який потрібно розширити, НЕ є останнім розділом, для переміщення або зміни розміру розділів потрібно використовувати зображення завантажуваного пристрою gparted.
    sda1 = завантажувальний
    sda2 = / (розділ для розширення не останній)
    sda3 = поміняти незастосований
    простір

Якщо ви хочете змінити змонтований розділ, який не є "кореневим" розділом (/), як / home, який є іншим розділом, тоді не потрібно використовувати рятувальне зображення. Особливо це стосується останнього розділу.
sda1 = завантажувальний
sda2 = /
sda3 = / домашній
невикористаний простір
-or-
sda1 = /
sda2 = / домашній
невикористаний простір

Така ситуація в мене виникає, коли я знімаю зображення з меншого накопичувача або SSD і переміщую його на більший SSD.

У цьому випадку вам просто потрібно відключити / дім, поки ви продовжите його. Але для того, щоб відключити / home, вам потрібно переконатися, що ви не ввійшли до жодного облікового запису користувача, домашній каталог якого знаходиться в ньому. Оскільки домашній каталог користувача «root» знаходиться безпосередньо під системним коренем / як у / root, якщо ви можете увійти в root, ви можете відключити / home

Я виходжу з сеансу GUI (KDE / Gnome / тощо) і використовую [CTRL] + [ALT] + [F1], щоб відкрити сеанс оболонки.
Якщо ви щойно вийшли з системи входу користувача, Linux може зайняти 20-30 секунд, щоб закрити будь-які файли, так що ви можете отримати помилки при спробі змінити чи перейти додому.
1. umount / home (я повторюю цю команду, якщо вона не спрацьовує до 30 секунд, а потім перегляньте інші сеанси, щоб побачити, чи я десь "cd / home / xxx")
2. parted / dev / sda
a. змінити розмір x (x = розділ, який потрібно змінити, використовуйте "p", щоб отримати список розділів)
b. Введіть останній сектор розміру = "-1" (мінус 1 означає 1 сектор від кінця диска)
c. q (виходить з
розбору ) 3 resize2fs / dev / sda "x" (x = розділ, який слід змінити. Це також перекомпонує файлову систему)
4. df -m (я перевіряю / додому, щоб перевірити його розмір)
Я ніколи не втрачав файли та не пошкодив накопичувач цим методом.

Удачі


І все-таки ви не робите резервних копій.
— Мисливець на оленів
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.