Как я могу увеличить размер корневого раздела системы во время выполнения?
У меня есть раздел, который не выделен после корневого раздела (который также является ext4), как я могу добавить это нераспределенное пространство в пространство, выделенное для корневого раздела, без необходимости выключать сервер?
partitioning
ext4
BonboBingo
источник
источник
Ответы:
GUI (Ubuntu 14.04 и более поздние версии ) : GParted v0.17 и более поздние предоставляют хороший графический интерфейс для этого. (Старые версии откажутся изменять размер смонтированного раздела).
Командная строка (любая версия Ubuntu): Есть три шага к этому.
Шаг 1. Сначала необходимо изменить размер раздела. Если вы используете LVM, это легко, и вы, вероятно, знаете, как действовать. Если вы используете классические разделы, это немного сложнее и может потребовать перезагрузки (хотя вам никогда не придется загружать другую систему или live CD).
Вот как я это делаю:
fdisk
сначала используйте для удаления раздела (идея заключается в том, что данные на диске будут сохранены), а затем осторожно воссоздайте его с большим размером в той же позиции.Пример:
Опять же, важно, чтобы новый раздел начинался с того же блока, что и старый. Идентификатор также должен совпадать (83 для систем Linux). Будьте готовы потерять все ваши данные при малейшей опечатке.
Чтобы быть в безопасности, вы также можете восстановить флаг загрузки (который, согласно Википедии , все еще требуется на некоторых компьютерах), нажав
a
.Смотрите в разделе комментариев, что делать, если ваш раздел подкачки мешает.
К настоящему времени должно стать очевидным, почему люди рекомендуют использовать live CD. ;-)
Шаг 2. Как
fdisk
напоминает вам, вы должны перезагрузить таблицу разделов, прежде чем продолжить. Самый безопасный способ - просто перезагрузиться; но вы также можете использоватьpartprobe
илиkpartx
(дополнительная информация) .Шаг 3. После изменения размера раздела и перезагрузки таблицы разделов, это просто запустить
resize2fs
в файловой системе, и вы можете сделать это, даже если он смонтирован как корневой раздел.Пример:
источник
fdisk
говорится,partprobe
илиkpartx
может работать вместо перезагрузки; см. также этот вопрос . Даже если вы перезагружаетесь, решение все равно предпочтительнее использования live CD, когда речь идет о времени простоя, когда простая перезагрузка может быть менее 10 с для виртуальной машины. Это также быстрее во времени оператора, поэтому я обычно использую этот подход сам. :)free -h
), Отключите функцию swap (swapoff /dev/sda2
), измените таблицу разделов (включая удаление и воссоздание раздела подкачки) и либо 1) перезагрузите компьютер, либо 2) перезагрузите таблицу разделов иswapon
снова. (Если памяти слишком мало, чтобы временно отключить подкачку, вы все равно можете создать и включить новый раздел подкачки (/dev/sda3
), затем поменять местамиsda2
; но тогда вам придется обновить/etc/fstab
имя нового устройства подкачки.)Возможно изменение размера файловой системы ext4 в режиме онлайн, даже если это ваш корневой раздел. Используйте
resize2fs
команду.РЕДАКТИРОВАТЬ: он-лайн сокращения не допускается:
источник
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).
Этот вопрос касается изменения размера раздела , а не файловой системы . Различие тонкое, но очень важное.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.).
fdisk
когдаgrowpart
сделаете это очень легко для вас.Более простое решение - используйте
growpart <device> <partition>
:Как всегда, сделайте резервную копию таблицы разделов (
sfdisk -d /dev/xvda > partition_bak.dmp
) на всякий случай.источник
sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table
(используя двойную загрузку с Windows)gparted
для этого.apt-get install cloud-utils
/dev/nvme0n1
. p5 это раздел 5 на этом диске. Сравните с традиционными разделами дисков BSD, они используют аналогичную схему нумерации.Да, вы можете уменьшить / переместить / увеличить корневой раздел в сети без перезагрузок (ни livecd, ни usbkey): обратитесь к этому ответу . Это очень хорошо написано и легко следовать, хотя довольно долго и немного рискованно. Так что, если вы хотите увеличить только раздел ext4, вы можете придерживаться обычных рабочих
resize2fs
решений.Общее решение, которое я написал, будет работать, например, с любым типом выделенного решения или решения VPS.
TLDR; это решение подразумевает ,
pivot_root
чтобыtmpfs
таким образом вы можетеumount
безопасно корневой раздел жить и возиться с ним. После этого выpivot_root
вернетесь к своему новому корневому разделу.Это позволяет практически любые манипуляции с корневой файловой системой (переместить ее, изменить файловую систему, изменить ее физическое устройство ...).
Перезагрузка не требуется в процессе, и это позволяет обойти ограничение на
resize2fs
не будучи в состоянии сжиматьсяext4
разделов.Я лично использовал это, и он очень хорошо работает и в системе Debian, поэтому он должен работать и в Ubuntu. Я очень удивлен, что не вижу такого углубленного решения, более тесно связанного со многими вопросами на веб-сайтах stackexchange, которые занимаются той же проблемой.
Примечание: конечно, если вы хотите увеличить свой раздел, достаточно
resize2fs
будет простого , как указано во многих местах и в других ответах здесь.источник
Вы также можете просто использовать GParted - если размер раздела, который вы изменяете, не тот, с которого вы загрузились, - в противном случае я полагаю, что вариант с живым компакт-диском для новичков несколько проще.
GParted в основном делает все шаги - только на основе графического интерфейса пользователя.
источник
Только что завершил изменение размера корневого раздела ext4 в работающей системе, пока монтировался root.
источник
Я хотел бы сделать продолжение ответа @ Søren Løvborg: расширение раздела с помощью раздела подкачки.
Сначала разметка диска после его расширения:
Таким образом, sda1 необходимо расширить с помощью свободного места в конце диска, но раздел подкачки находится между ними. Вот как вы можете это сделать:
Сначала нам нужно отключить своп. Проверьте, сколько он используется, и если вы можете отключить его.
своп здесь не используется, поэтому мы можем его отключить
Теперь мы изменим таблицу разделов:
(примечание: если у вас первый раздел начинается с сектора 63 вместо 2048, вам нужно добавить опцию
-c=dos
)Примечание: размер sda1 - это общее количество секторов минус размер сектора вашего раздела подкачки: 14335999-2093058 = 12242941
Как упоминает fdisk: ядро все еще использует старую таблицу разделов, поэтому нам нужно перезагрузить ее.
Теперь нам нужно запустить resize2fs на sda1 (не забудьте об этом!)
Теперь все еще не закончено. Как вы, наверное, заметили, sda2 разделен как тип Linux (Ext4). По какой-то причине в fdisk нет способа выбрать тип. Таким образом, мы должны чередовать это с помощью
cfdisk
Выберите sda2 и измените тип на
82 Linux swap / Solaris
и убедитесь, что вы пишете его (введите yes для подтверждения)Теперь мы можем повторно активировать своп
И, наконец, включите его:
Единственное, что нам нужно сделать, это обновить fstab для автоматического монтирования раздела подкачки при загрузке
И измените UUID раздела подкачки на вывод выше:
Теперь все хорошо и вы можете перезагрузиться без проблем.
источник
mkswap
&swapon
должны быть запущены на sda2. Я действительно ошибся в начале своего поста:swapoff
нужно выполнить на sda5. Комментарии всегда приветствуются, это было сложно записать.cryptdisks_stop
, затем обновить / etc / crypttab вместо/etc/fstab
и перезапустить cryptdisk сcryptdisks_start
.Я просто сделал это успешно без
umount
,pivot_root
или временное удаление основного раздела, используя расстался 3.2 на Ubuntu 16.04, 4.4.0 ядра. Чтобы быть осторожным, я делал все с виртуальной консоли с отключенной сетью и на всякий случай заранее сделал снимок, но снимок не понадобился, поэтому я мог бы сделать это с помощью SSH и без изменения уровней запуска.Определить размер раздела:
parted /dev/sda1 print | egrep "Disk.*GB"
При желании можно переключиться в многопользовательский режим без подключения к сети (это необходимо сделать из консоли, а не по SSH):
При желании сделайте снимок виртуальной машины, чтобы быть осторожным.
Изменить размер раздела:
Изменить размер файловой системы:
resize2fs /dev/sda1
Если что-то пойдет не так, вы можете восстановить свой снимок здесь. Если все прошло нормально, вернуться к нормальному (уровню выполнения полученного выше) - обычно 5:
init 5
. Может быть, лучше сделать полную перезагрузку на этом этапе, чтобы убедиться, что все возвращается правильно (у меня возникла проблема с date / ntp позже).источник
Следуй этим шагам.
su
parted
p
чтобы увидеть доступные разделыrm PARTITION NUMBER
для создания свободного места.resizepart ROOT NUMBER
и перезагрузив систему, если это необходимоparted
, набравexit
и в терминале типаpartprobe
и нажмите Enter (это может быть сделано даже после перезагрузки)resize2fs /dev/sda PARTITION NUMBER
и наслаждайтесь просторным корневым разделом.источник
Как указано ранее:
возможно расширение live от корневой системы (нет проблем, так как загрузочный раздел не должен быть перемещен)
сжатие живого корневого раздела необходимо выполнить с внешнего загрузочного устройства (загрузка с работающей системы cd / usb-stick), как если бы произошла какая-либо ошибка, несоответствие ... что угодно ... ваша система зависает, ее необходимо перезагрузить и в конечном итоге она не будет умеет загружаться правильно.
Любое "но я сделал это, и это работает" - чистая удача.
источник