Работая с виртуальными машинами приходится периодически увеличивать размер диска, когда места становится слишком мало. Сейчас широко используются разметки дисков с помощью дополнительного слоя абстракции LVM.
Рекомендую использовать именно его, при разворачивании новой виртуалки, с LVM жизнь становится проще, так же можно и шифровать данные при необходимости.
Рассмотрим 3 варианта увеличения размеров диска
- Диск с разметкой без LVM
- Разметка с LVM
- Разметка с LVM + LUKS (dm-crypt) - это когда данные на диске зашифрованы с помощью пароля
Со всеми тремя случаями мне приходилось сталкиваться на практике, и обычно потребность увеличения пространства встает тогда, когда мониторинг предупреждает, что место на диске уже заканчивается.
По этому об этой ситуации лучше подумать за ранее и протестировать все на виртуальных машинах, а не на боевых, ибо есть риск потерять все данные. Особенно если вы не делали бэкап перед данной процедурой.
Обучаться будем на системных дисках, то есть куда установлена корневая директория. Работать с другими дисками, где просто лежат какие-то данные мы не будем, потому что работа с такими дисками идентична.
Перед тем как приступать к работе, необходимо остановить виртуалку в вашем гипервизоре. По возможности сделать заранее бэкап данных или диска. В менеджере дисков увеличить размер до необходимого и запустить машину вновь.
Так же стоит прочитать всю статью с самого начала и до конца, если вы новичок и не знаете, что нужно делать. Так же, я не несу ответственности, за потерянные данные, если вы неправильно поняли статью, не протестировали, не сделали бэкап и т.д. Делаем все на свой страх и риск.
Так же рекомендую перед увеличением места на диске данную машину временно вывести из прода, потому как нам потребуется перезагрузка.
Увеличение размера диска
Смотрим на наши диски и разделы через.
ВНИМАНИЕ! Все команды выполняются от суперпользователя и перед тем как что-то вводить в терминал, рекомендую дочитать до конца.
df -h
- текущие доступное место на диске, посмотрим для сравнения
fdisk -l
- находим наш диск, и видим уже больший размер, чем доступен для записи
То есть получается гипервизор увеличил виртуальный диск, но место под запись система не выделяет автоматически. То есть разметка свободного пространства осталась старой, нужно ее обновить
Получается нужно попросить систему это сделать
fdisk /dev/sda
- использовать будем fdisk, с указанием нужного нам устройства
Попадаем в интерактивный режим и начинаем работу. Вот тут самое опасное и рекомендую для начала прочесть
Как можно будет увидеть, fdisk выдаст нам предупреждение, что размер блоков не совпадает. Обычно такое бывает, носитель не соответствует старым данным записанной в самой ОС.
Обычно, при дефолтной разметке диска, данные записываются как на примере выше
/dev/sda1
- это boot раздел для загрузчика
/dev/sda2
- корневой каталог /, данный раздел диска является последним в списке, а значит его без проблем и можно увеличить.
Помните, что запись данных на диск происходит линейно, то есть от начала диска и до его конца, даже виртуального. Получается, если бы мы имели еще один раздел на диске, например
/dev/sda3
, а нужно было бы увеличить/dev/sda2
, то данная инструкция была бы не для нас. Обязательно это стоит учитывать
Поехали дальше. Все в том же интерактивном меню выполняем команды
p
- выводит инфу о диске и разделах
d
- переходим в режим удаление разделов диска
Тут программа предлагает нам выбрать, какой раздел мы хотим удалить. Но не стоит переживать, за сохранность данных на этом этапе. Потому как это предварительная конфигурация, и в случае ошибок, можно отменить действия.
2
- в моем случае нужно было увеличить /dev/sda2
, этой командой мы удалим раздел ФАЙЛЫ СОХРАНЯТСЯ
n
- переключаемся в режим создания разделов
Вот тут уже софтина сама понимает, что вам нужно. По дефолту предложить номер раздела выбрать 2, как у нас и было ранее. Просто жмем Enter
Далее предлагается указать первый сектор для раздела /dev/sda2
. Все уже автоматически подсчитано и если сравнивать с изначальным выводом программы, то сектора совпадают, просто проверьте это значение на всякий случай и согласитесь с ним нажав Enter
Остается записать информацию о последнем секторе, так как мы хотим просто увеличить размер, на максимум. Софтина за нас находи последний сектор для записи. Таким образом мы указываем все свободное пространство для записи, которое доступно
Жмем
Enter
и сталкиваемся с самым опасным моментом в данной статье. Вы получите вопрос
Created a new partition 2 of type 'Linux filesystem' and of size 65GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o:
Вот тут мы отвечаем N
, введите заглавную N ! Если же вы ответите утвердительно, то все данные могут быть утеряны. Это важно.
Вот пример как делал я на виртуалке для увеличения размера и сохранения данных
После окончания опросов, давайте посмотрим, сколько место теперь будет доступно для записи командой p
Если что-то пошло не так, то стоит откатиться, с помощью кнопки
q
, команда выходит их программы и сбрасывает ваши настройки на те, что были до использованияfdisk
Убеждаемся, что все верно и вводим w
- для применения наших изменений. Вот только на этом этапе, изменения вступают в силу
Вызываем команду resize2fs /dev/sda2
, с помощью нее, вся ОС уже будет видеть свободное место для записи. И перезагружаем нашу машину.
После перезагрузки можно увидеть, что размер диска и доступного места стало больше.
Увеличение размера диска c LVM
Последовательность действий все та же.
Останавливаем машину
Увеличиваем диск в гипервизоре
Запускаем машину и выполняем команды по очереди
df -h
и уже вместо дисков видим виртуальные устройства с точки зрения нашей операционной системы и LVM
Нам потребуется найти наш физический диск, для начала. То есть нам все так же нужно найти физическое устройство, найти на нем партицию, на котором установлена партиция LVM (mapper)
Вводим команду df -h
и находим наш корневой раздел. Я пользуюсь Ubuntu Server и у меня корень установлен тут /dev/mapper/ubuntu--vg-ubuntu--lv
Далее нам требуется узнать на каком физическом разделе установлена система. Введем команду pvdisplay
и уже увидим как в нашем примере /dev/sda3
Вся нужная информация у нас есть, осталось увеличить размер раздела /dev/sda3
как мы делали выше, без LVM
fdisk /dev/sda
Вводим последовательно (тут нужно быть осторожным, уже писал выше, что можно потерять данные)
p
- выводим информацию, которая у нас сейчас
d
- удаляем раздел /dev/sda3
3
- выбрали этот раздел
n
- создали новый раздел
3
- выбираем тот же номер раздела
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Отвечаем отрицательно N !
w
- записываем изменения
p
- смотрим на результат
resize2fs /dev/sda3
- обновляем информацию о разделе
pvresize /dev/sda3
- обновили информацию о разделе для LVM
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
- расширим место для LVM
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
- будет заключительной командой
В итоге можно уже работать и дальше, без перезагрузки виртуалки, но я всегда выполняю ребут, на всякий случай
Увеличение размера диска c LVM + LUKS
Тут инструкция будет еще короче, так как подразумевает, что вы уже знаете всю информацию выше. Опишу только новые моменты
Проводим уже привычную операцию с разделом
df -h
pvdisplay
fdisk /dev/sda
cryptsetup resize /dev/mapper/dm_crypt-0
- расширяем зашифрованный раздел. Программа потребует ввод пароля, без него невозможно увеличить раздел. Так же новое пространство будет размечено для шифрования
pvresize /dev/mapper/dm_crypt-0
- пересчитаем место на разделе
И далее уже как и делали ранее
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Так же перезагрузка не обязательна, можно работать сразу
На этом все, надеюсь статья получилась не запутанная.
Анонсы и еще больше информации в Telegram-канале