Salut,
Version courte :
Comment faire pour activer la capacite TRIM du disque dur sur un OS invite Debian 9 (qcow2) virtualise avec QEMU/KVM?
J'ai suivi ca et ca mais impossible de le faire fonctionner.
Quelqu'un aurait-il une idee?
root@invite:~# hdparm -I /dev/sda
/dev/sda:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ATA device, with non-removable media
Standards:
Likely used: 1
Configuration:
Logical max current
cylinders 0 0
heads 0 0
sectors/track 0 0
--
Logical/Physical Sector size: 512 bytes
device size with M = 1024*1024: 0 MBytes
device size with M = 1000*1000: 0 MBytes
cache/buffer size = unknown
Capabilities:
IORDY not likely
Cannot perform double-word IO
R/W multiple sector transfer: not supported
DMA: not supported
PIO: pio0
Version longue :
Deja je presente les choses : ce que je veux faire et pourquoi (ca peut servir parce que peut etre que la solution a laquelle j'ai pense n'est pas la meilleure).
J'ai plusieurs VM installees avec QEMU/KVM dont les disques sont des images qcow2. Je souhaite pouvoir faire une copie/sauvegarde automatique des images qcow2 afin d'en avoir une ou deux (surement plus - sauvegarde journaliere) sous la main au cas ou je foire quelque chose dans la VM et j'ai oublie de faire un snapshot (ou le disque dur du dedie tombe - un seul disque donc pas de RAID). Ces copies/sauvegardes seront rapatriees sur un serveur heberge chez moi qui lui a plusieurs disques en RAID. Le probleme se pose au moment du transfert, je souhaiterais eviter de transferer toute la taille maximale du disque et sachant que le format qcow2 permet le "thin provisionning" (n'occupe sur le disque dur de l'hote que la place qu'occupe effectivement l'invite) et donc ne transferer que la taille reellement occupee par l'OS invite ; en soit ceci n'est pas un probleme, notamment avec rsync.
Le probleme apparait lorsque le systeme invite occupe de la place qui par la suite est liberee, mais celle-ci n'est pas liberee sur l'hote.
Et c'est la que rentre en action FSTRIM, qui permet de notifier l'OS hote que l'invite a libere de la place (c'est ce qui est utilise pour les SSD notamment).
J'ai du mal a faire fonctionner FSTRIM sur une Debian 9 (invite) dont l'hote est une Debian 8 (je le precise ca peut avoir son importance).
Dans la conf de la VM invite j'ai mis scsi pour le disque (apparement ca ne marche pas avec autre chose) et j'ai rajoute la directive discard='unmap'
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' discard='unmap'/>
<source file='/var/lib/libvirt/images/invite.qcow2'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
Mais l'OS invite n'enumere pas TRIM parmi les possibilites du disque ; voir commande hdparm precedente (ceci dit les disques physiques de mon serveur a la maison n'ont pas cette capacite non plus, pourtant dans les tutos indiques dans la version courte ils arrivent bien a mettre ca en place).
Les paquets installes sur l'OS hote sont :
root@hote:~# dpkg --list | grep -i qemu
ii ipxe-qemu 1.0.0+git-20141004.86285d1-1 all PXE boot firmware - ROM images for qemu
ii qemu-kvm 1:2.1+dfsg-12+deb8u6 amd64 QEMU Full virtualization on x86 hardware
ii qemu-system-common 1:2.1+dfsg-12+deb8u6 amd64 QEMU full system emulation binaries (common files)
ii qemu-system-x86 1:2.1+dfsg-12+deb8u6 amd64 QEMU full system emulation binaries (x86)
ii qemu-utils 1:2.1+dfsg-12+deb8u6 amd64 QEMU utilities
root@hote:~# dpkg --list | grep -i libvirt
ii libsys-virt-perl 1.2.9-2 amd64 Perl module providing an extension for the libvirt library
ii libvirt-bin 1.2.9-9+deb8u4 amd64 programs for the libvirt library
ii libvirt-clients 1.2.9-9+deb8u4 amd64 programs for the libvirt library
ii libvirt-daemon 1.2.9-9+deb8u4 amd64 programs for the libvirt library
ii libvirt-daemon-system 1.2.9-9+deb8u4 amd64 Libvirt daemon configuration files
ii libvirt0 1.2.9-9+deb8u4 amd64 library for interfacing with different virtualization systems
ii python-libvirt 1.2.9-1 amd64 libvirt Python bindings
Si besoin d'autres infos n'hesitez pas.