Дисковое пространство говорит 7 ГБ, хотя оно должно быть 20 ГБ [dубликат]

Как увеличить размер корневого раздела системы во время выполнения?

У меня есть раздел, который не выделяется после корневого раздела (который также является ext4), как я могу добавить это нераспределенное пространство в пространство, выделенное корневому разделу, без необходимости остановки сервера?

201
задан 11 December 2013 в 17:05

19 ответов

Можно сделать он-лайн изменение размера файловой системы ext4, даже если это ваш корневой раздел. Используйте команду resize2fs.

sudo resize2fs /dev/sda1

ИЗМЕНИТЬ: Сокращение в режиме онлайн не разрешено:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693 resize2fs 1.42 (29-Nov-2011) Filesystem at /dev/sda5 is mounted on /; on-line resizing required resize2fs: On-line shrinking not supported
109
ответ дан 18 July 2018 в 06:31

Только что закончил изменение корневого раздела ext4 в живой системе, в то время как корень был монтирован.

[root@habib i686]# resize2fs /dev/vg_habib/lv_root resize2fs 1.42 (29-Nov-2011) Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 10 Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks. The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long. [root@habib i686]#
5
ответ дан 18 July 2018 в 06:31

Да, вы можете сжимать / перемещать / расширять онлайн-корневой раздел без каких-либо перезагрузок (ни livecd, ни usbkey): проконсультируйтесь с этим ответом. Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно. Поэтому, если вы хотите расширить свой раздел ext4, вы можете придерживаться обычных рабочих решений resize2fs.

Общее решение, которое я использовал, будет работать, например, для любого типа выделенного или VPS-решения.

TLDR; это решение подразумевает pivot_root - tmpfs, поэтому вы можете umount безопасно, чтобы ваш корневой раздел жил и играл с ним. После этого вы pivot_root вернетесь в свой новый корневой раздел.

Это позволяет практически любую манипуляцию в корневой файловой системе (перемещать ее, изменять файловую систему, изменять ее физическое устройство ...).

В процессе не требуется перезагрузка, и этот вы можете сжимать / перемещать / расширять сетевой корневой раздел из resize2fs, неспособный сжимать разделы ext4. [ ! d6]

Я лично использовал это, и он отлично работает и в debian system, поэтому он должен работать на Ubuntu. Я очень удивлен, не увидев, что это углубленное решение немного связано со многими вопросами на веб-сайтах stackexchange, которые касаются одной и той же проблемы.

не может сжиматься Конечно, если вы хотите увеличить свой раздел, достаточно простого resize2fs, как указано во многих местах и ​​в других ответах здесь.

7
ответ дан 18 July 2018 в 06:31

Как было указано ранее:

возможно расширение из корневой системы (без проблем, поскольку загрузочный раздел не должен быть перемещен). Сокращение живого корневого раздела необходимо сделать из внешней загрузки устройство (загрузиться с live system cd / usb-stick), как будто есть какая-либо ошибка, несоответствие. Независимо от того, какая ваша система зависает, ее необходимо перезагрузить и в конечном итоге не смогут правильно загрузиться.

Любой вид «но я сделал это, и он работает» - это просто удача.

0
ответ дан 18 July 2018 в 06:31

Выполните следующие действия.

откройте терминал как суперпользователь su запустите parted тип p, чтобы увидеть доступные разделы, чтобы определить номер вашего корневого раздела (например: «sda 3» означает номер 3) и удалите смежный раздел, используя rm PARTITION NUMBER, чтобы создать свободное пространство. теперь увеличьте размер корня, набрав resizepart ROOT NUMBER и перезагрузив систему, если необходимо, выйдите parted, набрав exit и в типе терминала partprobe и нажмите enter (это можно сделать даже после перезагрузки), наконец, запустите resize2fs /dev/sda PARTITION NUMBER и наслаждайтесь просторный корневой раздел.
0
ответ дан 18 July 2018 в 06:31

