Увеличить размер Ubuntu lvm

Обновлено: 04.07.2024

Большинство наших стандартных образов для виртуальных машин OpenStack и VirtualBox используют LVM (Linux Logical Volume Manager) для предоставления дискового тома для операционной системы, а также дополнительных томов для хранения (если применимо). LVM позволяет легко изменять размер и переназначать пространство в Linux, как правило, даже без перезагрузки.

Проверить существующее пространство

Прежде чем увеличить диск, сначала нужно проверить, возможно ли это:

Сравните размер физического диска с размером LVM (используя fdisk):

  • Запустите fdisk, чтобы узнать, есть ли свободное место, которое можно добавить в LVM:
    sudo fdisk -l
  • В большинстве наших базовых образов это должно отображать только одно физическое устройство, например:
    Диск /dev/vda: 32 ГБ, 34359738368 байт, 67108864 сектора — физический диск 32 ГБ
  • Также будет показан раздел, используемый для LVM:
    Загрузка устройства Начальные конечные секторы Размер Идентификатор Тип
    /dev/vda1 2048 16777215 16775168 8G 8e Linux LVM

    В данном случае это раздел размером 8 ГБ ( /dev/vda1 )
  • И, наконец, он также покажет сам LVM:
    Диск /dev/mapper/COMPbase--vg-root: 8 ГБ, 8585740288 байт, 16769024 сектора


Диск /dev/vda: 32 ГБ, 34359738368 байт, 67108864 сектора
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xb5f8dcc1

Идентификатор размера начального и конечного секторов загрузки устройства
/dev/vda1 2048 16777215 16775168 8G 8e Linux LVM

Диск /dev/mapper/COMPbase--vg-root: 8 ГиБ, 8585740288 байт, 16769024 сектора
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт

Итак, в этом случае Физический диск имеет размер 32 ГБ, но в настоящее время для LVM выделено только 8 ГБ, и никакие другие разделы не используют оставшееся пространство для чего-либо еще. Так что мы можем расширить его!

Расширить LVM с помощью скрипта

Если вы используете один из наших стандартных образов SCS для виртуальных машин OpenStack или VirtualBox, он обычно поставляется с небольшим скриптом с именем extend-lvm.sh. Сценарий находится в домашнем каталоге пользователя student в папке extend-lvm. Старые изображения могут иметь его только в самом домашнем каталоге учащегося, а не во вложенной папке.

Чтобы запустить скрипт:

  • Открыть терминал
  • Перейдите в каталог со скриптом, обычно: cd ~student/extend-lvm/
  • Введите: sudo ./extend-lvm.sh /dev/vda – ПРИМЕЧАНИЕ: в вашей системе /dev/vda может отличаться. Это устройство, которое вы нашли в разделе "Проверить существующее пространство" выше

Вот оно! Теперь, когда вы запустите fdisk, вы должны увидеть, что раздел LVM имеет полный размер физического диска: sudo fdisk -l

Чтобы обновить или загрузить скрипт:

Расширить LVM вручную

Вот шаги, чтобы вручную расширить LVM.

