Как расширить раздел ext4 и файловую систему?


46

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

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

Как я мог это сделать?

Я видел людей, использующих, resize2fsно я не понимаю, изменяет ли это размер раздела.

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

Примечание: я говорю о не смонтированном разделе данных без LVM, и у меня есть резервные копии, но я бы хотел не тратить время на восстановление.


Этот тип вопроса задавался и отвечал несколько раз, что я знаю. Вы обращались к архивам здесь?
— MDPC

Ответы:


46

Вы должны начать с размонтированного раздела. Если вы не можете размонтировать его (например, это ваш корневой раздел или что-то еще, что система должна запустить), используйте вместо этого что-то вроде System Rescue CD .

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

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (просто чтобы узнать, в безопасности ли вы)

  4. Перемонтируйте свой раздел.

Хотя я никогда не видел такой ошибки, сначала сделайте резервную копию ваших данных!


5
Страница resize2fsman говорит: Если файловая система смонтирована, ее можно использовать для увеличения размера смонтированной файловой системы, предполагая, что ядро ​​поддерживает изменение размера в режиме онлайн. (На момент написания статьи ядро ​​Linux 2.6 поддерживало оперативное изменение размера для файловых систем, смонтированных с использованием ext3 и ext4.). Однако изменение размера смонтированной файловой системы является более опасной операцией, поскольку ядро ​​может легко зависнуть или зависнуть при выполнении редко используемого кода, в результате чего ваша файловая система будет в плохом состоянии.
— 200_success

1
Верно - но вы не хотите возиться с таблицей разделов и смонтированной файловой системой. Вот почему я начал с несмонтированной ФС.
— Флюп

1
Для ext4 может быть resize4fsвместо этого на RHEL 5.
— Zac Thompson

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

parted отказывается изменить размер раздела ext4 на CentOS 6.
— reinierpost

21

Да, вы можете вырастить EXT4 FS онлайн, если у вас уже есть раздел, который уже отсортирован. У вас есть раздел отсортирован? У тебя есть LVM?

sudo resize2fs /dev/drive_to_grow

fdiskизменит размер вашего раздела, правда, но если это корневой раздел (или, если фактически, любой смонтированный раздел), он должен быть сначала размонтирован. Так что офлайн скорее всего!

Как и все, что связано с операциями с диском / файловой системой, я настоятельно рекомендую создать резервную копию и протестировать хорошо понятный процесс восстановления.


Если вы используете fdisk, убедитесь, что вы используете MBR, а не GPT (например, с гибридным MBR).
— stek29

2
На моем сервере Debian XEN я изменил размер логического тома lvextend +40G /dev/vg0/volumeName, затем вошел в систему как root в vm и вошел, resize2fs /dev/xvda2что увеличивает работающую корневую файловую систему до нового максимума. Я не уверен, что это было необходимо, но я перезагрузил виртуальную машину после этого действия. Все вроде нормально.
— 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изменит размер вашего раздела на макс.
— Сриги

Ошибка: неверный токен -1s
— starbeamrainbowlabs

3

partedможет resizeразделы и их файловые системы.


Спасибо, я использовал графический, и он не поддерживает изменение размера раздела. Я видел опцию в программе cli, но не могли бы вы сказать мне, как использовать ее без потери данных? В resize NUMBER START END, НАЧАТЬ И ЗАКОНЧИТЬ номера секторов? Откуда мне это знать?
— Mimipc

Всегда рекомендуется выполнить резервное копирование данных перед выполнением любой рискованной операции, например, изменения размера раздела. partedподдерживает выбор единиц измерения - например, используйте sсуффикс для секторов Bили GBдля байтов, %для процента от размера устройства и cylдля цилиндров.
— 200_success

3

Parted не работает на 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_success

Использовал этот процесс, но использовал gdisk для создания раздела. Это позволило мне сохранить данные и создать раздел размером> 2
— ТБ

2

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


1

Просто чтобы уточнить, как я делаю это для тех, кто все еще читает эту ветку.
Если вы хотите изменить размер загрузочного раздела, то вы должны загрузиться с загрузочного диска «bootcd» или «bootusb», который является просто Live Linux. Это позволяет вам запускать Linux на компьютере, отличном от диска, на котором вы хотите внести изменения.

Я думаю, что лучшим «спасательным» компакт-диском или usb в этом случае был бы загрузочный gparted USB или CD,
в котором вам нужен образ аварийного
восстановления 1. Развертываемый раздел - это последний раздел, но вы загрузились с него и не можете размонтировать его.
sda1 = boot (или swap)
sda2 = swap (или boot)
sda3 = /
неиспользуемое пространство

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

Если вы хотите изменить смонтированный раздел, который не является «корневым» разделом (/), например / home, который является другим разделом, тогда нет необходимости использовать образ восстановления. Это особенно верно, если последний раздел.
sda1 = boot
sda2 = /
sda3 = / home
неиспользуемое пространство
-or-
sda1 = /
sda2 = / home
неиспользуемое пространство

Это ситуация, когда я беру образ с меньшего диска или SSD и перемещаю его на больший SSD.

В этом случае вам просто нужно размонтировать / home, пока вы его расширяете. Но чтобы размонтировать / home, вам нужно убедиться, что вы не вошли ни в какую учетную запись пользователя, чей домашний каталог находится внутри него. Поскольку домашний каталог пользователя «root» находится непосредственно в системном корне / как в / root, если вы можете войти в систему, вы можете размонтировать / home

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

Удачи


И все же вы не делаете резервных копий.
— Охотник на оленей
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.