Как уже отмечалось ранее, достаточно просто сбросить флаг загрузки

run 'parted'

parted /dev/sda

проверить номер раздела

(parted) print

сбросить загрузку флаг на номер раздела '1' в этом случае

(parted) set 1 boot on (parted) quit
-6
ответ дан 18 July 2018 в 06:31

Вы также можете просто использовать GParted - пока размер, размер которого вы изменяете, не тот, который вы загрузили, - иначе я предлагаю, чтобы опция live CD несколько упрощалась для новичков.

GParted в основном выполняет все шаги - только на основе графического интерфейса.

8
ответ дан 18 July 2018 в 06:31

Я сделал это успешно без umount, pivot_root или временного удаления основного раздела, используя parted 3.2 в ядре Ubuntu 16.04, 4.4.0. Чтобы быть осторожным, я делал все с виртуальной консоли с отключенным отключением сети и делал снимок заранее на всякий случай, но моментальный снимок не нужен, поэтому я мог бы так же хорошо это сделать через SSH и без изменения уровней запуска.

Определите размер раздела: parted /dev/sda1 print | egrep "Disk.*GB"

Опционально переключитесь в многопользовательский режим без сети (это должно выполняться с консоли, а не SSH):

runlevel # remember the original runlevel init 2

Необязательно

Изменить размер раздела:

parted p resizepart NUMBER SIZE # answer "Yes" when asked about resizing a live partition. q

Изменить размер файловой системы: resize2fs /dev/sda1

Если что-то пойдет не так, вы можете восстановить свою снимок здесь. Если все пошло нормально, вернитесь к нормальному уровню выполнения (полученному выше) - обычно 5: init 5. На этом этапе лучше всего выполнить полную перезагрузку, чтобы убедиться, что все вернулось должным образом (после этого у меня была дата / ntp).

0
ответ дан 18 July 2018 в 06:31

Простое решение - используйте growpart <device> <partition>:

growpart /dev/xvda 1 # Grows the partition; note the space resize2fs /dev/xvda1 # Grows the filesystem

Как всегда, резервное копирование таблицы разделов (sfdisk -d /dev/xvda > partition_bak.dmp) на всякий случай.

16
ответ дан 18 July 2018 в 06:31

Можно сделать он-лайн изменение размера файловой системы ext4, даже если это ваш корневой раздел. Используйте команду resize2fs.

sudo resize2fs /dev/sda1

ИЗМЕНИТЬ: Сокращение в режиме онлайн не разрешено:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693 resize2fs 1.42 (29-Nov-2011) Filesystem at /dev/sda5 is mounted on /; on-line resizing required resize2fs: On-line shrinking not supported
109
ответ дан 24 July 2018 в 18:37
  • 1
    Из man resize2fs : The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8). Этот вопрос касается изменения размера раздела , а не файловой системы . Различие тонкое, но очень важное. – Eliah Kagan 3 June 2012 в 12:07
  • 2
    Вы можете использовать fdisk для удаления корневого раздела, а затем воссоздать его в том же стартовом блоке. fdisk выписал изменение, но оно не вступит в силу до перезагрузки. после перезагрузки вы можете использовать программу resize2fs для отправки диска для заполнения части. – James Becwar 14 June 2012 в 20:15
  • 3
    Я только что изменил размер корневого раздела ext4 в Интернете. Поэтому я могу подтвердить, что это возможно. Но вместо передачи / dev / sda * в качестве параметра resize2fs вам необходимо передать имя логического тома. – CDR 5 December 2012 в 04:37
  • 4
    Я нашел первый абзац resize2fs manpage , наиболее интересный для начального вопроса: The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.). – mo' 23 December 2012 в 20:33
  • 5
    Пожалуйста, не гадайте с fdisk, когда growpart сделает это очень легко для вас. – STRML 16 September 2017 в 16:45

Только что закончил изменение корневого раздела ext4 в живой системе, в то время как корень был монтирован.

