Всем привет — попросил меня один товарищ, приютить на своем сервере VK бота, написанном на Python. Ну приютить то я его приютил, только места под него выделил 8 Гб на диске, 1 Гб ОЗУ — ибо приютил я бесплатно, да и бот совсем маленький. Я посчитал, что 8 Гб будет вполне достаточно и в принципе этого хватало, до тех пор пока база данных бота не разрослась до такой степени, что места совсем не осталось, поэтому было решено с барского плеча прибавить ещё пару гигов.
P.S. Как оказалось разрослась не база, а логи Postgre SQL, но узнал я об этом позже, так что зря увеличивал, но за то поимел опыт и геморой на свою голову.
Подготовительный шаг.
Шаг 1.
Для начала введем команду
df -h
Команда df -h
используется для вывода информации о доступном дисковом пространстве на файловых системах в системе. Вот что означает каждая часть вывода команды df -h
:
- Filesystem: Путь к точке монтирования файловой системы.
- Size: Общий размер файловой системы.
- Used: Количество использованного дискового пространства.
- Available: Количество доступного дискового пространства для текущего пользователя (обычно это свободное место, доступное для нормального использования).
- Use%: Процент использования дискового пространства.
- Mounted on: Точка монтирования файловой системы.
Здесь -h
означает “human-readable” (читаемый для человека) формат вывода, который отображает размеры файловой системы в удобочитаемом формате (например, гигабайты, мегабайты) вместо байтов.
Общая информация, предоставляемая командой df -h
, позволяет быстро оценить доступное и использованное дисковое пространство на различных файловых системах в системе. Это полезно при анализе состояния дискового пространства и планировании его использования.
Шаг 2.
fdisk -l
Команда fdisk -l
используется для вывода информации о дисках и их разделах в системе. Вот что означает каждая часть вывода команды fdisk -l
:
- Disk: Информация о физическом диске, включая его путь (например,
/dev/sda
), размер в байтах и количество секторов. - Units: Единицы измерения размеров секторов и блоков.
- Sector size (logical/physical): Логический размер сектора (который используется для адресации) и физический размер сектора на диске (который фактически хранит данные).
- I/O size (minimum/optimal): Минимальный и оптимальный размер блока ввода-вывода (input/output), который используется для эффективной передачи данных между системой и диском.
- Disk label type: Тип метки диска, указывающий на используемую схему разметки диска. В данном случае, “dos” указывает на схему разметки MBR (Master Boot Record).
- Disk identifier: Идентификатор диска, который уникально идентифицирует диск.
Затем, под заголовком “Device Boot” следует список разделов на каждом диске:
- Device: Путь к разделу на диске, например,
/dev/sda1
. - Start: Номер сектора, с которого начинается раздел.
- End: Номер сектора, на котором заканчивается раздел.
- Blocks: Размер раздела в блоках.
- Id: Идентификатор типа файловой системы раздела.
- System: Название системы или тип раздела.
Информация, предоставляемая командой fdisk -l
, полезна при анализе дисковых устройств и их разделов, а также для планирования операций с разделами, такими как создание, изменение размера или удаление разделов.
Шаг 3.
fdisk /dev/sda
Теперь более подробно: командой n — мы создали новый раздел, далее нам по умолчанию предлагают выбрать p (primfry), соглашаемся. Partition number так же оставляем по умолчанию, т.е. нажимаем 3.
Немного поясню чтобы было понятно: Здесь если вы посмотрите, то First sector по умолчанию, на единицу больше чем конечный сектор нашего имеющегося диска — это означает что мы просто добавляем в конец. Нажимая Enter мы соглашаемся с этим.
Последний сектор Last sector так же оставляем по умолчанию, т.е. опять просто нажимаем Enter
Далее нам нужно создать новый раздел, для этого нажимаем t, номер раздела оставляем по умолчанию, т.е. нажимаем 3. Hex Code ставим 8e (Linux LVM)
Шаг 4.
Перезагружаем сервер
reboot
Шаг 5.
После перезагрузки опять входим в консоль и создаем физический раздел
pvcreate /dev/sda3
Шаг 6.
Смотрим информацию
vgdisplay
Команда vgdisplay
используется для вывода информации о группах томов (Volume Groups) в системе. Она предоставляет детальную информацию о свойствах и характеристиках групп томов, таких как их имя, размер, свободное пространство, количество физических томов и логических томов и другие атрибуты. Вот некоторые основные сведения, которые можно получить с помощью команды vgdisplay
:
- VG Name: Имя группы томов.
- System ID: Идентификатор системы группы томов.
- Format: Формат группы томов (обычно lvm2).
- Metadata Areas: Количество областей метаданных группы томов.
- Physical Volumes: Количество физических томов, принадлежащих группе томов.
- VG Size: Общий размер группы томов.
- PE Size: Размер Physical Extent (физического экстента).
- Total PE: Общее количество физических экстентов в группе томов.
- Allocatable: Флаг, указывающий, может ли группа томов выделять дополнительное пространство.
- VG UUID: Уникальный идентификатор группы томов.
Вывод команды vgdisplay
содержит также информацию о каждом физическом томе (PV) и логическом томе (LV), принадлежащих группе томов.
vgdisplay
является полезной командой при работе с LVM (Logical Volume Manager) в Linux. Она позволяет получить общую информацию о состоянии групп томов, их размерах и доступном пространстве.
Шаг 7.
Далее мы расширяем группу томов centos_virti2bot, путем добавления физического тома /dev/sda3 к этой группе.
vgextend centos_virti2bot /dev/sda3
Команда vgextend
используется для расширения существующей группы томов (Volume Group) в системе Linux. Когда вы выполняете эту команду, вы добавляете один или несколько новых физических томов к указанной группе томов.
Синтаксис команды vgextend
выглядит следующим образом:
vgextend <имя_группы_томов> <физический_том1> [<физический_том2> ...]
Где:
<имя_группы_томов>
— это имя существующей группы томов, к которой вы хотите добавить физические тома.<физический_том1>
,<физический_том2>
, и так далее — это пути к новым физическим томам, которые вы хотите добавить.
После выполнения команды vgextend
, указанные физические тома добавляются к указанной группе томов. Группа томов затем расширяется, и ей становится доступно дополнительное пространство, предоставленное новыми физическими томами.
Добавление физических томов к группе томов позволяет использовать дополнительное хранилище для создания новых логических томов или расширения существующих логических томов внутри этой группы.
После выполнения команды vgextend
можно использовать другие команды LVM, такие как lvcreate
, lvextend
, lvresize
и т. д., для создания и управления логическими томами в расширенной группе томов.
Шаг 8.
Далее смотрим всю информацию о логических томах в системе
lvdisplay
Команда lvdisplay
используется для вывода информации о логических томах (Logical Volumes) в системе. Она предоставляет детальную информацию о свойствах и характеристиках каждого логического тома, таких как его имя, группа томов (Volume Group), размер, путь устройства, использование пространства и другие атрибуты. Вот некоторые основные сведения, которые можно получить с помощью команды lvdisplay
:
- LV Path: Путь к логическому тому.
- LV Name: Имя логического тома.
- VG Name: Имя группы томов, к которой принадлежит логический том.
- LV UUID: Уникальный идентификатор логического тома.
- LV Size: Размер логического тома.
- LV Status: Статус логического тома (активен, неактивен, снапшот и т. д.).
- LV Open: Количество открытых файловых дескрипторов, связанных с логическим томом.
- LV Pool: Имя пула логического тома (если применимо).
- LV Origin: Имя оригинального логического тома, если текущий том является снапшотом.
- Data%: Процент использования данных внутри логического тома.
- Metadata%: Процент использования метаданных внутри логического тома.
Команда lvdisplay
также предоставляет информацию о связанных снапшотах и томах подкачки, если они существуют.
lvdisplay
является полезной командой при работе с LVM (Logical Volume Manager) в Linux. Она позволяет получить общую информацию о логических томах, их размере, использовании пространства и статусе.
Шаг 9.
Далее расширяем размер логического тома /dev/centos_virti2bot/root в группе томов centos_virti2bot на 100% доступного свободного пространства в группе томов.
lvextend -l +100%FREE /dev/centos_virti2bot/root
Команда lvextend
используется для изменения размера существующего логического тома (Logical Volume) в группе томов (Volume Group) LVM (Logical Volume Manager) в Linux. Эта команда позволяет увеличить или уменьшить размер логического тома, в зависимости от указанных параметров.
Синтаксис команды lvextend
выглядит следующим образом:
lvextend [опции] <логический_том>
Где <логический_том>
— это путь к логическому тому, размер которого нужно изменить.
Некоторые из наиболее часто используемых опций команды lvextend
:
-L <размер>
: Указывает новый размер логического тома явно в определенных единицах (например,G
для гигабайт,M
для мегабайт и т. д.). Например,-L +2G
увеличит размер логического тома на 2 гигабайта.-l [+|-]<количество>
: Указывает новый размер логического тома в виде количества физических экстентов (Physical Extents). Если указано положительное значение, то логический том увеличится на это количество экстентов. Если указано отрицательное значение, то логический том уменьшится на это количество экстентов. Например,-l +100
увеличит логический том на 100 экстентов.-r
: Автоматически расширяет файловую систему внутри логического тома после изменения его размера. Эта опция обычно используется совместно с опцией-L
или-l
, чтобы автоматически расширить файловую систему после изменения размера логического тома.
Команда lvextend
позволяет изменить размер логического тома, добавляя или удаляя место, которое можно использовать для хранения данных. После изменения размера логического тома, возможно потребуется также изменить размер файловой системы, находящейся на этом логическом томе, с помощью соответствующей команды, например, resize2fs
для файловой системы ext4.
Шаг 10.
Теперь нам осталось расширить файловую систему XFS, которая находится на логическом томе /dev/mapper/centos_virti2bot-root
xfs_growfs /dev/mapper/centos_virti2bot-root
Команда xfs_growfs
используется для изменения размера файловой системы XFS в Linux. Когда вы выполняете эту команду, она увеличивает размер файловой системы XFS, чтобы она занимала всё доступное пространство внутри раздела или логического тома.
Синтаксис команды xfs_growfs
выглядит следующим образом:
xfs_growfs <путь_к_разделу_или_логическому_тому>
Где <путь_к_разделу_или_логическому_тому>
— это путь к разделу или логическому тому, содержащему файловую систему XFS, которую вы хотите изменить размер.
Когда вы выполните команду xfs_growfs
, она автоматически определит текущий размер файловой системы XFS и проверит, есть ли доступное свободное пространство на разделе или логическом томе. Затем она изменит размер файловой системы, чтобы она занимала всё доступное пространство.
Важно отметить, что команда xfs_growfs
применима только к файловой системе XFS и не может быть использована для других типов файловых систем, таких как ext4 или Btrfs.
Перед выполнением команды xfs_growfs
убедитесь, что раздел или логический том, содержащий файловую систему XFS, был успешно расширен с помощью соответствующих инструментов, таких как fdisk
, parted
, lvextend
или vgextend
. Также рекомендуется выполнить резервное копирование важных данных перед изменением размера файловой системы.
Заключительный шаг
В принципе на этом всё, проверяем работу
df -h
Проблемы с которыми вы можете столкнуться
В процессе расширения диска, вы сможете столкнуться со следующими проблемами, описание которых я привёл ниже (нажмите на + чтобы раскрыть спойлер)
- После выполнения некоторых команд выдается ошибка Couldn’t create temporary archive name. — это значит что команда не может создать временные файлы для хранения данных, обычно это происходит из за полного отсутствия места на диске (удалите что нибудь, к примеру логи или временные файлы)
- Недостаток места на диске: Убедитесь, что на диске достаточно свободного места для создания временных файлов. Вы можете использовать команду
df -h
для проверки доступного места на диске. - Ограничения прав доступа: Убедитесь, что у вас есть достаточные права доступа для создания и записи временных файлов. Выполните команду от имени суперпользователя.
- Проблемы с файловой системой: Если на диске нет проблем с местом и правами доступа, возможно, файловая система повреждена. В этом случае рекомендуется выполнить проверку и восстановление файловой системы с помощью инструментов, таких как
fsck
. - Проблемы с конфигурацией LVM: Если проблема продолжается, это может быть связано с проблемой конфигурации LVM (Logical Volume Manager). Проверьте файлы конфигурации LVM и убедитесь, что они корректны. Вы также можете попытаться пересоздать файлы конфигурации LVM, если они повреждены или отсутствуют.
xfs_growfs /dev/mapper/centos_virti2bot-root
выводится ошибка -bash: xfs_growfs: command not found
- У вас не установлен пакет xfsprogs, ставите пакет командой:
sudo yum install xfsprogs
- Вы ошиблись в написании команды, к примеру написали xfs_grofs или xfs_grows
xfs_growfs /dev/mapper/centos_virti2bot-root
появляется ошибка xfs_growfs: /dev/mapper/centos_virti2bot-root is not a mounted XFS filesystem
Данная ошибка говорит нам о том, что указанное устройство (/dev/mapper/centos_virti2bot-root) в данный момент не смонтировано как файловая система XFS - Проверьте тип файловой системы: Убедитесь, что устройство (/dev/mapper/centos-virti2bot-root) действительно отформатировано как файловая система XFS. Вы можете использовать команды “lsblk” или “df” для проверки типа файловой системы.
lsblk -f df -Th
Найдите запись, соответствующую “/dev/mapper/centos-virti2bot-root”, и проверьте столбец “TYPE” или “Filesystem”, чтобы убедиться, что это XFS - Вы опечатались указывая устройство (в моем случае я вместо “/dev/mapper/centos-virti2bot-root” напечатал “/dev/mapper/centos-root”. Опять таки возвращаюсь к п.1 — убедитесь что вы правильно указали устройство.
На этом всё, удачно вам расширить свое дисковое пространство.