Linux увеличивает размер диска

Обновлено: 02.07.2024

Руководства, учебные пособия, обзоры и новости для системных администраторов.

Как увеличить размер LVM Linux за счет расширения диска виртуальной машины

В этом посте рассказывается, как увеличить дисковое пространство для виртуальной машины VMware под управлением Linux, использующей диспетчер логических томов (LVM). Во-первых, мы будем увеличивать размер фактического диска на виртуальной машине VMware, поэтому на аппаратном уровне — это файл .vmdk виртуальной машины. Как только это будет завершено, мы войдем в виртуальную машину и внесем необходимые изменения в операционную систему, чтобы воспользоваться дополнительным пространством, предоставленным расширяемым жестким диском. Это потребует создания нового раздела с новым пространством, расширения группы томов и логической группы, а затем, наконец, изменения размера файловой системы.

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

Обновление от 18 апреля 2015 г. Я создал видеоруководство по этому сообщению в CentOS 7, показанное ниже.

Важное примечание. Будьте очень осторожны при работе с командами, описанными в этой статье, поскольку они могут нанести большой ущерб вашим данным. Если вы работаете с виртуальными машинами, убедитесь, что вы заранее сделали снимок своей виртуальной машины или иным образом имеете актуальную резервную копию в какой-либо другой форме, прежде чем продолжить. Обратите внимание, что снимок нельзя делать до тех пор, пока виртуальный диск не будет увеличен, иначе вы не сможете его увеличить. Также может быть целесообразно сначала клонировать виртуальную машину и протестировать этот метод на клоне.

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

Во всех своих примерах я буду работать с виртуальной машиной VMware под управлением Debian 6, она была настроена с диском на 20 ГБ, и мы увеличим его на 10 ГБ до общего конечного размера 30 ГБ.

Определение типа раздела

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

Как вы можете видеть на изображении выше, /dev/sda5 указан как «Linux LVM» и имеет идентификатор 8e. Шестнадцатеричный код 8e показывает, что это Linux LVM, а 83 показывает родной раздел Linux. Теперь, когда мы подтвердили, что работаем с LVM, мы можем продолжить. Чтобы узнать, как увеличить размер собственного раздела Linux (шестнадцатеричный код 83), см. эту статью.

Ниже приведена информация о диске, показывающая, что наша первоначальная установка в настоящее время имеет только один диск емкостью 20 ГБ, который находится в логическом томе с именем /dev/mapper/Mega-root — это то, что мы будем расширять с помощью нового диска.

Обратите внимание, что /dev/mapper/Mega-root — это том, который в настоящее время состоит из /dev/sda5 — это то, что мы будем расширять.

Увеличение виртуального жесткого диска

Сначала мы увеличиваем выделенное дисковое пространство на самой виртуальной машине. Это можно сделать, щелкнув правой кнопкой мыши виртуальную машину в vSphere, выбрав параметры редактирования, а затем выбрав жесткий диск. На изображении ниже я изменил ранее установленный жесткий диск с 20 ГБ на 30 ГБ, пока виртуальная машина запущена и работает. После завершения нажмите OK, это все, что нужно сделать в VMware для этого процесса.

Если вы не можете изменить размер диска, параметр подготовленного размера отображается серым цветом. Это может произойти, если на виртуальной машине есть моментальный снимок, который необходимо удалить перед внесением изменений на диск. В качестве альтернативы вам может потребоваться выключить виртуальную машину, если она не позволяет вам добавлять или увеличивать количество дисков на лету, в этом случае внесите изменения, а затем снова включите ее.

Определить новое место на диске

После того, как физический диск был увеличен на аппаратном уровне, нам нужно войти в операционную систему и создать новый раздел, который использует это пространство для продолжения.

Прежде чем мы сможем это сделать, нам нужно убедиться, что новое нераспределенное дисковое пространство обнаружено сервером, вы можете использовать «fdisk -l», чтобы вывести список основного диска. Скорее всего, вы увидите, что дисковое пространство по-прежнему отображается как исходный размер, на этом этапе вы можете либо перезагрузить сервер, и он обнаружит изменения при загрузке, либо вы можете повторно просканировать свои устройства, чтобы избежать перезагрузки, выполнив приведенную ниже команду. Обратите внимание, что вам может потребоваться изменить host0 в зависимости от ваших настроек.

Ниже показано изображение после выполнения этого действия и подтверждения отображения нового пространства.

Разделите новое дисковое пространство на разделы

Как показано на моих предыдущих изображениях, в моем примере я работаю с диском /dev/sda, поэтому мы используем fdisk для создания нового основного раздела, чтобы использовать новое расширенное дисковое пространство. Обратите внимание, что у нас еще нет 4 основных разделов, что делает этот метод возможным.

Сейчас мы используем fdisk для создания нового раздела. Введенные мной данные выделены ниже жирным шрифтом. Обратите внимание, что вы можете нажать «m», чтобы получить полный список команд fdisk.

Для добавления нового раздела было выбрано ‘n’.

Затем выбирается ‘p’, так как мы создаем основной раздел.

Поскольку у меня уже есть /dev/sda1 и /dev/sda2, как показано на предыдущих изображениях, я использовал «3» для этого нового раздела, который будет создан как /dev/sda3

Мы просто дважды нажимаем Enter выше, так как по умолчанию первый и последний цилиндры нераспределенного пространства должны быть правильными. После этого раздел готов.

«t» выбран для изменения системного идентификатора раздела, в этом случае мы меняем на «3», который мы только что создали.

Введен шестнадцатеричный код «8e», так как это код для Linux LVM, которым мы хотим, чтобы этот раздел был, поскольку мы будем объединять его с исходным /dev/sda5 Linux LVM.

«w» используется для записи таблицы на диск и выхода, в основном все сделанные изменения будут сохранены, а затем вы выйдете из fdisk.

Вы увидите предупреждение, которое в основном означает, что для использования новой таблицы с изменениями требуется перезагрузка системы. Если вы не видите новый раздел с помощью «fdisk -l», вы можете запустить «partprobe -s» для повторного сканирования разделов. В моем тесте на данном этапе мне не требовалась ни одна из этих вещей (позже я перезагружаюсь), сразу после нажатия «w» в fdisk я смог увидеть новый раздел /dev/sda3 моего 10 ГБ пространства, как показано на изображении ниже.

Для CentOS/RHEL запустите «partx -a /dev/sda3», чтобы избежать перезагрузки позже.

Это все, что касается разделения, теперь у нас есть новый раздел, который использует ранее нераспределенное дисковое пространство из-за увеличения VMware.

Увеличение логического тома

Мы используем команду pvcreate, которая создает физический том для последующего использования диспетчером логических томов (LVM). В этом случае физическим томом будет наш новый раздел /dev/sda3.

Чтобы обойти это, вы можете либо перезагрузиться, либо использовать partprobe/partx, как упоминалось ранее, чтобы избежать перезагрузки, так как в этом случае диск не отображается правильно, несмотря на то, что отображается в «fdisk -l». После перезагрузки или использования partprobe/partx используйте ту же команду, которая завершится успешно.

Далее нам нужно подтвердить имя текущей группы томов с помощью команды vgdisplay. Имя будет варьироваться в зависимости от вашей настройки, для меня это имя моего тестового сервера. vgdisplay предоставляет много информации о группе томов, в этом примере я показал только ее имя и текущий размер.

Теперь мы расширяем группу томов «Mega», добавляя физический том /dev/sda3, созданный ранее с помощью команды pvcreate.

С помощью команды pvscan мы сканируем все диски на наличие физических томов, это должно подтвердить исходный раздел /dev/sda5 и только что созданный физический том /dev/sda3

Далее нам нужно увеличить логический том (а не физический том), что в основном означает, что мы возьмем наш исходный логический том и расширим его на наш новый раздел/физический том /dev/sda3.