[root@habib i686]# resize2fs /dev/vg_habib/lv_root resize2fs 1.42 (29-Nov-2011) Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 10 Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks. The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long. [root@habib i686]#
5
ответ дан 24 July 2018 в 18:37

Да, вы можете сжимать / перемещать / расширять онлайн-корневой раздел без каких-либо перезагрузок (ни livecd, ни usbkey): проконсультируйтесь с этим ответом. Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно. Поэтому, если вы хотите расширить свой раздел ext4, вы можете придерживаться обычных рабочих решений resize2fs.

Общее решение, которое я использовал, будет работать, например, для любого типа выделенного или VPS-решения.

TLDR; это решение подразумевает pivot_root - tmpfs, поэтому вы можете umount безопасно, чтобы ваш корневой раздел жил и играл с ним. После этого вы pivot_root вернетесь в свой новый корневой раздел.

Это позволяет практически любую манипуляцию в корневой файловой системе (перемещать ее, изменять файловую систему, изменять ее физическое устройство ...).

В процессе не требуется перезагрузка, и этот вы можете сжимать / перемещать / расширять сетевой корневой раздел из resize2fs, неспособный сжимать разделы ext4. [ ! d6]

Я лично использовал это, и он отлично работает и в debian system, поэтому он должен работать на Ubuntu. Я очень удивлен, не увидев, что это углубленное решение немного связано со многими вопросами на веб-сайтах stackexchange, которые касаются одной и той же проблемы.

не может сжиматься Конечно, если вы хотите увеличить свой раздел, достаточно простого resize2fs, как указано во многих местах и ​​в других ответах здесь.

7
ответ дан 24 July 2018 в 18:37
  • 1
    Это отлично сработало для меня. Однако я сделал дополнительно, чтобы сохранить флаг загрузки в исходное состояние. – Augustus Kling 11 August 2012 в 01:56
  • 2
    Очень полезная статья по той же теме: underscore.at/underscore/newsshow.xml?id=69 cfdisk мне очень помогла. – Frosty Z 27 May 2013 в 19:53
  • 3
    Вопрос задал вопрос, как это сделать, не закрывая. Вам понадобится программа, которая может обновлять записи ядра для таблицы разделов диска с установленными разделами. Я читал, что работа partprobe [<device>] должна работать, но в настоящее время у меня нет системы, где я могу ее протестировать. – jbo5112 3 December 2013 в 00:22
  • 4
    @ jbo5112: Как говорит fdisk, partprobe или kpartx могут работать вместо перезагрузки; см. также этот вопрос . Даже если вы перезагружаетесь, решение по-прежнему предпочтительнее использовать Live CD, когда дело доходит до времени простоя, где простая перезагрузка может быть менее 10 с для виртуальной машины. Это также быстрее во время работы оператора, поэтому я обычно сам использую этот подход. :) – Søren Løvborg 4 December 2013 в 00:07
  • 5
    @Raymond: если позволяет давление памяти (см. [F1]), отключите swap (swapoff /dev/sda2), измените таблицу разделов (включая удаление и воссоздание раздела подкачки) и либо выполните 1) перезагрузку, либо 2) перезагрузите таблицу разделов и swapon снова. (Если память слишком жесткая, чтобы временно отключить свопинг, вы все равно можете создать и включить новый раздел swap (/dev/sda3), затем выполнить swapoff sda2, но тогда вам придется обновлять /etc/fstab с новым именем устройства подкачки.) – Søren Løvborg 9 July 2015 в 00:15
  • 6
    Я думаю, что большинство людей, как только вы остановите все программы и службы, обращающиеся к корневому разделу, вы также можете перезагрузить машину. Для сокращения / перемещения это может быть еще быстрее, если использовать живой компакт-диск, но для роста (безусловно, самой общей задачи и того, о чем спрашивал ОП) существуют способы, которые не связаны с временным отключением большей части системы , – Søren Løvborg 8 March 2016 в 22:35
  • 7
    @ SørenLøvborg: вы можете перезапустить основные службы, которые нуждаются в непрерывном производстве, выполняя полную процедуру. Существует множество конфигураций, в которых вы не можете поместить LiveCD (экземпляры VPS, выделенные серверы ...) или обстоятельства, при которых вы хотите избежать перезагрузки по определенным причинам. Название оригинального вопроса упоминает «изменение размера», которое привлекает людей, ищущих сжатые разделы в Интернете. ** Никакое другое решение не позволяет сжимать ext4 онлайн. ** Это решение является рискованным, сложным, но самым мощным из всех, и оно заполняет недостатки других. – vaab 9 March 2016 в 09:41

