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

Я должен был сбросить NVRAM через перемычку материнской платы.

46
задан 27 March 2015 в 13:02
10 ответов

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

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

  2. resize2fs / dev / something

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

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

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

46
ответ дан 28 November 2019 в 19:39

Да, вы можете увеличить файловую систему EXT4 онлайн, если у вас уже есть отсортированный раздел. Вы отсортировали разделы? У вас есть LVM?

sudo resize2fs /dev/drive_to_grow

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

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

21
ответ дан 28 November 2019 в 19:39

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

3
ответ дан 28 November 2019 в 19:39

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

2
ответ дан 28 November 2019 в 19:39

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
3
ответ дан 28 November 2019 в 19:39

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

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

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

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

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

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

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

Удачи

1
ответ дан 28 November 2019 в 19:39

Примечание, на некоторых серверах 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
5
ответ дан 28 November 2019 в 19:39

Меня попросили увеличить диск, смонтированный как / scratch на сервере Dell под управлением CentOS 7, не отвлекая текущих пользователей. Это был раздел XFS на диске RAID 0 с обычной меткой GPT. Это будет работать для раздела ext4 почти таким же образом - см. Ниже.

Вот как я сделал это, не отключаясь, не перезагружая и не прерывая операции в системе. Я просто использовал команды Linux (и инструменты Dell RAID):

  1. Увеличение физического тома RAID было сделано путем добавления двух новых дисков к серверу и использования инструмента OpenManage Server Administrator для добавления их к существующему тому RAID. Это заняло несколько дней, но не потребовало дополнительных человеческих усилий. Сервер продолжал работать с более низкими скоростями диска во время восстановления диска RAID.
  2. Размер диска в блоках увеличился с 15623782400 до 23435673600 (512-байтовых) блоков, но значение / sys / block / sdb / size все еще было меньшим. Это было исправлено с помощью команды: echo 1> / sys / block / sdb / device / rescan
    , чтобы драйвер диска обновил свои знания о размере и форме диска. Кажется, это плохо разрекламированная функция: я догадался, что она делает, по названию!
  3. Я запустил parted , чтобы отредактировать метку диска и переместить ее копию в конце диска на новый конец диска. К счастью, он угадал, чем я хочу заниматься, без поддержки и подсказал мне. Во-первых, копия метки диска: Ошибка: резервная таблица GPT находится не в конце диска, как должно быть.Это может означать, что другая операционная система считает, что диск меньше. Исправить, переместив резервную копию в конец (и удаление старой резервной копии)? Исправить / Игнорировать / Отменить? F
    А затем размер диска, отображаемый в метке диска: Предупреждение: не все пространство, доступное для / dev / sdb, похоже, используется, вы можете исправить GPT, чтобы использовать все пространство (дополнительные 7811891200 блоков) или продолжить с текущими настройками? Исправить / игнорировать? F
    Поэтому мне пришлось дважды ввести «F», а затем «q», чтобы выйти с исправленной меткой диска (и ее копией). Это устранило большую часть того, что нужно было исправить без каких-либо усилий и усилий.
  4. Мне пришлось отредактировать размер раздела, чтобы заполнить диск, но parted не позволил мне сделать это, пока диск был смонтирован, поэтому вместо этого я использовал fdisk : fdisk / dev / sdb d 1 n 1 (значения по умолчанию верны для полного размера диска) т 1 11 (Это основные данные Microsoft - то же самое, что и xfs). w
    Обратите внимание, что я установил, что он использовал правильный номер начального кадра, 2048. В противном случае это не сработало бы. Мне посчастливилось использовать два инструмента с одинаковым условием для начального блока, но я сначала проверил начальный стартовый блок.
  5. Я также использовал parted на этом этапе, чтобы дать разделу то же имя, что и раньше, поскольку fdisk не поддерживает именование разделов. Мелкая деталь.
  6. Я использовал partprobe / dev / sdb partprobe / dev / sdb1 для хорошей меры), чтобы ОС снова прочитала таблицу разделов. Я думаю, что только первая команда действительно изменила ситуацию.
  7. Наконец, я использовал xfs_growfs -d / scratch , которому потребовалось всего 1,6 секунды, чтобы увеличить раздел до его окончательного размера, заполнив только что выросший диск.

Это также будет работать с томами ext4: единственная разница будет заключаться в использовании resize2fs / dev / sdb1 вместо xfs_growfs -d / scratch - и использовании правильного номера типа раздела для ext4 вместо xfs. Команда fdisk может перечислить номера типов для распространенных дисковых систем, включая ext4.

0
ответ дан 9 February 2020 в 14:11

Принятый ответ несколько устарел: изменение размера файловой системы ext4 лучше выполнять в сети, а не в автономном режиме, поскольку путь кода расширения в сети используется гораздо чаще, чем в автономном режиме.

Сложнее, вероятно, расширить базовый раздел, если только вы не используете LVM и у вас есть свободное место в вашей группе томов. Чтобы расширить раздел онлайн, вы можете использовать fdisk или parted; затем вам нужно было запустить kpartx <устройство>, чтобы сообщить ядру об изменении. При использовании LVM вам необходимо pvresize только что измененного размера раздела перед lvresize тома.

Наконец, вы можете выполнить resize2fs свою файловую систему.

2
ответ дан 9 February 2020 в 15:44

Пример использования growpart и resize2fs:

$ growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=39999455 end=40001503 new: size=80000991,end=80003039
$ resize2fs /dev/sda1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 10000123 (4k) blocks long.
8
ответ дан 12 June 2020 в 13:15

Теги

Похожие вопросы