Сначала подтвердите путь к логическому тому с помощью lvdisplay. Это имя пути зависит от вашей настройки.

Затем логический том расширяется с помощью команды lvextend.

Затем остается последний шаг, который заключается в изменении размера файловой системы, чтобы она могла использовать дополнительное пространство. Это делается с помощью команды resize2fs для файловых систем на основе ext. Обратите внимание, что это может занять некоторое время, для моего дополнительного места потребовалось около 30 секунд.

В качестве альтернативы, если вы используете файловую систему XFS (по умолчанию в RedHat/CentOS 7), вы можете расширить файловую систему с помощью «xfs_growfs /dev/Mega/root».

Вот и все, теперь с помощью команды «df» мы видим, что общее доступное дисковое пространство увеличилось.

Обзор

С помощью этого метода мы увеличили виртуальный диск с помощью VMware, создали новый раздел из этого недавно нераспределенного пространства в гостевой ОС, превратили его в физический том, расширили группу томов, а затем, наконец, расширили исходный логический раздел. том поверх нового физического тома, что приводит к успешному увеличению общего дискового пространства.

Несколько дней назад один из наших клиентов Performance Analyzer спросил на семинаре, как мы справляемся с ростом данных с течением времени и как они могут изменить размер раздела данных.Как и многие другие клиенты, они хотят убедиться, что диски не переполнятся в ближайшее время.

С другой стороны, наша цель заключалась в том, чтобы ни одному клиенту не нужно было увеличивать размер диска с данными, и наше автоматическое изменение размера решает эту проблему очень удобным способом:

Требуется только простое изменение размера виртуального диска виртуального устройства, а сценарии в нашем устройстве выполняют все остальное автоматически.

Это можно сделать во время работы виртуальной машины, используя практически любой современный дистрибутив Linux — просто убедитесь, что нет активных моментальных снимков!

При первом использовании этого руководства в производственной системе мы рекомендуем сделать резервную копию (без моментальных снимков).

Performance Analyzer достаточно умен, чтобы обнаружить изменение и увеличить как раздел, так и файловую систему, содержащуюся в разделе.

Все сделано в задании cron:

  • определить изменение размера загрузочного диска или диска с данными
  • изменить размер последнего раздела, чтобы добавить новое пространство

Но что за волшебство стоит за этим?

Что-то, о чем мы не упомянули – все делается без LVM!

Давайте подробнее:

Устройство Performance Analyzer имеет конфигурацию с двумя дисками. На первом диске находится операционная система, на втором — данные. Мы пропустили раздел подкачки и имеем файл подкачки в корневой файловой системе. Это приемлемо, поскольку мы в любом случае избегаем обмена.

Важно знать, что только последний или единственный раздел на диске (зеленый цвет) может быть изменен простым способом.
Разметка диска Performance Analyzer выглядит следующим образом:


настройка раздела диска

Если вы хотите увеличить второй диск, вы просто меняете конфигурацию ВМ и увеличиваете там диск. Если этот параметр неактивен, обязательно удалите существующие снимки.


увеличить виртуальный диск

Несмотря на изменение размера диска, ядро ​​Linux не знает об этом изменении.


Размер диска изменен, но ядро ​​Linux не знает о новом размере без перезагрузки или взаимодействия

Чтобы сообщить ядру, можно выполнить следующую команду от имени пользователя root:

Это запускает повторное сканирование устройства sdb. Если вы изменили размер другого диска, замените sdb номером диска, который вы изменили. Вы можете проследить процедуру в системном журнале — и вы должны увидеть несколько строк, похожих на эту:

Когда ядро ​​завершает повторное сканирование (обычно за доли секунды), оно узнает о большем диске:


обнаружен новый размер диска, раздел не изменился

Раздел не настраивается автоматически, и его размер также необходимо изменить в два этапа

  • изменение размера раздела
  • сообщить ядру о большем разделе

Обычно для первого шага выбирался инструмент fdisk, а для второго — утилита, такая как partprobe (или перезагрузка).
Но все изменилось, и вы можете использовать отличное программное обеспечение под названием growpart

