जो वास्तव में इस मशीन का बैकअप लेने की मेरी योजना के साथ खिलवाड़ कर रहा है ...
मेरे पास एक सर्वर है जो कई वर्चुअल मशीनों के लिए KVM हाइपरवाइजर है। इनमें से एक डॉकर चला रहा है। इसका डॉकटर वॉल्यूम / देव / vdb पर है, जिसे LVM PV के रूप में स्थापित किया गया है, जिस पर Docker अपने डायरेक्ट-lvm ड्राइवर का उपयोग Docker कंटेनर डेटा को स्टोर करने के लिए करता है। यह वर्चुअल डिस्क होस्ट के स्थानीय डिस्क पर LVM LV है।
मेजबान और अतिथि दोनों फेडोरा 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 PV है, और फिर स्नैपशॉट के होस्ट के भीतर तार्किक संस्करणों को मैप करने के लिए आगे बढ़ा (केवल प्रासंगिक वॉल्यूम दिखाए गए हैं)
[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 को फ़िल्टर द्वारा अस्वीकार किया जा रहा है, लेकिन समस्या बनी रहती है।