Статья также доступна на украинском (перейти к просмотру).
Содержание:
- Вопросы изменения объемов файловых хранилищ в Linux
- Расширение диска в Linux
- Подготовка нового диска к использованию в Linux
Современные облачные технологии и системы виртуализации позволяют эффективно использовать ресурсы, обеспечивая их динамическое выделение при необходимости. Один из критически важных ресурсов – дисковое пространство, недостаток которого может парализовать серверную систему. Обеспечение безопасного хранения данных при изменении параметров файлового хранилища возможно с помощью инструментов, поддерживающих "онлайн" обновление конфигурации без перезагрузки ОС. В Linux для работы с облачными хранилищами можно использовать утилиты пакета cloud-utils, позволяющие эффективно изменять параметры виртуальных дисков. Давайте рассмотрим, как это работает на практике.
Вопросы изменения объемов файловых хранилищ в Linux
Если этот процесс происходит в стационарных условиях физически выделенного сервера, то Администратор может заранее сохранить все находящиеся на диске данные, избежав их возможной потери. После завершения процесса изменения параметров и выполнения всех необходимых настроек сервер перезагружается и хранилище с новыми характеристиками становится готовым к использованию.
Недостатком рассматриваемого «классического» подхода является полное отсутствие динамичности – такое решение неэффективно и опасно для удаленного режима работы сервера. Неэффективность заключается в возможности применения дискретного или фиксированного распределения ресурсов без учета реальных нагрузок. Опасность рассматривается с точки зрения сохранения целостности всех данных в хоть какой момент времени.
Наиболее полно динамичность проявляется при работе в «облаке» или любой виртуальной среде, в частности, на VPS-серверы. Более того, именно благодаря динамичности и возможному существованию самодостаточной виртуальной среды. Здесь можно получить наибольший выигрыш в эффективности и безопасности. И поэтому мы будем рассматривать процесс изменения характеристик хранилища только в таких условиях.
Сложность изменения параметров файлового хранилища в онлайн-режиме его работы заключается в необходимости своевременного предупреждения операционной системы о значении новых параметров хранилища. В «классическом» варианте такое предупреждение происходит благодаря перезагрузке. ОС. Однако, в нашем случае это не подходит и поэтому следует применять другие методы.
Один из подходов предполагает использование утилиты пересканирования дисков, например, rescan. Утилита, как правило, находится по адресу: /sys/class/block/sda/device/rescan. После того, как устройства будут просканированы, новые параметры станут доступны без перезагрузки. ОС.
Другой подход заключается в применении утилит пакетов cloud-init да cloud-utils для Debian специально созданных для возможности выполнения автоматических настроек системы в облаке. Именно они предоставляют наиболее гибкий механизм управления виртуальной средой в автоматическом режиме. Кроме того, по сравнению с «классической» дисковой утилитой fdisk из пакета util-linux они способны обеспечить универсальную совместимость с любыми GPT-дисками.
Расширение диска в Linux
Смоделируем определенную ситуацию. На диске нашем VPS-серверу присутствуют два раздела, а также около 15 ГБ нераспределенного дискового пространства. На сервере постоянно происходит активный обмен данными, в частности запись данных в файлы БД, размещенные на диске. Задача состоит в том, чтобы, не прекращая запись и обновление данных на диске, обеспечить расширение одного из разделов за счет подсоединения к нему нераспределенных гигабайт дискового пространства.
Для решения этой задачи будем использовать программы из «облачного» пакета cloud-utils для Debian.
Разобьем процесс на несколько этапов:
Выяснение размеров имеющегося файлового хранилища и обнаружение зарегистрированных в системе дисков;
-
Установка пакета cloud-utils для Debian;
-
создание резервной копии текущей таблицы дисковых разделов;
-
Тестирование;
-
Выполнение операции расширения раздела;
-
Изменение размера файловой системы;
-
Проверьте размер обновленного файлового хранилища.
Выполним каждый из указанных этапов.
Выяснение размеров хранилища и обнаружение дисков
Для определения размеров текущего файлового хранилища воспользуемся утилитой df , выводящий список всех примонтированных файловых систем (ФС) и их характеристики. Параметр -час используется для вывода размера ФС размерностью 1024 и названиями единиц.
Введем в терминале:
$ df -h
Вывод команды:
Filesystem Size Used Avail Use% Mounted on tmpfs 192M 1.8M 190M 1% /run /dev/vda2 24G 17G 6.4G 73% / tmpfs 958M 0 958M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 192M 4.0K 192M 1% /run/user/0 overlay 24G 17G 6.4G 73% /var/lib/docker/overlay2/7ec8b30c4e8796cd649b82dea8c7cc975d8e426ca964753b9a6c670b91a0e5d7/merged
Как видим, на диске /dev/vda2 доступно только 6,4 ГБ, а его общий объем составляет 24 ГБ. Хотя мы знаем, что реальное пространство примерно на 60% больше. Другая часть диска не фиксируется утилитой, поскольку это дисковое пространство еще не готово к использованию в качестве файлового хранилища.
После этого просмотрим все зарегистрированные диски. Это можно сделать с помощью следующей команды:
ls -la /dev | grep disk
Вывод команды:
crw-rw---- 1 root disk 10, 234 Nov 26 22:24 btrfs-control drwxr-xr-x 6 root root 120 Jun 7 2024 disk brw-rw---- 1 root disk 7, 0 Nov 26 22:24 loop0 brw-rw---- 1 root disk 7, 1 Nov 26 22:24 loop1 brw-rw---- 1 root disk 7, 2 Nov 26 22:24 loop2 brw-rw---- 1 root disk 7, 3 Nov 26 22:24 loop3 brw-rw---- 1 root disk 7, 4 Jan 11 12:59 loop4 brw-rw---- 1 root disk 7, 5 Jan 11 12:59 loop5 brw-rw---- 1 root disk 7, 6 Nov 26 22:24 loop6 brw-rw---- 1 root disk 7, 7 Nov 26 22:24 loop7 crw-rw---- 1 root disk 10, 237 Nov 26 22:24 loop-control brw-rw---- 1 root disk 252, 0 Nov 26 22:24 vda brw-rw---- 1 root disk 252, 1 Nov 26 22:24 vda1 brw-rw---- 1 root disk 252, 2 Nov 26 22:24 vda2
Теперь мы знаем, какие разделы имеет наш диск и его название. Для реализации нашей задачи нам нужно будет изменить размер раздела vda 2.
Установка пакета cloud-utils для Debian
Установим пакет из репозитория. Для этого введем в терминале:
$ apt install cloud-utils
Подтверждаем согласие на выделение дополнительных 48 МБ, после чего процесс установки пакета продолжится.
Результат: Настройка облачных утилит (0.32-22-g45fe84a5-0ubuntu1) – пакет успешно установлен.
Создание резервной копии таблицы разделов
Резервную копию текущей таблицы разделов произведем с помощью следующей команды:
$ sfdisk -d /dev/vda > vda_partition_bak.dmp
Проверим:
$ ls -l
Итак, резервная копия успешно создана
Тестирование
Перед выполнением операции расширения раздела убедимся, что она возможна и будет безопасной. Для этого воспользуемся тестовым режимом запуска утилиты growpart из пакета cloud-utils.
Введем в терминале:
$ growpart -N /dev/vda 2
Выход команды:
CHANGE: partition=2 start=4096 old: size=51195871 end=51199967 new: size=81915871 end=81919967 # === old sfdisk -d === label: gpt label-id: 53DBD262-198E-48CC-903C-8B43EA9AAB57 device: /dev/vda unit: sectors first-lba: 34 sector-size: 512 /dev/vda1 : start= 2048, size= 2048, type=21686148-6449-6E6F-744E-656564454649, uuid=057446E8-C112-4D1F-B87C-06C5ACDC3CFC /dev/vda2 : start= 4096, size=51195871, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=619DB1AD-598C-4B41-8A4B-931DAE9F025B # === new sfdisk -d === label: gpt label-id: 53DBD262-198E-48CC-903C-8B43EA9AAB57 device: /dev/vda unit: sectors first-lba: 34 sector-size: 512 /dev/vda1 : start= 2048, size= 2048, type=21686148-6449-6E6F-744E-656564454649, uuid=057446E8-C112-4D1F-B87C-06C5ACDC3CFC /dev/vda2 : start= 4096, size=81915871, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=619DB1AD-598C-4B41-8A4B-931DAE9F025B
Программа вывела как текущие характеристики разделов, так и новые, которые будут иметь после выполнения операции. Для раздела vda 2 предполагаются следующие изменения:
new: size=81915871 end=81919967
Это примерно на 15 ГБ больше текущих значений размеров указанного раздела. Следовательно, можно переходить к выполнению указанной операции.
Выполнение операции расширения раздела
Введем в терминале:
$ Growpart /dev/vda 2
Результат:
CHANGED: partition=2 start=4096 old: size=51195871 end=51199967 new: size=81915871 end=81919967
Итак, операция проделана успешно.
Изменение размера файловой системы
Для развертывания файловой системы для раздела с обновленными размерами воспользуемся утилитой resize2fs. Для этого введем в терминале:
$ resize2fs /dev/vda2
Результат:
resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/vda2 is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 5 The filesystem on /dev/vda2 is now 10239483 (4k) blocks long.
Можно убедиться, что количество блоков (desc_blocks) увеличилась с 4-х до 5-ти, что говорит о расширении «рабочего» размера дискового раздела.
Проверка размера обновленного файлового хранилища
Проверим текущий размер "зарегистрированного" файлового хранилища.
$ df -h
Результат:
Filesystem Size Used Avail Use% Mounted on tmpfs 192M 2.6M 190M 2% /run /dev/vda2 39G 17G 21G 46% / tmpfs 958M 0 958M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 192M 4.0K 192M 1% /run/user/0 overlay 39G 17G 21G 46% /var/lib/docker/overlay2/7ec8b30c4e8796cd649b82dea8c7cc975d8e426ca964753b9a6c670b91a0e5d7/merged tmpfs 958M 0 958M 0% /run/qemu
Можно убедиться, что вместо старого значения в 6 ГБ свободного места диск теперь имеет 21 ГБ (6+15). Итак, наша первоначальная задача по расширению дискового пространства без перезагрузки ОС и потери данных успешно выполнена.
Подготовка нового диска к использованию в Linux
Иногда возникает необходимость получить дополнительное дисковое пространство не за счет расширения одного из разделов текущего носителя, а путем подключения нового. Это можно сделать в Административной панели управления виртуальным сервером. Однако следует отметить, что такой диск нельзя будет сразу же использовать для своих нужд без выполнения предварительных операций по его подготовке. И он не будет распознаваться системными программными средствами в качестве дискового хранилища.
Сделать такое хранилище рабочим можно только после создания на добавленном диске хотя бы одного раздела с развертыванием на нем соответствующей файловой системы. Для Linux це ext2, ext3 и ext4.
Приведем последовательность действий, необходимых для успешного выполнения указанной задачи:
-
Создать таблицу разделов.
$ parted /dev/vdc mklabel gptЗдесь /dev/vdc– подключенное нами устройство.
-
Создание раздела.
$ parted -a opt /dev/vdc mkpart primary ext4 0% 70%
-
Проверить и убедиться, что «рабочий» раздел появился.
$ lsblk
В случае успеха в выводе команды появится название нового раздела. В нашем случае это vdc1.
-
Создать файловую систему для нового раздела.
$ mkfs.ext4 -L experimental-data /dev/vdc1
-
Создать точку монтирования для файловой системы.
$ mkdir -p /mnt/testadddisk $ mount -o defaults /dev/vdc1 /mnt/testadddisk
-
Убедитесь, что указанный при создании раздела объем воспринимается системой как файловое хранилище.
$ df -hВ случае успеха среди других файловых хранилищ будет выведено название нового раздела (/dev/vdc1) и его точка монтирования (/mnt/testadddisk) и размер.
-
Настройка автоматического подключения диска при каждой загрузке системы.
Для этого следует использовать один из доступных текстовых редакторов для редактирования системного файла/etc/fstab:
$ nano /etc/fstab
В конец файла для нашего случая следует добавить следующую строчку:
LABEL=testadddisk-data /mnt/testadddisk ext4 defaults 0 2
После сохранения внесенных изменений выйти из редактора.
-
Выполнить проверку.
Чтобы убедиться, что созданная файловая система подключается, выполните перезагрузку системы и просмотрите список доступных файловых хранилищ:
$ reboot $ df -h
Вывод последней команды должен быть таким же, как и в п.6. нашего плана. Если это так, задача выполненная и созданное нами файловое хранилище всегда будет доступно для использования.
Вывод последней команды должен быть таким же, как и в п.6. нашего плана. Если это так, задача выполненная и созданное нами файловое хранилище всегда будет доступно для использования.
Подписывайтесь на наш телеграмм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.
Дата: 21.01.2025 Автор: Александр Ровник
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus