Zuletzt geändert am 31. Oktober 2017 um 09:31

LVM thin / Discard / Proxmox

Proxmox

Die folgenden Einstellungen müssen in Proxmox bzw. auf dem Proxmox Host vorgenommen werden.

WebGUI Einstellungen

2017-10-29 13 14 48-Proxmox Virtual Environment.png
2017-10-29 13 14 29-Proxmox Virtual Environment.png

Folgende Einstellungen müssen bei der VM über Proxmox eingestellt sein:

  • SCSI Controller Type muss auf "VirtIO SCSI" stehen
  • Laufwerk muss als "SCSI" eingebunden sein
  • "Discard" muss bei dem Laufwerk aktiviert sein







Bus Typ ändern

Falls die Festplatte als z.B. Virtio eingebunden ist, kann dies über die Konfigurationsdatei geändert werden.

/etc/pve/qemu-server/<vm id>.conf

2017-10-29 13 15 28.png


Warning.png Warnung: Damit die Änderung wirksam wird, muss die VM neu gestartet werden!


Einstellungen in der VM

Die folgenden Einstellungen müssen in der VM durchgeführt werden.

Debian/Ubuntu

nano /etc/initramfs-tools/modules
virtio
virtio_scsi
update-initramfs -u

Test

Mit dem folgenden Befehl kann getestet werden, ob es funktioniert hat:

fstrim /

Ausgeführt werden muss der Befehl in der VM!

Discard

Online Discard

Der Kernel informiert dem Controller sofort, wenn Speicherbereiche durch Löschen von Dateien frei werden.

nano /etc/fstab

Zum aktivieren muss die Option "discard" bei den mount options hinzugefügt werden.

# <file system>         <mount point>   <type>          <options>                         <dump>  <pass>
/dev/mapper/hdd-root    /               ext4            discard,noatime,errors=remount-ro 0       1

Batched Discard

Der Dienst "fstrim.timer" sucht wöchentlich nach ungenutzte Bereiche und meldet diese dem Controller.

Debian hat die fstrim.service und fstrim.timer Dateien zwar Verfügbar, aber standardmäßig nicht in systemd geladen. Sie müssen die Dateien nur zuerst kopieren:

cp /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
cp /usr/share/doc/util-linux/examples/fstrim.timer /etc/systemd/system

Autostart aktivieren:

systemctl enable fstrim.timer

Und zum Schluss den Dienst starten:

systemctl start fstrim.timer