Добавляем места на диске для Linux–сервера в облаке Azure Pack Infrastructure, а заодно и разбираемся с LVM

В этой статье будет рассмотрен процесс увеличения места на диске Linux–сервера в облаке Azure Pack Infrastructure от InfoboxCloud. Это стандартная процедура, выполняемая с помощью LVM, которая есть в любом Linux–образе в нашем облаке.

Данная инструкция полезна не только для увеличения размера на едином диске, но и для создания общего пространства из подключенных виртуальных дисков, что позволяет преодолеть максимальный размер виртуального диска (для VHD — 2048 гб) и создать единое большое пространство для данных.

d24769.png

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

Что такое LVM?


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

Когда устанавливается Linux на сервер — одна из задач выбора — как разметить диск. С LVM диск включается в группу томов (volume group) и создаются логические тома например для корня диска /. В дальнейшем можно изменять размер логических томов.

Устройство LVM


Сама по себе высокоуровневая абстракция LVM включает в себя логические тома (LV) и физические тома (PV).

Физический том (PV, physical volume) — виртуальный диск сервера или обычный жесткий диск (или таким томом может быть RAID).

Логический том (LV, logical volume) — эквивалент раздела. Он представляется ОС как стандартное блочное устройство и может содержать файловую систему.

Группа томов (VG, volume group) — логическое объединение томов.

Физический блок (PE, physical extent) — кусочки данных на физическом томе, в рамках группы томов имеют идентичный размер логическому блоку (LE, logical extent), размер которого в свою очередь постоянный в рамках группы томов.

4f7e06.png

Вид представления LVM с физическими и логическими томами.

356bea.png

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

Пример: Давайте представим, что у нас есть группа томов VG1 и у нее размер физического блока 4 Мб. Внутри группы томов 2 жестких диска /dev/hda1 и /dev/hdb1. Эти диски станут физическими разделами PV1 и PV2. Так как физический размер блока 4 мб — такого же размера будут и логические блоки. Диски имеют различный размер и первый включает в себя 99 блоков, а второй 248 блоков. Теперь мы создадим логический том. Он может быть любого размера между 1 и 347 блоками (248+99 блоков). Когда логический том создается устанавливается связь между логическими и физическими блоками, например логический блок 1 может быть связан с физическим блоком 51 из PV1, а данные записанные в первые 4 мегабайта логического тома фактически будут записаны в 51й блок PV1.

Есть 2 вида связи между физическими и логическими блоками:

  • линейный маппинг — когда множество физических блоков последовательно будут связаны со множеством логических блоков, например LE1–99 будут связаны с PV1, а LE 100–347 связаны с PV2.
  • маппинг с чередованием — когда каждый следующий логический блок будет использовать следующий диск, что в физических системах может увеличить производительность, но в облаке не имеет смысла, так как виртуальные диски создаются в СХД, которая уже использует множество дисков параллельно для увеличения производительности на аппаратном уровне.
Снепшоты LVM
Снепшоты LVM позволяют администратору создать новое блочное устройство, сохраняющее копию логического тома, замороженную на определенный момент времени. Эта возможность может быть использована для пакетной обработки данных, создания бекапов или экспериментов, когда вы не хотите задеть живые данные на системе.

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

Увеличиваем раздел Linux-сервера


Создание сервера для тестирования
Если у вас еще нет доступа к Azure Pack Infrastructure, заполните заявку на получение бесплатной пробной версии на главной странице https://infoboxcloud.ru.

Создайте сеть с доступом в интернет, сервер с Linux (например с Ubuntu 16.04) и пробросьте его порт 22 на внешний ip, как показано в этой статье. Подключитесь к серверу по SSH.

На всех серверах с Linux в Azure Pack Infrastructure уже предустановлен LVM.

Создание контрольной точки
Перед увеличением объема диска создание контрольной точки крайне рекомендуется. Если что-нибудь пойдет не так вы сможете восстановить сервер на это состояние. Если в вашей подписке недостаточно места, напишите нам тикет в панели управления услугами > Центр поддержки > Написать тикет.

Нажмите на имя вашего сервера и перейдите в раздел «Контрольные точки».

cde235.png

Нажмите кнопку «Создать» для создания контрольной точки.

c7546b.png

Задайте имя контрольной точки и если необходимо — описание и нажмите галочку «Готово». Контрольная точка будет создана. Теперь вы можете производить дальнейшие операции безопасно.

Увеличиваем раздел диска в панели управления Azure Pack Infrastructure
Войдите в панель управления, выберите ваш сервер, на котором требуется увеличить раздел и нажмите кнопку «Остановить». Дождитесь остановки сервера.

5864c7.png

Теперь кликните по имени сервера и перейдите в раздел «Настроить». Кликните по имени диска, который требуется увеличить.

4eeaf6.png

