Як розширити розділ і файлову систему 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.