Ce qui dérange vraiment mon plan de sauvegarde de cette machine ...
J'ai un serveur qui est un hyperviseur KVM pour plusieurs machines virtuelles. L'un d'eux exécute Docker. Il a ses volumes Docker sur / dev / vdb, qui est configuré en tant que PV LVM, sur lequel Docker utilise son pilote direct-lvm pour stocker les données du conteneur Docker. Ce disque virtuel est un LVM LV sur le disque local de l'hôte.
L'hôte et l'invité exécutent Fedora 21.
La vue de l'hôte sur ce volume est (seul le volume pertinent est affiché):
[root@host ~]# lvs
LV VG Attr LSize
docker2.example.com-volumes vm-volumes -wi-ao---- 40.00g
[root@host ~]# dmsetup ls --tree
vm--volumes-docker2.example.com--volumes (253:10)
└─ (9:125)
La vue de l'invité sur ce volume est (encore une fois, seul le volume pertinent est affiché):
[root@docker2 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb docker-volumes lvm2 a-- 40.00g 0
Avec tous les autres volumes LVM sur l'hôte, je peux prendre un instantané avec lvcreate --snapshot
, sauvegarder l'instantané et ensuite lvremove
sans problème. Mais avec ce volume particulier, je ne peux pas lvremove
car il est utilisé:
[root@host ~]# lvremove /dev/vm-volumes/snap-docker2.example.com-volumes
Logical volume vm-volumes/snap-docker2.example.com-volumes is used by another device.
Finalement, j'ai compris que le mappeur de périphériques sur l'hôte avait en quelque sorte compris que cet instantané de volume logique contenait un PV LVM, puis j'ai procédé à la mappage des volumes logiques dans l'instantané à l'hôte (seuls les volumes pertinents sont affichés):
[root@host ~]# dmsetup ls --tree
vm--volumes-docker2.example.com--volumes (253:10)
└─vm--volumes-docker2.example.com--volumes-real (253:14)
└─ (9:125)
docker--volumes-docker--data (253:18)
└─vm--volumes-snap--docker2.example.com--volumes (253:16)
├─vm--volumes-snap--docker2.example.com--volumes-cow (253:15)
│ └─ (9:125)
└─vm--volumes-docker2.example.com--volumes-real (253:14)
└─ (9:125)
docker--volumes-docker--meta (253:17)
└─vm--volumes-snap--docker2.example.com--volumes (253:16)
├─vm--volumes-snap--docker2.example.com--volumes-cow (253:15)
│ └─ (9:125)
└─vm--volumes-docker2.example.com--volumes-real (253:14)
└─ (9:125)
Ceux-ci correspondent exactement aux volumes logiques à l'intérieur de la VM:
[root@docker2 ~]# lvs
LV VG Attr LSize
docker-data docker-volumes -wi-ao---- 39.95g
docker-meta docker-volumes -wi-ao---- 44.00m
Notamment, il n'essaie pas de faire cela au LVM LV lorsque le système démarre, mais uniquement lorsque je prends un instantané.
Qu'est-ce qui se passe ici? Je ne veux vraiment pas que le mappeur de périphériques inspecte le contenu des instantanés LVM pour voir s'il y a quelque chose en eux qu'il peut mapper sans aide pour moi. Puis-je supprimer ce comportement? Ou dois-je créer l'instantané via une autre méthode?
pvscan --cache
pour informer lvmetad du nouveau filtre, etpvscan
indique maintenant que le PV est rejeté par un filtre, mais le problème persiste.