Ottimizzare la gestione dei file immagine disco in Proxmox
Jump to navigation
Jump to search
È possibile far si che lo spazio libero su un disco immagine di una VM venga rilasciato automaticamente, senza seguire procedure manuali.
Scelta dello storage
Per far questo è necessario utilizzare uno storage che supporti il discard:
ZFS qcow locale NFS da buster in poi (deve essere NFS4v2, vedere con "mount | grep nfs4 | grep vers=4.2| grep --color 'nfs4\|vers=4.2'")
Per vedere lo spazio effettivamente occupato da un'immagine qcow:
qemu-img info file.qcow
Per vedere lo spazio effettivamente occupato da un volume su filesystem ZFS
zfs list DATA/vm-116-disk-1
NAME USED AVAIL REFER MOUNTPOINT DATA/vm-116-disk-1 1.19G 4.51T 1.19G -
Impostazione della VM
- La VM deve avere un controller scsi virtio: scegliere dalle
Options SCSI COntroller VirtIO SCSI
- I dischi della VM devono essere di tipo
SCSI
- E devono avere impostata l'opzione
Discard
- Ricordarsi di aggiornare nelle Options il
Boot Order
Impostazione del sistema operativo della VM
Linux
LVM
- Se si usa LVM, impostare discard anche qui, in modo da liberare spazio per eventuali lv o pv cancellati:
vi /etc/lvm/lvm.conf
issue_discards = 1
=EXT4
- Verificare che non ci siano riferimenti in /etc/fstab a dei block device (/dev/vda1 o altro)
- Impostare l'opzione discard per i filesystem (attenzione aboto che deve essere dichiarato ext4 e non ext2) e lo swap dichiarato in /etc/fstab
sudoedit /etc/fstab
UUID=1131db48-794b-49f9-8e4f-d53589b93989 /boot ext4 defaults,discard 0 2 /dev/mapper/debian71-root / ext4 errors=remount-ro,discard 0 1 /dev/mapper/debian71-swap1 none swap sw,discard 0 0
- Ricreare l'initrd:
update-initramfs -u -k all
- Se non si vuole fare reboot, rimontare tutti i filesystem e riattivare gli swap
mount -o remount / mount -o remount /boot swapoff -a; swapon -a
- Controllare che ci sia l'opzione discard
mount
- Eventualmente eseguire un trim manuale per >= Jessie:
fstrim -av
- Per wheezy:
fstrim -v /
ZFS
- Se si usa ZFS, si deve avere almeno ZFS 0.8, e settare
zpool set autotrim=on POOLNAME
Per lanciare manualmente
zpool trim POOLNAME
Windows
Il Trim è supportato da Windows Seven in poi.
Configurare la VM con Controller Virtio-SCSI e dischi SCSI
Windows 10
- Lanciare un TRIM manuale del Disco E: da prompt elevato di Powershell:
Optimize-Volume -DriveLetter E -ReTrim -Verbose
- Verificare che il trim automatico sia abilitato, da prompr CMD elevato:
fsutil behavior query disabledeletenotify
disabledeletenotify = 0
- Abilitare il trim automatico:
fsutil behavior set disabledeletenotify 0