.

growpart является частью пакета cloud-utils-package и должен быть доступен в репозиториях вашего дистрибутива, если он еще не установлен в вашей ОС. Дебиан или Убунту:

При расширении раздела увеличение раздела до максимального размера и информирование ядра об изменении размера раздела выполняется в одну строку:

Первый параметр — это дисковое устройство, второй параметр — это номер раздела, размер которого нужно изменить. После запуска GrowPart ваши диски будут выглядеть так:


Размер раздела изменяется с помощью GrowPart

Размер раздела изменен, и ядро ​​уже использует новую таблицу разделов.

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

Если вы используете любую другую файловую систему, вам нужно проверить наличие правильных инструментов для изменения размера.


полностью изменен размер без перезагрузки или LVM

Вот и все, размер диска, раздела и файловой системы изменен, и вы можете сразу же использовать освободившееся место на диске, без перезагрузки или использования LVM.

Собираем части вместе

Opvizor автоматизировал этот процесс, создав задание cron, которое запускается каждые 5 минут.Это задание проверяет, изменился ли размер одного из дисков анализатора производительности, и изменяет размеры разделов и файловых систем на этом диске.


Одной из общих задач любого системного администратора является управление дисковым пространством на сервере. Неважно, какая операционная система работает на сервере, вы всегда следите за свободным местом на диске. Я не буду вдаваться в скучную лекцию о том, почему управление дисковым пространством имеет решающее значение, поскольку я уверен, что многие из вас хорошо знают, что происходит, когда на сервере заканчивается доступное дисковое пространство. Таким образом, вместо того, чтобы получать телефонный звонок или сообщение о том, что на вашем сервере недостаточно места, вы можете управлять своим свободным пространством, динамически добавляя его! Да, с помощью одной перезагрузки компьютера (для установки физического или виртуального диска) вы можете легко добавить больше места и обеспечить бесперебойную работу.

В демонстрационных целях в этой статье основное внимание будет уделено увеличению дискового пространства на виртуальном сервере Redhat с одним виртуальным диском размером 25 ГБ. На этом диске всего 1 ГБ свободного места, и вам нужно добавить еще 25 ГБ, чтобы справиться с установкой нового приложения и прогнозируемым ростом. Важно отметить, что вы можете добавить больше места к существующим группам томов в настройке LVM. LVM — это тип управления дисками по умолчанию, который использует Redhat, поэтому у вас уже должна быть эта настройка. Если вы пошли более классическим путем и просто создали разделы на физических дисках, это руководство не поможет, так как вы не сможете расширять существующие разделы подобным образом.

Учитывая эти требования, вот краткий обзор того, что мы будем делать:

<р>1. Предоставьте серверу новый физический диск

<р>2. Добавление нового физического диска в существующую группу томов.

<р>3. Расширение логического тома в этой группе томов для использования нового дискового пространства.

<р>4. Уведомить операционную систему об изменении размера.

Шаг 1. Предоставьте серверу новый физический диск.

Это довольно простой шаг. Поскольку мы настроили виртуальную машину, нам просто нужно войти в vSphere, выключить операционную систему и добавить новый виртуальный диск через меню «Настройки». Для нашей демонстрации я добавлю новый диск 30G. Если вы работаете с физическим сервером, вам нужно будет добавить новый жесткий диск и убедиться, что BIOS видит новый диск. После добавления нового диска (физического или виртуального) снова запустите сервер и дайте Redhat загрузиться.

Шаг 2. Добавьте новый физический диск в существующую группу томов.

Теперь давайте проверим, видим ли мы новый диск. Если вы выполните команду fdisk -l, вы должны увидеть новый диск. Вот пример вывода:

В этом примере у нас есть 2 диска по 25 ГБ, /dev/sda и /dev/sdb. Очевидно, что эти значения будут разными для ваших физических или виртуальных дисков, в зависимости от установленного размера. Теперь, когда мы убедились, что ОС видит новый диск, нам нужно добавить его в существующую группу томов. Информацию о существующих группах томов можно получить с помощью команды vgdisplay:

