Co naprawdę psuje mój plan tworzenia kopii zapasowej tej maszyny ...
Mam serwer, który jest hiperwizorem KVM dla kilku maszyn wirtualnych. Jednym z nich jest Docker. Ma woluminy Docker na / dev / vdb, które są skonfigurowane jako PV LVM, na których Docker używa sterownika bezpośredniego lvm do przechowywania danych kontenera Docker. Ten dysk wirtualny to LVM LV na dysku lokalnym hosta.
Zarówno host, jak i gość uruchamiają Fedorę 21.
Widok hosta na ten wolumin jest (pokazany jest tylko odpowiedni wolumin):
[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)
Widok gościa na ten wolumin jest (ponownie pokazany jest tylko odpowiedni wolumin):
[root@docker2 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb docker-volumes lvm2 a-- 40.00g 0
Przy wszystkich innych woluminach LVM na hoście mogę zrobić migawkę lvcreate --snapshot
, wykonać kopię zapasową migawki, a następnie lvremove
bez problemu. Ale z tym konkretnym tomem nie mogę lvremove
, ponieważ jest w użyciu:
[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.
W końcu zorientowałem się, że urządzenie mapujące urządzenie na hoście w jakiś sposób zorientowało się, że ta migawka logiczna woluminu zawierała PV LVM, a następnie przystąpiła do mapowania woluminów logicznych w migawce na hoście (pokazano tylko odpowiednie woluminy):
[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)
Odpowiadają one dokładnie woluminom logicznym w maszynie wirtualnej:
[root@docker2 ~]# lvs
LV VG Attr LSize
docker-data docker-volumes -wi-ao---- 39.95g
docker-meta docker-volumes -wi-ao---- 44.00m
W szczególności nie próbuje tego zrobić z LVM LV podczas uruchamiania systemu, ale tylko wtedy, gdy robię migawkę.
Co tu się dzieje? Naprawdę nie chcę, aby mapowanie urządzeń sprawdzało zawartość migawek LVM, aby sprawdzić, czy jest w nich coś, co może mi nieprzydatnie zmapować. Czy mogę stłumić to zachowanie? Czy też muszę utworzyć migawkę za pomocą innej metody?
pvscan --cache
aby poinformować lvmetad o nowym filtrze, ipvscan
teraz stwierdzam, że PV jest odrzucane przez filtr, ale problem nadal występuje.