备份我的机器的计划真的搞砸了...
我有一台服务器,该服务器是多个虚拟机的KVM管理程序。其中之一是运行Docker。它在/ dev / vdb上具有其Docker卷,该卷设置为LVM PV,Docker在其上使用direct-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 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)
这些与虚拟机内部的逻辑卷完全对应:
[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 LV执行此操作。
这里发生了什么?我真的不希望设备映射器检查LVM快照的内容以查看其中是否有任何内容可以帮我映射。我可以抑制这种行为吗?还是我需要通过其他方法创建快照?
pvscan --cache
向lvmetad告知新过滤器,pvscan
现在说PV被过滤器拒绝了,但问题仍然存在。