LINUX.ORG.RU

Виртуальные машны (KVM) жиреют - discard, fstrim?

 , , ,


1

2

после удаления файлов и тп, образ только увеличивается в размерах

proxmox 6.x, виртуальные машины kvm, как на hdd, так и на ssd с ubuntu/gentoo/debian

диски scsi, образа в qcow

сам конфиг:


agent: 1
args: -cpu host,+vmx
balloon: 256
bios: ovmf
boot: order=scsi0;net0
cores: 4
cpu: host,flags=+hv-evmcs;+aes
memory: 512
name: zabix
net0: virtio=72:8A:41:F5:56:12,bridge=vmbr0
numa: 0
ostype: l26
scsi0: local:107/vm-107-disk-0.qcow2,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=56e3234e-0c3b-4a90-9163-26d6a49ffd87
sockets: 1
vmgenid: 79952af2-c498-44e0-9d20-4b4548cf410c

есть мысль добавить опцию discard, а так же делать fstrim -av по крону в раз в неделю

ПыСы все данные на одном разделе

★★

Ну в принципе вполне сработает, да. fstrim по шедулеру раз можно и раз в сутки, он отрабатывает быстро.

Nastishka ★★★★★ ()

discard и fstrim это одно и то же, добавлять и то и другое смысла нет. Для производительности рекомендуют fstrim по крону, но это для SSD, возможно для QEMU discard будет не хуже.

На всякий случай сообщу, что мерить размер qcow2 файла нужно командой du. ls будет врать. Может оно у тебя уже нормально работает? Обычно fstrim в современных дистрибутивах из коробки включен.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

discard и fstrim это одно и то же, добавлять и то и другое смысла нет. Для производительности рекомендуют fstrim по крону, но это для SSD, возможно для QEMU discard будет не хуже.

как много людей и так же много мнений…

BitSum ★★ ()
Последнее исправление: BitSum (всего исправлений: 1)

там нужно брать среднее количество данных которые пишешь на диск в день 50-60 гигов и 90% емкости диска - места занимаемое ОС (+ Винда, если дуалбут) делить на это количество. мне нужно выходит раз в неделю нужно fstrim делать при диске размером 500 гигов (т.е. значение по-умолчанию)

tz4678 ★★ ()
Ответ на: комментарий от tz4678

From 18.04 fstrim (discard unused blocks) is enabled to run weekly by default for all mounted filesystems on devices that support the discard operation.

Убунту, федора, рхел (и его клоны). Что там ещё осталось? Вроде ничего.

Legioner ★★★★★ ()
Ответ на: комментарий от BitSum

В актуальных версиях qemu discard включен по умолчанию. Что там ваша обёртка над ним делает - я не знаю, если специально не отключает, то оно просто работает. Можно посмотреть, с какими опциями qemu запущен, если там нет discard=ignore и qemu не древний, то он скорей всего включен.

Но не надо путать discard в настройках виртуальной машины и discard/trim в настройках гостевой ОС. discard в настройках виртуальной машины определяет то, может ли гостевая ОС в принципе делать этот самый discard. Но если discard в настройках виртуальной машины включен, это не означает, что гостевая машина будет его делать. Тут и надо смотреть настройки. Как я уже писал - можно либо передавать опцию discard при монтировании, тогда при удалении файла (ну и в целом при освобождении места) запросы discard будут сразу передаваться в виртуальную машину, которая сразу будет освобождать место на диске хоста. Но это может отрицательно повлиять на производительность, а может и не повлиять, тестируйте, гуглите. Более традиционный метод это сервис fstrim с таймером, который раз в неделю освобождает всё скопом. Он по умолчанию включен во многих современных дистрибутивах.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от BitSum

Ну направление куда копать я думаю вы поняли. systemctl status fstrim.timer, если покажет, что включён и были запуски, значит работает. Если нет - включайте или добавляйте discard в fstab. Про генту я так понимаю написано тут, проще всего использовать systemd таймер (ну или другой вариант, если у вас не systemd)

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.