Прежде чем мы сможем добавить новый диск в группу томов, нам нужно выполнить специальную команду форматирования, которая превратит диск в физический том. Это делает диск совместимым с LVM. Для этого введите команду pvcreate как таковую:

Теперь, когда диск является физическим томом, его можно добавить в группу томов. Вы можете сделать это с помощью команды vgextend как таковой:

Новый физический том теперь добавлен в группу томов и готов к выделению в логический том.

Шаг 3. Расширьте логический том, чтобы использовать новое пространство

Далее нам нужно запустить инструмент lvextend, чтобы расширить том, чтобы использовать новое пространство. Для этой команды вам нужно получить путь к логическому тому, который вы можете получить, выполнив команду lvdisplay Вот команда для расширения тома:

Теперь мы добавили новое пространство, но файловая система еще не знает об этом.

Шаг 4. Обновите файловую систему, чтобы использовать новое пространство

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

После небольшого ожидания ОС сообщит, что она завершена, и теперь наша файловая система / была расширена примерно на 25 ГБ! Теперь вам стало легче дышать.

Это очень простое введение в LVM и расширение размеров дисков. Если вам нужна дополнительная информация или помощь в расширении вашей системы, не стесняйтесь комментировать ниже! Буду рад помочь.

После увеличения размера тома EBS необходимо использовать команды, относящиеся к файловой системе, чтобы расширить файловую систему до большего размера. Вы можете изменить размер файловой системы, как только том перейдет в состояние оптимизации.

Прежде чем расширять файловую систему, содержащую ценные данные, рекомендуется создать моментальный снимок тома на случай, если вам потребуется откатить изменения. Дополнительные сведения см. в разделе Создание моментальных снимков Amazon EBS. Если ваш Linux AMI использует схему разбиения MBR, вы ограничены размером загрузочного тома до 2 ТиБ. Дополнительные сведения см. в разделах «Требования к томам Linux» и «Ограничения размера и конфигурации тома EBS».

Процесс расширения файловой системы в Linux выглядит следующим образом:

На томе EBS может быть раздел, содержащий файловую систему и данные. Увеличение размера тома не увеличивает размер раздела. Прежде чем расширять файловую систему тома с измененным размером, проверьте, есть ли в томе раздел, который необходимо расширить до нового размера тома.

Используйте команду для файловой системы, чтобы изменить размер каждой файловой системы в соответствии с новой емкостью тома.

Информацию о расширении файловой системы Windows см. в разделе Расширение файловой системы Windows после изменения размера тома в Руководстве пользователя Amazon EC2 для экземпляров Windows.

В следующих примерах показан процесс расширения файловой системы Linux. Инструкции по файловым системам и схемам разбиения, отличным от показанных здесь, см. в документации по этим файловым системам и схемам разбиения.

Если вы используете логические тома в томе Amazon EBS, вы должны использовать Logical Volume Manager (LVM) для расширения логического тома. Инструкции о том, как это сделать, см. в разделе Расширение логического тома статьи Как создать логический том LVM на всем томе EBS? Статья Центра знаний AWS.

Примеры

Пример: расширение файловой системы томов NVMe EBS

Для этого примера предположим, что у вас есть экземпляр, построенный на системе Nitro, например экземпляр M5. Вы изменили размер загрузочного тома с 8 ГБ до 16 ГБ и дополнительного тома с 8 ГБ до 30 ГБ. Используйте следующую процедуру, чтобы расширить файловую систему томов с измененным размером.

Чтобы расширить файловую систему томов NVMe EBS

Чтобы проверить файловую систему для каждого тома, используйте команду df -hT.

Ниже приведен пример выходных данных для экземпляра, имеющего загрузочный том с файловой системой XFS и дополнительный том с файловой системой XFS. Соглашение об именах /dev/nvme6n1 указывает, что тома предоставляются как блочные устройства NVMe.