ПРИМЕЧАНИЕ. Мы предполагаем ту же настройку, что и выше. Проверка существующего пространства

  • Расширить раздел физического диска:
    • sudo fdisk /dev/vda — Войдите в инструмент fdisk для изменения /dev/vda
      ПРИМЕЧАНИЕ. Завершайте каждую однобуквенную команду, нажимая [Enter]; если в инструкциях не указан конкретный ответ на вопрос, просто нажмите [Enter], чтобы принять вариант по умолчанию
    • p — команда p выводит информацию о диске, как и при запуске fdisk -l /dev/vda
    • d – команда d удаляет последний раздел (в данном случае /dev/vda1)
    • Команда
    • n e n создает новый раздел; e делает этот раздел расширенным
    • t – t изменяет тип раздела
      8e – введите 8e (lvm) в качестве типа раздела
      ПРИМЕЧАНИЕ. В некоторых случаях диск использует подпись GPT, а не DOS. В этом случае используйте 31 (lvm) в качестве типа раздела
    • w — w записывает изменения на диск и выходит из fdisk
    • Сообщите LVM, что размер физического раздела изменился: sudo pvresize /dev/vda1
    • Найдите фактический путь к логическому тому LVM: sudo lvdisplay — Путь LV — это необходимое значение
    • Укажите LVM расширить логический том, чтобы использовать весь новый размер раздела: sudo lvextend -l +100%FREE /dev/COMPbase-vg/root – Используя указанный выше путь LV< /li>

    Вот оно! Теперь, когда вы запустите sudo fdisk -l , он покажет, что LVM использует все пространство на физическом диске!

    POV: вы системный администратор, который настроил разовый компьютер с Linux для нужного вам приложения, и теперь на нем закончилось место на диске.

    Изначально вы запустили виртуальную машину, установили последнюю версию ОС Ubuntu и просто нажали Далее, Далее, Готово во время пошаговой установки. Linux не является вашим хлебом с маслом, вы обычно имеете дело с Windows, и вам просто нужно это сделать.

    Приблизительное время чтения: 10 минут

    Примечание. В своих примерах я использую установку Ubuntu 20.04 Server «все по умолчанию» с одним 100-гигабайтным диском.

    Если вы следовали настройкам по умолчанию при установке Ubuntu, то хранилище для вашей ОС Linux, вероятно, использует диспетчер логических томов (LVM). LVM — это структура абстракции, которая существует между вашими физическими (или виртуальными) дисками и вашей файловой системой Linux (скорее всего, ext4). Он используется для группировки отдельных блочных устройств (разделов) в группы томов (VG), а затем разбивки этих VG на логические блочные устройства или логические тома (LV). LV – это абстрактные блочные устройства, на которых находится ваша пригодная для использования файловая система.

    Ниже хорошо показано, как работает LVM. В этом примере у нас есть 5 разных дисков, каждый с одним разделом, сопоставленным с физическими томами (PV), и все они сгруппированы в одну группу томов (VG). Группа томов разделена на два разных логических тома (LV), и каждый LV используется для файловой системы.


    С помощью аналогичной визуализации на диаграмме ниже показано, как программа установки Ubuntu (с использованием всех параметров по умолчанию) разделила мой 100-гигабайтный диск.


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



    Как вы можете видеть выше: установщик Ubuntu (по умолчанию) оставил почти половину моего дискового пространства неиспользуемым для корневой файловой системы! Я искал объяснение, почему это настройки по умолчанию, но ничего не нашел. Прежде чем расширять базовый диск или том хранилища гипервизора, вы можете проверить, есть ли у вас свободное место, которое можно использовать для расширения существующей файловой системы. Если вы использовали настройки Ubuntu по умолчанию во время установки, есть большая вероятность, что у вас есть это свободное место.

    Начните с проверки свободного места в корневой файловой системе с помощью df -h . Как видите, я использую только 14 % от моего объема в 49 ГБ, но мы притворимся, что я почти на 100 % и мне нужно увеличить этот объем в 49 ГБ.


    Чтобы проверить наличие свободного места в вашей группе томов (там, где оно оставлено настройками по умолчанию установщика), выполните команду vgdisplay и проверьте наличие свободного места. Здесь вы можете видеть, что у меня есть 49,25 ГБ свободного места, готового к использованию. Если у вас нет свободного места, перейдите к следующему разделу, чтобы использовать свободное место на расширенном физическом (или виртуальном) диске.


    Чтобы использовать это свободное место в группе томов (VG) для корневого логического тома (LV), сначала запустите команду lvdisplay и проверьте размер логического тома, а затем запустите lvextend -l +100%FREE /dev/ubuntu. -vg/ubuntu-lv, чтобы увеличить LV до максимально возможного размера, затем запустите lvdisplay еще раз, чтобы убедиться, что он изменился.


    На этом этапе вы увеличили размер блочного тома, в котором находится ваша корневая файловая система, но вам все еще нужно расширить файловую систему поверх него. Сначала запустите df -h, чтобы проверить вашу (почти заполненную) корневую файловую систему, затем запустите resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv, чтобы расширить вашу файловую систему, и еще раз запустите df -h, чтобы убедиться ты успешен.


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

    Сначала вам нужно увеличить размер диска, представляемого ОС Linux. Скорее всего, это делается путем расширения виртуального диска в KVM/VMWare/Hyper-V или путем настройки вашего RAID-контроллера/системы хранения для увеличения размера тома. Часто это можно сделать во время работы Linux; без выключения и перезапуска. Я расширил свой диск со 100 ГБ до 200 ГБ для своей тестовой машины.

    После этого вам, возможно, потребуется заставить Linux повторно просканировать диск в поисках нового свободного места. Проверьте наличие свободного места, запустив cfdisk, и посмотрите, есть ли свободное место в списке, используйте «q», чтобы выйти, когда закончите.


    Если вы не видите свободного места в списке, запустите повторное сканирование /dev/sda с помощью команды echo 1>/sys/class/block/sda/device/rescan . После этого перезапустите cfdisk, и вы должны увидеть список свободного места.


    Выберите раздел /dev/sda3 из списка, а затем выберите «Изменить размер» в нижнем меню. Нажмите ENTER, и вам будет предложено подтвердить новый размер. Нажмите ENTER еще раз, и теперь вы увидите раздел /dev/sda3 с новым большим размером.

    Выберите «Запись» в нижнем меню, введите yes для подтверждения и нажмите ENTER. Затем используйте «q», чтобы выйти из программы.

    Теперь, когда раздел LVM, поддерживающий физический том /dev/sda3 (PV), был расширен, нам нужно расширить сам PV. Запустите pvresize /dev/sda3, чтобы сделать это, а затем используйте pvdisplay, чтобы проверить новый размер.

    Как видно выше, объем моего PV увеличился с 98,5 ГБ до 198,5 ГБ. Теперь давайте проверим свободное место в группе томов (VG) с помощью vgdisplay .


    Выше мы видим, что в VG есть 100 ГБ свободного места. Теперь давайте проверим размер нашего восходящего логического тома (LV) с помощью lvdisplay, расширим LV, чтобы использовать все свободное пространство VG с помощью lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv, а затем проверим LV еще раз с lvdisplay, чтобы убедиться, что он был расширен.


    На данный момент блочный том, лежащий в основе нашей корневой файловой системы, был расширен, но размер самой файловой системы не был изменен, чтобы соответствовать этому новому тому. Для этого запустите df -h, чтобы проверить текущий размер файловой системы, затем запустите resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv, чтобы изменить его размер, и еще раз df -h, чтобы проверить новый доступное место в файловой системе.


    И вот. Теперь вы взяли расширенный физический (или виртуальный) диск и переместили это свободное пространство вверх по уровням абстракции LVM для использования вашей (критически заполненной) корневой файловой системой. Пришло время вычеркнуть это из списка дел и перейти к следующей чрезвычайной ситуации в области ИТ.

    Обновление от февраля 2021 г. См. мою новую статью о расширении группы томов LVM в Ubuntu Focal с использованием того же физического диска или нового диска с помощью parted.

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

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

    Для визуального представления концепций LVM групп томов, физических томов, физических/логических томов и файловых систем на странице википедии LVM есть красивая графика, показанная ниже:


    Краткий обзор доступных утилит для физических томов, групп томов и логических томов см. в этой памятке по LVM.

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

    Первый шаг — увеличить емкость диска в используемом механизме виртуализации. Используя VirtualBox, это означает использование vboxmanagemodifyhd. Используя vSphere, вы можете использовать клиент vSphere GUI. и с помощью vCloud Director у вас есть эта возможность в веб-клиенте. Обратите внимание, что наличие моментальных снимков на этой ВМ может помешать вам выполнить эту операцию.

    В этом примере у меня есть виртуализированная гостевая ОС Ubuntu 14.0.4, для которой я изначально настроил 24 ГБ на /dev/sda (23 ГБ ext4 + 1 ГБ swap). Затем я увеличил размер диска до 30 ГБ, но эти дополнительные 6 ГБ еще не распознаются гостевой ОС.

    Исходное состояние

    Давайте покажем начальные настройки системы позже для справки. Этот снимок экрана из gparted помогает проиллюстрировать начальное разбиение на разделы, а затем 6 ГБ нераспределенного пространства.

    before_gparted

    fdisk показывает, что доступно 32 ГБ, но только 24 ГБ выделено для тома LVM. df также показывает только 23 ГБ, смонтированных в ‘/’.

    before_df_fdisk2

    При просмотре групп томов с помощью vgs и vgdisplay отображается один том ubunty-vg.

    before_1volumegroup_vg_commands

    При просмотре физических томов с помощью pvs и pvdisplay отображается единственный том /dev/sda5 размером 24 ГБ.

    before_2physicalvolume_pv_commands

    Просмотр логических томов с помощью lvs и lvdisplay показывает основной «корневой» том по пути «/dev/ubuntu-vg/root», а затем том подкачки.

    before_3logicalvolume_lv_commands

    Создайте новый физический раздел

    Запустите fdisk /dev/sda

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

    50329599 — это последний сектор, используемый sda2, поэтому используйте 50329600 в качестве первого сектора нашего нового раздела, затем примите значение по умолчанию 62914559 для последнего сектора.

    Затем установите тип раздела Linux LVM. Введите команду «t», затем выберите «3» для номера раздела (выбранный вами номер зависит от вашей системы) и «8e» для типа раздела, которым является Linux LVM.

    Когда вы закончите с этим, введите «p», чтобы подтвердить свой новый раздел, который должен выглядеть примерно так, как показано на снимке экрана ниже:

    during_1a-fdisk_create_new_physical_partition

    Затем запишите изменения на диск, введя ‘w’

    Перезагрузите гостевую ОС

    Чтобы эти изменения вступили в силу, перезапустите гостевую ОС.

    Создайте физический том LVM

    Запустите pvcreate /dev/sda3, чтобы создать физический том LVM. Затем pvs показывает два физических тома, хотя для /dev/sda3 не назначена группа томов.

    during_1b-pvcreate_changes

    Расширить группу томов LVM

    Запустите vgextend ubuntu-vg /dev/sda3, чтобы расширить существующую группу томов и использовать sda3. vgdisplay теперь покажет, что размер группы томов составляет 30 ГБ.

    during_2vgextend

    Расширить логический том LVM

    Чтобы расширить логический том, вам нужен путь к логическому тому, доступный на lvdisplay. Используйте это для запуска «lvextend -L+6G /dev/ubuntu-vg/root /dev/sda3», чтобы расширить существующую группу томов, чтобы включить это новое пространство sda3. Вы также можете запустить с ключом lvextend -l +100%FREE, что означает использовать все доступное пространство.

    during_4lvextend

    После запуска вы увидите следующее на lvdisplay

    during_4lvs

    Чтобы распознать это пространство, вам нужно выполнить последнюю команду resize2fs /dev/ubuntu-vg/root.

    during_5resize2fs

    Запуск gparted или system-config-lvm также может подтвердить увеличенную емкость.

    Сервер Hyper-V со свежей установкой Ubuntu 18.04. Диск был установлен на 25 ГБ при установке, и был выбран LVM.

    Эта процедура работает для любой файловой системы Ubuntu, отформатированной с помощью LVM, а также протестированной на сервере Proxmox.

    Руководство весьма специфично для LVM и Ubuntu, а также для работы с настоящей гостевой виртуальной машиной.

    Если вы используете Ubuntu и VMWare и у вас нет LVM, вы можете пропустить команду pvresize и вместо нее заменить lvextend на GrowPart. Посмотреть здесь. Фактические команды для этого сценария:

    sudo GrowPart /dev/sda 2 (номер вашего раздела)
    sudo resize2fs /dev/sda2

    А пока вернемся к:

    1. Убунту
    2. Гостевая виртуальная машина
    3. Объем LVM

    Проблема и как это сделать

    На корневом томе доступно только 3,9 ГБ. На этом этапе важно указать, что имя корневого тома — /dev/mapper/ubuntu--vg-ubuntu--lv, так как оно будет использоваться в нескольких местах в этом документе.

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

    Шаги TL;DR

    • fdisk -l (обратите внимание на раздел 3 по текущему размеру)
    • разошлись
      • resizepart, Fix, 3, 100% (вместо этого введите), выйти

      Расшифровка изменения размера с 50 ГБ на 100 ГБ

      Если вы просто хотите узнать, как проходит событие изменения размера с 50 ГБ на 100 ГБ, прокрутите статью до конца.

      Полные шаги и объяснение

      ssh к серверу, sudo -i чтобы стать root

      Подтвердите, что объем свободного места на диске ограничен. В выходных данных ниже обратите внимание, что на томе / (корневом) всего 3,9 ГБ дискового пространства:

      Далее подтвердите в Linux, что на самом деле доступно намного больше места. Как видно из приведенного ниже вывода, на томе /dev/sda3 имеется 24 ГБ. Другой 1 ГБ используется для загрузочного тома и загрузки BIOS

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

      «Сначала вам нужно запустить parted и использовать его команду resizepart, чтобы расширить раздел, чтобы использовать весь диск, затем запустить pvresize, чтобы сообщить LVM о новом пространстве, затем запустить lvresize, чтобы увеличить логический том, и, наконец, resize2fs на логическом томе, чтобы увеличить файловую систему для использования нового пространства. Это можно сделать без перезагрузки».

      Обратите внимание, однако, что я немного отклонился от этих шагов. Первая команда, которую я изучил/использовал в parted, просто использовалась для вывода информации о разделе:

      За этим последовала проверка и повторная проверка информации с помощью fdisk и df -h, чтобы убедиться, что я понимаю текущую ситуацию.

      В этот момент я попытался использовать lvresize, но не смог заставить его работать. Похоже, есть и lvresize, и lvextend. Согласно статье «microhowto.info»:

      «Разница в том, что lvextend может только увеличивать размер тома, тогда как lvresize может увеличивать или уменьшать его».

      Первая попытка указать 24 ГБ не удалась. После того, как я завершил процедуру, я обнаружил, что вы также можете указать флаг 100%, но, к сожалению, я не получил эту информацию вовремя и просто указал 23 ГБ. Если у меня будет время, я могу попробовать использовать флаг 100%. Для справки, флаг lvextend -l +100%FREE /dev/VGNAME/LVNAME

      Ниже первая попытка, но недостаточно места:

      Вторая попытка уменьшить выделяемое пространство:

      После lvextend необходимо использовать resize2fs. Это было немного страшно, потому что казалось, что я собирался работать над живым диском, но все прошло быстро.

      ТАДА! Размер диска теперь составляет 23 ГБ, как видно из вывода df-h ниже:

      Предупреждения

      Кстати, я вошел в диспетчер Hyper-V, но смог найти удобное место для изменения размера диска. Однако, щелкнув правой кнопкой мыши «Проверить», я увидел, что размер диска составляет 25 ГБ, как указано при установке виртуальной машины.

      Расшифровка изменения размера с 50 ГБ на 100 ГБ

      Вот результат изменения размера с 50 ГБ до 100 ГБ. В данном случае была выбрана опция Resize Disk в Proxmox.

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

      Обратите внимание, что сектор — это не то же самое, что байт, но, анализируя числа, можно увидеть, что происходит увеличение.

      Ссылки

      Хотите узнать больше?

      Если вас интересуют файловые системы, я многому научился, прочитав эту статью:

      Основной вывод из этой статьи и этой статьи базы знаний заключается в том, что эта статья основана на LVM, который вообще не упоминается в этой статье.

      Дополнительные ссылки

      Файловые системы могут быть сложной и обширной темой. Вот еще одна статья, чтобы пробудить аппетит:

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