Proxmox размещает диски виртуальных машин в lvm-thin в формате raw. Правильно ли я понимаю, что если размер диска 127 Гб, то он выделит ему сразу 127 гб? Или он займет только место под данные?
Нет, при использовании LVM-thin в Proxmox диск выделяется не полностью сразу, а только по мере записи данных. Это называется “thin provisioning”. Если у вас диск на 127 ГБ, то физически он займёт ровно столько места, сколько данных на него записано. Таким образом, если внутри виртуальной машины используется только 10 ГБ, то и на самом LVM-thin будет занято примерно 10 ГБ.
Однако, при увеличении объёма данных внутри виртуальной машины, используемое пространство на LVM-thin будет увеличиваться вплоть до установленного лимита — в данном случае, до 127 ГБ.
А если я с такого виртуального диска удаляю данные – то и фактический размер этого виртуального диска в lvm-thin будет уменьшаться?
Нет, к сожалению, при удалении данных с виртуального диска фактический размер в LVM-thin не уменьшается автоматически. LVM-thin не знает, что внутри виртуального диска данные были удалены, поскольку для него это просто блоки, которые были ранее записаны и не освобождены.
Чтобы освободить место после удаления данных, нужно выполнить операцию под названием “trim” или “discard”, которая сообщает LVM-thin, что определённые блоки больше не используются. Для этого можно выполнить следующие шаги:
- Внутри виртуальной машины: выполнить команду
fstrim
(если используется Linux) или запустить команду очистки свободного места (если используется Windows). Это освободит неиспользуемые блоки на уровне файловой системы виртуальной машины. - На уровне Proxmox: Убедитесь, что
discard
поддерживается и включён для виртуальной машины. В Proxmox это можно сделать через опциюDiscard
в настройках диска VM или через команду в терминале:qm set <VMID> --scsi<N> discard=on
- Для уже выделенного места: Если trim или discard не уменьшает объём физически занятого пространства, можно попробовать оптимизировать образ вручную, например, пересоздав виртуальный диск с использованием утилит, таких как
qemu-img convert
. Однако это более трудоёмкий процесс и требует временной миграции данных.
Эти действия помогут вернуть неиспользуемое пространство LVM-thin, но сам процесс не является автоматическим и требует выполнения команд по мере необходимости.
Команда fstrim
обычно используется с указанием точки монтирования, чтобы освободить неиспользуемое место на файловой системе. В случае с BusyBox
, как в вашем случае, можно использовать основные параметры:
Основной пример использования
Для того чтобы освободить всё неиспользуемое пространство на определённой точке монтирования, достаточно использовать:
fstrim /mnt/point
где /mnt/point
— это точка монтирования файловой системы, которую вы хотите обработать.
Параметры
- -o OFFSET: задаёт смещение в байтах, откуда начать освобождение. Обычно не требуется указывать, если вы хотите освободить пространство по всей файловой системе.
- -l LEN: указывает количество байтов, которые нужно освободить. Также обычно не требуется, если вы хотите освободить всё свободное пространство.
- -m MIN: минимальная длина освобождаемых диапазонов, по умолчанию можно не указывать, если нет специфических требований.
- -v: выводит количество освобождённых байтов. Полезно для проверки, сколько места было очищено.
Пример с параметрами
Если хотите освободить все неиспользуемое пространство и увидеть отчёт о количестве освобождённых байтов, можно использовать:
fstrim -v /mnt/point
Этот командный вариант обычно достаточно универсален для большинства случаев.
Добавить комментарий