Как было указано ранее:

возможно расширение из корневой системы (без проблем, поскольку загрузочный раздел не должен быть перемещен). Сокращение живого корневого раздела необходимо сделать из внешней загрузки устройство (загрузиться с live system cd / usb-stick), как будто есть какая-либо ошибка, несоответствие. Независимо от того, какая ваша система зависает, ее необходимо перезагрузить и в конечном итоге не смогут правильно загрузиться.

Любой вид «но я сделал это, и он работает» - это просто удача.

0
ответ дан 24 July 2018 в 18:37

Выполните следующие действия.

откройте терминал как суперпользователь su запустите parted тип p, чтобы увидеть доступные разделы, чтобы определить номер вашего корневого раздела (например: «sda 3» означает номер 3) и удалите смежный раздел, используя rm PARTITION NUMBER, чтобы создать свободное пространство. теперь увеличьте размер корня, набрав resizepart ROOT NUMBER и перезагрузив систему, если необходимо, выйдите parted, набрав exit и в типе терминала partprobe и нажмите enter (это можно сделать даже после перезагрузки), наконец, запустите resize2fs /dev/sda PARTITION NUMBER и наслаждайтесь просторный корневой раздел.
0
ответ дан 24 July 2018 в 18:37

Как уже отмечалось ранее, достаточно просто сбросить флаг загрузки

run 'parted'

parted /dev/sda

проверить номер раздела

(parted) print

сбросить загрузку флаг на номер раздела '1' в этом случае

(parted) set 1 boot on (parted) quit
-6
ответ дан 24 July 2018 в 18:37
  • 1
    Как это поможет во время онлайн-операции изменения размера? -1 – David Foerster 15 September 2017 в 12:13

Вы также можете просто использовать GParted - пока размер, размер которого вы изменяете, не тот, который вы загрузили, - иначе я предлагаю, чтобы опция live CD несколько упрощалась для новичков.

GParted в основном выполняет все шаги - только на основе графического интерфейса.

8
ответ дан 24 July 2018 в 18:37
  • 1
    Я загрузил свою систему с Ubuntu 12.04 Live CD и изменил размер раздела ext4 с помощью GParted. Работала хорошо для меня. Во всяком случае, до этой операции я резервировал все свои важные данные. – StandDuPp 29 May 2013 в 01:16
  • 2
    я думаю, gparted нужно разбить раздел. но я могу ошибаться. – Nick 27 January 2016 в 22:02
  • 3
    Вопрос, очевидно, в том, что раздел, из которого они загружаются, и загрузка загруженного компакт-диска требует перезапуска машины. -1 – wjandrea 21 May 2017 в 05:28

Я сделал это успешно без umount, pivot_root или временного удаления основного раздела, используя parted 3.2 в ядре Ubuntu 16.04, 4.4.0. Чтобы быть осторожным, я делал все с виртуальной консоли с отключенным отключением сети и делал снимок заранее на всякий случай, но моментальный снимок не нужен, поэтому я мог бы так же хорошо это сделать через SSH и без изменения уровней запуска.

Определите размер раздела: parted /dev/sda1 print | egrep "Disk.*GB"

Опционально переключитесь в многопользовательский режим без сети (это должно выполняться с консоли, а не SSH):

runlevel # remember the original runlevel init 2

Необязательно

Изменить размер раздела:

