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

46

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

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

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

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

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

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

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

Ответы:

46

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

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

  2. resize2fs /dev/whatever

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

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

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

Flup
источник
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
WSR
источник
Что действительно помогло мне, так это то, что вы можете установить ENDотрицательное число. Обычно вы не знаете точный размер linux измененного размера раздела - вы не знаете, как установить ENDаргумент resizepart. Установка этого параметра -1sизменит размер вашего раздела на макс.
Сриги
Ошибка: неверный токен -1s
starbeamrainbowlabs
3

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

200_success
источник
Спасибо, я использовал графический, и он не поддерживает изменение размера раздела. Я видел опцию в программе 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
JTW
источник
1
Добро пожаловать в сбой сервера! Пожалуйста, суммируйте шаги в самом ответе, чтобы защититься от гниения ссылок.
200_success
Использовал этот процесс, но использовал gdisk для создания раздела. Это позволило мне сохранить данные и создать раздел размером> 2
ТБ
2

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

poige
источник
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, чтобы проверить его изменение размера).
Я никогда не терял файлы и не повредил диск, используя этот метод.

Удачи

Чак А
источник
И все же вы не делаете резервных копий.
Охотник на оленей