В этой статье будет рассмотрен процесс увеличения места на диске Linux–сервера в облаке Azure Pack Infrastructure от InfoboxCloud. Это стандартная процедура, выполняемая с помощью LVM, которая есть в любом Linux–образе в нашем облаке.
Данная инструкция полезна не только для увеличения размера на едином диске, но и для создания общего пространства из подключенных виртуальных дисков, что позволяет преодолеть максимальный размер виртуального диска (для VHD – 2048 гб) и создать единое большое пространство для данных.
Если вы не хотите разбираться в этом, просто напишите нам тикет в техническую поддержку и мы сделаем все за вас.
Что такое 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), размер которого в свою очередь постоянный в рамках группы томов.
Вид представления LVM с физическими и логическими томами.
Вид представления 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.
Создание контрольной точки
Перед увеличением объема диска создание контрольной точки крайне рекомендуется. Если что-нибудь пойдет не так вы сможете восстановить сервер на это состояние. Если в вашей подписке недостаточно места, напишите нам тикет в панели управления услугами > Центр поддержки > Написать тикет.
Нажмите на имя вашего сервера и перейдите в раздел «Контрольные точки».
Нажмите кнопку «Создать» для создания контрольной точки.
Задайте имя контрольной точки и если необходимо — описание и нажмите галочку «Готово». Контрольная точка будет создана. Теперь вы можете производить дальнейшие операции безопасно.
Увеличиваем раздел диска в панели управления Azure Pack Infrastructure
Войдите в панель управления, выберите ваш сервер, на котором требуется увеличить раздел и нажмите кнопку «Остановить». Дождитесь остановки сервера.
Теперь кликните по имени сервера и перейдите в раздел «Настроить». Кликните по имени диска, который требуется увеличить.
Появится кнопка «Развернуть» — нажмите ее.
Укажите желаемый размер диска (доступно только увеличение) и нажмите галочку «Готово». Размер виртуального диска будет увеличен. Однако этого не достаточно — необходимо увеличить LV-раздел на виртуальной машине, об этом читайте далее.
Создаем новый физический раздел на диске (PV)
Для начала на появившемся свободном месте нужно создать новый физический раздел (PV), который далее можно подключить к LVM. Для этого можно воспользоваться командой
cfdisk
Выберите свободное место на диске (Free Space, отмечено зеленым цветом) с помощью стрелочек на клавиатуре и затем нажмите Enter, что запустит команду New.
Будет запрошен размер создаваемого раздела. По-умолчанию — максимальный, на все добавленное место, просто нажмите Enter.
Теперь стрелочками на клавиатуре при отмеченном новом разделе выберите пункт Type.
Нажмите Enter для выбора типа раздела.
Выберите тип 8e Linux LVM и нажмите Enter.
Теперь выберите пункт Write и нажмите Enter для того, чтобы изменения были записаны на диск.
Будет запрошено разрешение на применение изменений. Введите yes и нажмите Enter.
Будет выведено сообщение о том, что таблица разделов изменена успешно.
Запомните путь Device, в данном случае это /dev/sda3. Путь к устройству потребуется в дальнейшем при добавлении раздела в группу томов (VG).
Для выхода из программы разметки диска выберите пункт Quit и нажмите Enter.
Перезагрузите сервер командой
reboot
и подключитесь к нему по SSH вновь.
Добавляем созданный физический раздел в группу томов (VG)
Для того, чтобы узнать имя созданной группы томов, воспользуйтесь командой:
vgdisplay
, где в параметре VG name будет указано имя группы томов, в данном случае — ubuntu-vg.
Для добавления физического раздела к группе томов воспользуйтесь командой
vgextend ubuntu-vg /dev/sda3
, где ubuntu-vg – имя группы томов, а /dev/sda3 – путь к устройству — новому разделу.
Используя команду
pvdisplay
вы можете увидеть список дисков подключенных к группе томов.
Увеличиваем размер логического раздела LVM root до максимально доступного
Используя команду
lvdisplay
можете увидеть список логических разделов LVM.
Видим, что создано 2 раздела: /dev/ubuntu-vg/swap_1 и /dev/ubuntu-vg/root.
Используя команду
vgdisplay
видим параметры группы томов.
Видим, что теперь доступно свободное место для расширения томов LVM (Free PE / Size) в размере 75 гб.
Нам необходимо увеличить раздел /dev/ubuntu-vg/root до максимально доступного.
Для этого выполните команду:
lvextend -l +100%FREE /dev/ubuntu-vg/root
Теперь можно снова ввести команду:
lvdisplay
и убедиться, что увеличение раздела произошло.
Увеличиваем размер файловой системы
Последний этап увеличения диска — увеличение размера файловой системы.
На разных файловых системах это происходит по-разному. На облачных серверах в Azure Pack Infrastructure по-умолчанию используется ext4.
Для увеличения размера ext4 используйте команду:
sudo resize2fs /dev/ubuntu-vg/root
, где /dev/ubuntu-vg/root — адрес lv раздела root.
Теперь выполните команду
df -h
для того, чтобы увидеть новый размер системного раздела.
Мы успешно добавили места на диске для Linux–сервера в облаке Azure Pack Infrastructure, а заодно и научились использовать LVM.
Если у вас возникли любые вопросы по использованию Azure Pack Infrastructure — с радостью поможем и проконсультируем! Вы можете написать нам через личный кабинет https://support.infobox.ru > Центр поддержки > Написать тикет.
Если вы не можете оставлять комментарии на Хабре, напишите нам в Сообществе InfoboxCloud.
Успешной работы!
Автор: Infobox