parted p resizepart NUMBER SIZE # answer "Yes" when asked about resizing a live partition. q

Изменить размер файловой системы: resize2fs /dev/sda1

Если что-то пойдет не так, вы можете восстановить свою снимок здесь. Если все пошло нормально, вернитесь к нормальному уровню выполнения (полученному выше) - обычно 5: init 5. На этом этапе лучше всего выполнить полную перезагрузку, чтобы убедиться, что все вернулось должным образом (после этого у меня была дата / ntp).

0
ответ дан 24 July 2018 в 18:37

Простое решение - используйте growpart <device> <partition>:

growpart /dev/xvda 1 # Grows the partition; note the space resize2fs /dev/xvda1 # Grows the filesystem

Как всегда, резервное копирование таблицы разделов (sfdisk -d /dev/xvda > partition_bak.dmp) на всякий случай.

16
ответ дан 24 July 2018 в 18:37

Я хотел бы сделать расширение ответа @ Søren Løvborg: расширение раздела с разделом подкачки.

Сначала раскладка диска после его расширения:

$sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start      End        Size       Type      File system     Flags
        63s        2047s      1985s                Free Space
 1      2048s      10485759s  10483712s  primary   ext4            boot
        10485760s  10487805s  2046s                Free Space
 2      10487806s  12580863s  2093058s   extended
 5      10487808s  12580863s  2093056s   logical   linux-swap(v1)
        12580864s  14335999s  1755136s             Free Space

Поэтому sda1 необходимо расширить с помощью свободного места в конце диска, но раздел подкачки находится между ними. Так вы можете это сделать:

Сначала нам нужно отключить swap. Проверьте, сколько он используется, и если вы можете отключить его.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M         52M        464M        3.2M        475M        784M
Swap:          1.0G          0B        1.0G

swap здесь не используется, поэтому мы можем отключить его

$sudo swapoff /dev/sda2

Теперь мы изменим раздел table:

$sudo fdisk /dev/sda

(обратите внимание: если вам не удалось запустить первый раздел в секторе 63 вместо 2048, вам нужно добавить опцию -c=dos)

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 6.9 GiB, 7340032000 bytes, 14336000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e11c6df

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 10485759 10483712    5G 83 Linux
/dev/sda2       10487806 12580863  2093058 1022M  5 Extended
/dev/sda5       10487808 12580863  2093056 1022M 82 Linux swap / Solaris

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 122                                                                  42941

Created a new partition 1 of type 'Linux' and of size 5.9 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):

Created a new partition 2 of type 'Linux' and of size 1022 MiB.

Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is enabled now.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Примечание: размер sda1 - это общее количество секторов за вычетом размера сектора вашего раздела подкачки: 14335999-2093058 = 12242941

Как упоминается fdisk: ядро ​​по-прежнему использует старую таблицу разделов, поэтому нам нужно чтобы перезагрузить его.

$partprobe

Теперь нам нужно запустить resize2fs на sda1 (не забывайте об этом!) [/ ​​g9]

$resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.

Теперь все еще не закончилось. Как вы, вероятно, заметили, что sda2 разделяется на разделы как Linux (Ext4). По какой-то причине в fdisk нет способа выбрать тип. Поэтому мы должны чередовать его с помощью cfdisk

$ sudo cfdisk

Выберите sda2 и измените тип на 82 Linux swap / Solaris и убедитесь, что вы его записываете (введите yes для подтверждения)

Теперь мы можем повторно активировать swap

$mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0

И, наконец, включить его:

$swapon /dev/sda2

Единственное, что нам нужно сделать, это обновить fstab автоматически монтировать раздел подкачки при загрузке

$sudo nano /etc/fstab

И изменить UUID раздела подкачки на вышеописанный вывод:

# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none            swap    sw              0       0

Теперь все хорошо, и вы можете перезагружаться без проблемы.

0
ответ дан 7 October 2018 в 22:53

Другие вопросы по тегам:

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