Чтобы проверить, есть ли в томе раздел, который необходимо расширить, используйте команду lsblk для отображения информации о блочных устройствах NVMe, подключенных к вашему экземпляру.

В этом примере показано следующее:

Корневой том /dev/nvme0n1 имеет раздел /dev/nvme0n1p1 . В то время как размер корневого тома соответствует новому размеру (16 ГБ), размер раздела соответствует исходному размеру (8 ГБ) и должен быть увеличен перед расширением файловой системы.

Том /dev/nvme1n1 не имеет разделов. Размер тома соответствует новому размеру, 30 ГБ.

Для томов, у которых есть раздел, таких как корневой том, показанный на предыдущем шаге, используйте команду GrowPart, чтобы расширить раздел. Обратите внимание, что между именем устройства и номером раздела есть пробел.

(Необязательно) Чтобы убедиться, что раздел соответствует увеличенному размеру тома, снова используйте команду lsblk.

Чтобы проверить размер файловой системы для каждого тома, используйте команду df -h. В выходных данных этого примера обе файловые системы отражают исходный размер тома, 8 ГБ.

Чтобы расширить файловую систему на каждом томе, используйте правильную команду для вашей файловой системы, например:

[Файловая система XFS] Чтобы расширить файловую систему на каждом томе, используйте команду xfs_growfs. В этом примере / и /data — это точки подключения тома, показанные в выходных данных для df -h.

Если инструменты XFS еще не установлены, их можно установить следующим образом.

[файловая система ext4] Чтобы расширить файловую систему на каждом томе, используйте команду resize2fs.

[Другая файловая система] Чтобы расширить файловую систему на каждом томе, обратитесь к документации по вашей файловой системе за инструкциями.

(Необязательно) Чтобы убедиться, что каждая файловая система отражает увеличенный размер тома, снова используйте команду df -h.

Пример: расширение файловой системы томов EBS

Для этого примера предположим, что вы изменили размер загрузочного тома экземпляра, например экземпляра T2, с 8 ГБ до 16 ГБ и дополнительного тома с 8 ГБ до 30 ГБ. Используйте следующую процедуру, чтобы расширить файловую систему томов с измененным размером.

Чтобы расширить файловую систему томов EBS

Чтобы проверить файловую систему, используемую для каждого тома, используйте команду df -hT.

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

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

В этом примере показано следующее:

Корневой том /dev/xvda имеет раздел /dev/xvda1 . Хотя размер тома составляет 16 ГБ, размер раздела по-прежнему составляет 8 ГБ, и его необходимо расширить.

Том /dev/xvdf имеет раздел /dev/xvdf1 . Хотя размер тома составляет 30 ГБ, размер раздела по-прежнему составляет 8 ГБ, и его необходимо расширить.

Для томов, у которых есть раздел, таких как тома, показанные на предыдущем шаге, используйте команду GrowPart, чтобы расширить раздел. Обратите внимание, что между именем устройства и номером раздела есть пробел.

(Необязательно) Чтобы убедиться, что разделы отражают увеличенный размер тома, снова используйте команду lsblk.

Чтобы проверить размер файловой системы для каждого тома, используйте команду df -h. В выходных данных этого примера обе файловые системы отражают исходный размер тома, 8 ГБ.

Чтобы расширить файловую систему на каждом томе, используйте правильную команду для вашей файловой системы, например:

[Тома XFS] Чтобы расширить файловую систему на каждом томе, используйте команду xfs_growfs. В этом примере / и /data — это точки подключения тома, показанные в выходных данных для df -h.

Если инструменты XFS еще не установлены, их можно установить следующим образом.

[ext4 тома] Чтобы расширить файловую систему на каждом томе, используйте команду resize2fs.

[Другая файловая система] Чтобы расширить файловую систему на каждом томе, обратитесь к документации по вашей файловой системе за инструкциями.

(Необязательно) Чтобы убедиться, что каждая файловая система отражает увеличенный размер тома, снова используйте команду df -h.

Читайте также: