Как увеличить размер корневого раздела системы во время выполнения?
У меня есть раздел, который не выделяется после корневого раздела (который также является ext4), как я могу добавить это нераспределенное пространство в пространство, выделенное корневому разделу, без необходимости остановки сервера?
Можно сделать он-лайн изменение размера файловой системы 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
Только что закончил изменение корневого раздела 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]#
Да, вы можете сжимать / перемещать / расширять онлайн-корневой раздел без каких-либо перезагрузок (ни livecd, ни usbkey): проконсультируйтесь с этим ответом. Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно. Поэтому, если вы хотите расширить свой раздел ext4, вы можете придерживаться обычных рабочих решений resize2fs.
Общее решение, которое я использовал, будет работать, например, для любого типа выделенного или VPS-решения.
TLDR; это решение подразумевает pivot_root - tmpfs, поэтому вы можете umount безопасно, чтобы ваш корневой раздел жил и играл с ним. После этого вы pivot_root вернетесь в свой новый корневой раздел.
Это позволяет практически любую манипуляцию в корневой файловой системе (перемещать ее, изменять файловую систему, изменять ее физическое устройство ...).
В процессе не требуется перезагрузка, и этот вы можете сжимать / перемещать / расширять сетевой корневой раздел из resize2fs, неспособный сжимать разделы ext4. [ ! d6]
Я лично использовал это, и он отлично работает и в debian system, поэтому он должен работать на Ubuntu. Я очень удивлен, не увидев, что это углубленное решение немного связано со многими вопросами на веб-сайтах stackexchange, которые касаются одной и той же проблемы.
не может сжиматься Конечно, если вы хотите увеличить свой раздел, достаточно простого resize2fs, как указано во многих местах и в других ответах здесь.
Как было указано ранее:
возможно расширение из корневой системы (без проблем, поскольку загрузочный раздел не должен быть перемещен). Сокращение живого корневого раздела необходимо сделать из внешней загрузки устройство (загрузиться с live system cd / usb-stick), как будто есть какая-либо ошибка, несоответствие. Независимо от того, какая ваша система зависает, ее необходимо перезагрузить и в конечном итоге не смогут правильно загрузиться.Любой вид «но я сделал это, и он работает» - это просто удача.
Выполните следующие действия.
откройте терминал как суперпользователь su запустите parted тип p, чтобы увидеть доступные разделы, чтобы определить номер вашего корневого раздела (например: «sda 3» означает номер 3) и удалите смежный раздел, используя rm PARTITION NUMBER, чтобы создать свободное пространство. теперь увеличьте размер корня, набрав resizepart ROOT NUMBER и перезагрузив систему, если необходимо, выйдите parted, набрав exit и в типе терминала partprobe и нажмите enter (это можно сделать даже после перезагрузки), наконец, запустите resize2fs /dev/sda PARTITION NUMBER и наслаждайтесь просторный корневой раздел.Как уже отмечалось ранее, достаточно просто сбросить флаг загрузки
run 'parted'
parted /dev/sda
проверить номер раздела
(parted) print
сбросить загрузку флаг на номер раздела '1' в этом случае
(parted) set 1 boot on
(parted) quit
Вы также можете просто использовать GParted - пока размер, размер которого вы изменяете, не тот, который вы загрузили, - иначе я предлагаю, чтобы опция live CD несколько упрощалась для новичков.
GParted в основном выполняет все шаги - только на основе графического интерфейса.
Я сделал это успешно без 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).
Простое решение - используйте 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) на всякий случай.
Можно сделать он-лайн изменение размера файловой системы 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
Только что закончил изменение корневого раздела 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]#
Да, вы можете сжимать / перемещать / расширять онлайн-корневой раздел без каких-либо перезагрузок (ни livecd, ни usbkey): проконсультируйтесь с этим ответом. Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно. Поэтому, если вы хотите расширить свой раздел ext4, вы можете придерживаться обычных рабочих решений resize2fs.
Общее решение, которое я использовал, будет работать, например, для любого типа выделенного или VPS-решения.
TLDR; это решение подразумевает pivot_root - tmpfs, поэтому вы можете umount безопасно, чтобы ваш корневой раздел жил и играл с ним. После этого вы pivot_root вернетесь в свой новый корневой раздел.
Это позволяет практически любую манипуляцию в корневой файловой системе (перемещать ее, изменять файловую систему, изменять ее физическое устройство ...).
В процессе не требуется перезагрузка, и этот вы можете сжимать / перемещать / расширять сетевой корневой раздел из resize2fs, неспособный сжимать разделы ext4. [ ! d6]
Я лично использовал это, и он отлично работает и в debian system, поэтому он должен работать на Ubuntu. Я очень удивлен, не увидев, что это углубленное решение немного связано со многими вопросами на веб-сайтах stackexchange, которые касаются одной и той же проблемы.
не может сжиматься Конечно, если вы хотите увеличить свой раздел, достаточно простого resize2fs, как указано во многих местах и в других ответах здесь.
Как было указано ранее:
возможно расширение из корневой системы (без проблем, поскольку загрузочный раздел не должен быть перемещен). Сокращение живого корневого раздела необходимо сделать из внешней загрузки устройство (загрузиться с live system cd / usb-stick), как будто есть какая-либо ошибка, несоответствие. Независимо от того, какая ваша система зависает, ее необходимо перезагрузить и в конечном итоге не смогут правильно загрузиться.Любой вид «но я сделал это, и он работает» - это просто удача.
Выполните следующие действия.
откройте терминал как суперпользователь su запустите parted тип p, чтобы увидеть доступные разделы, чтобы определить номер вашего корневого раздела (например: «sda 3» означает номер 3) и удалите смежный раздел, используя rm PARTITION NUMBER, чтобы создать свободное пространство. теперь увеличьте размер корня, набрав resizepart ROOT NUMBER и перезагрузив систему, если необходимо, выйдите parted, набрав exit и в типе терминала partprobe и нажмите enter (это можно сделать даже после перезагрузки), наконец, запустите resize2fs /dev/sda PARTITION NUMBER и наслаждайтесь просторный корневой раздел.Как уже отмечалось ранее, достаточно просто сбросить флаг загрузки
run 'parted'
parted /dev/sda
проверить номер раздела
(parted) print
сбросить загрузку флаг на номер раздела '1' в этом случае
(parted) set 1 boot on
(parted) quit
Вы также можете просто использовать GParted - пока размер, размер которого вы изменяете, не тот, который вы загрузили, - иначе я предлагаю, чтобы опция live CD несколько упрощалась для новичков.
GParted в основном выполняет все шаги - только на основе графического интерфейса.
Я сделал это успешно без 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).
Простое решение - используйте 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) на всякий случай.
Я хотел бы сделать расширение ответа @ 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
Теперь все хорошо, и вы можете перезагружаться без проблемы.