Авторские статьи

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


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

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

увеличение размера гостевого диска Proxmox VE

Самое простое позади и вы, образно говоря, превратили жёсткий диск выключенной виртуальной машины из 100 Гб в 200 Гб, но волшебным образом раздел(ы) (partitions) сами автоматически не увеличатся и файловая система (filesystem) внутри них тоже. Так легко и просто "всего лишь" появилось сырое (raw) дисковое пространство в блочном устройстве (block device), поверх которого существуют ваши разделы и файловые системы. В данном месте должен предупредить что речь идёт по большей части о виртуальных машинах и там редко можно встретить нижеописанных гостей и поэтому данная шпаргалка совсем НЕ предназначена для тех кто активно использует:

  • менеджер логических томов (LVM), придуманный в том числе и для лёгкого манипулирования разделами. Некоторые не используют LVM, как дополнительный (лишний) уровень абстракции и имеют полное на это право. Для увеличения томов следует использовать документацию LVM.
  • файловую систему ZFS, которая объединяет концепции файловой системы и менеджера логических дисков (томов). То есть ZFS - не просто файловая система и поэтому работу по увеличению томов следует выполнять её родными средствами.
  • файловую систему BTRFS, которая как и ZFS не является чисто файловой системой и может создавать и манипулировать томами. Любые манипуляции нужно проводить родными инструментами btrfs, тщательнейше сверяясь с документацией.

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

Из предыдущей команды вы должны точно понять с каким именно блочным устройством вы будете дальше работать (в примере это /dev/sda). Сохраните схему разделов sudo fdisk --list /dev/sda

Заставьте fsck проверить все ваши разделы на наличие ошибок: sudo touch /forcefsck && sudo reboot

И опять таки вынужден предупредить что если вы создавали отдельные разделы аля /var/ /usr/, как это было актуально и принято в старые времена у old school, то вы значит опытный товарищ и шпаргалка вам не нужна и увеличение нужного раздела в сложнейших разметках диска вы сделаете самостоятельно и легко. Дальше по тексту идёт вариант, когда гостевая виртуальная система использует простую разметку в виде одного корня и, возможно, идущему за ним и мешающего нам раздела swap.

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

Если у вас, судя по разметке, есть раздел swap, то рекомендую просто перейти на использование swapfile и отказаться от использования swap раздела.

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show

После вышеперечисленных команд, вы правильно создадите swapfile размером в 1 Гб и убедитесь что он задействован в механизме виртуальной памяти наряду с текущим разделом swap. Теперь необходимо прописать в файле /etc/fstab строку

/swapfile none swap sw 0 0

и закоментировать использование старого раздела swap. Настоятельно рекомендую сделать тестовую перезагрузку сервера, чтобы убедиться что в механизме виртуальной памяти задейстован только лишь swap файл sudo swapon --show и раздел swap можно начинать удалять. Для удаления раздела swap можно использовать как fdisk, так и более понятный cfdisk. У меня нет хрустального шара, я не вижу вашей разметки и не знаю уровень работы с дисками, поэтому будьте предельно осторожны и аккуратно удаляйте то, в чём уверены. В старых виртуальных машинах, я встречал swap раздел /dev/sda5 внутри расширенного (extended partition) /dev/sda2 и мне пришлось, как в матрёшке, сначала удалить "внутренний" sda5 и потом "внешний" sda2.

Есть масса способов увеличить размер вначале раздела и в данном месте у каждой утилиты свои закидоны. Рекомендую поставить пакет sudo apt install cloud-guest-utils и использовать команду sudo growpart /dev/sda 1, которая как вы догадались увеличит раздел с порядковым номером 1 на величину свободного места.

Теперь собственно саму файловую систему ext4 самого корня: sudo resize2fs /dev/sda1

Проверьте что всё хорошо получилось: lsblk -f; df -h

Не забудьте закомментировать старый swap или исправить на новый в файле /etc/initramfs-tools/conf.d/resume и выполнить sudo update-initramfs -u

Заставьте fsck проверить все ваши разделы на наличие ошибок: sudo touch /forcefsck && sudo reboot

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

Неплохой вариант загрузиться с помощью диска LiveCD и сделать всё наглядно через GParted.

Дата последней правки: 2020-01-23 09:04:29

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта