Що насправді псує мій план створити резервну копію цієї машини ...
У мене є сервер, який представляє собою гіпервізор KVM для декількох віртуальних машин. Одним з таких є запущений Докер. У ньому є томи Docker on / dev / vdb, який встановлюється як LVM PV, на якому Docker використовує драйвер прямого lvm для зберігання даних контейнерів Docker. Цей віртуальний диск є LVM LV на локальному диску хоста.
Як хост, так і гість управляють Fedora 21.
Перегляд хосту на цей том (показано лише відповідний том):
[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)
Перегляд гостям на цей том (знову ж, відображається лише відповідний том):
[root@docker2 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb docker-volumes lvm2 a-- 40.00g 0
З усіма іншими томами LVM на хості, я можу зробити знімок, створити lvcreate --snapshot
резервну копію знімка, а потім - lvremove
без проблем. Але з цим конкретним обсягом я не можу, lvremove
тому що він використовується:
[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.
Врешті-решт я зрозумів, що пристрій-картограф на хості якимось чином зрозумів, що цей логічний знімок обсягу містить ПВ LVM, а потім перейшов до картографування логічного обсягу на знімку до хоста (показано лише відповідні томи):
[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)
Вони точно відповідають логічним томам всередині VM:
[root@docker2 ~]# lvs
LV VG Attr LSize
docker-data docker-volumes -wi-ao---- 39.95g
docker-meta docker-volumes -wi-ao---- 44.00m
Примітно, він не намагається зробити це на LVM LV, коли система завантажується, але лише коли я роблю знімок.
Що тут відбувається? Я дійсно не хочу, щоб розробник пристроїв перевіряв вміст знімків LVM, щоб побачити, чи є всередині них щось, це може для мене безпомилково відображати. Чи можу я придушити таку поведінку? Або мені потрібно створити знімок за допомогою іншого способу?
pvscan --cache
розповісти lvmetad про новий фільтр, іpvscan
тепер констатується, що PV відхиляється фільтром, але проблема зберігається.