Появится кнопка «Развернуть» — нажмите ее.

f4e9cd.png

Укажите желаемый размер диска (доступно только увеличение) и нажмите галочку «Готово». Размер виртуального диска будет увеличен. Однако этого не достаточно — необходимо увеличить LV-раздел на виртуальной машине, об этом читайте далее.

Создаем новый физический раздел на диске (PV)
Для начала на появившемся свободном месте нужно создать новый физический раздел (PV), который далее можно подключить к LVM. Для этого можно воспользоваться командой
cfdisk

895ece.png

Выберите свободное место на диске (Free Space, отмечено зеленым цветом) с помощью стрелочек на клавиатуре и затем нажмите Enter, что запустит команду New.

cefc97.png

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

1d9147.png

Теперь стрелочками на клавиатуре при отмеченном новом разделе выберите пункт Type.

5e38fc.png

Нажмите Enter для выбора типа раздела.

7bd051.png

Выберите тип 8e Linux LVM и нажмите Enter.

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

f5b0d1.png

Будет запрошено разрешение на применение изменений. Введите yes и нажмите Enter.

1433a9.png

Будет выведено сообщение о том, что таблица разделов изменена успешно.

7c709c.png

Запомните путь Device, в данном случае это /dev/sda3. Путь к устройству потребуется в дальнейшем при добавлении раздела в группу томов (VG).

Для выхода из программы разметки диска выберите пункт Quit и нажмите Enter.

85f0d3.png

Перезагрузите сервер командой

reboot

и подключитесь к нему по SSH вновь.Добавляем созданный физический раздел в группу томов (VG)
Для того, чтобы узнать имя созданной группы томов, воспользуйтесь командой:
vgdisplay

d4f6bc.png

, где в параметре VG name будет указано имя группы томов, в данном случае — ubuntu-vg.

Для добавления физического раздела к группе томов воспользуйтесь командой

vgextend ubuntu-vg /dev/sda3

, где ubuntu-vg — имя группы томов, а /dev/sda3 — путь к устройству — новому разделу.

eb081b.png

Используя команду

pvdisplay

вы можете увидеть список дисков подключенных к группе томов.

f83126.png

Увеличиваем размер логического раздела LVM root до максимально доступного

Используя команду

lvdisplay

можете увидеть список логических разделов LVM.

512453.png

Видим, что создано 2 раздела: /dev/ubuntu-vg/swap_1 и /dev/ubuntu-vg/root.

Используя команду

vgdisplay

видим параметры группы томов.

151c92.jpg

Видим, что теперь доступно свободное место для расширения томов LVM (Free PE / Size) в размере 75 гб.

Нам необходимо увеличить раздел /dev/ubuntu-vg/root до максимально доступного.

Для этого выполните команду:

lvextend -l +100%FREE /dev/ubuntu-vg/root

3b7937.jpg

Теперь можно снова ввести команду:

lvdisplay

и убедиться, что увеличение раздела произошло.

0cff26.jpg

Увеличиваем размер файловой системы
Последний этап увеличения диска — увеличение размера файловой системы.
На разных файловых системах это происходит по-разному. На облачных серверах в Azure Pack Infrastructure по-умолчанию используется ext4.

Для увеличения размера ext4 используйте команду:

sudo resize2fs /dev/ubuntu-vg/root

, где /dev/ubuntu-vg/root — адрес lv раздела root.

602e6c.jpg

Теперь выполните команду

df -h

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

278ca9.jpg

Мы успешно добавили места на диске для Linux–сервера в облаке Azure Pack Infrastructure, а заодно и научились использовать LVM.

Если у вас возникли любые вопросы по использованию Azure Pack Infrastructure — с радостью поможем и проконсультируем! Вы можете написать нам через личный кабинет https://support.infobox.ru > Центр поддержки > Написать тикет.
Если вы не можете оставлять комментарии на Хабре, напишите нам в Сообществе InfoboxCloud.

Успешной работы!

Комментарии (4)

  • 22 октября 2016 в 17:12

    +1

    Отлично!
    Надеюсь на продолжение статьи — как это место убрать из системы.
  • 22 октября 2016 в 20:30 (комментарий был изменён)

    +1

    Для LVM есть только одна программа с GUI, а та глючная с минимум функций.
    Даже удобной программы с CLI интерфейсом нет для управления LVM. Пользуйся отдельными командами для этого, как и приводится в статье.
    Не понимаю зачем в новых дистрибутивах навязывают LVM, если для него нет удобных программа по управлению.
  • 22 октября 2016 в 21:55

    +1

    Есть же fsextender, к чему эта ручная возня? Да и плодить лишние сущности в виде составных томов не стоит без особой необходимости.
  • 23 октября 2016 в 10:39

    0

    lvextend с опцией -r сделает resize2fs самостоятельно.

© Habrahabr.ru