btrfs卷的LVM快照更改已挂载的设备
我在LVM上有一个btrf卷.
现在我想在lvm级别上做一个快照(不是在btrfs级别). 但每次我创建LVM快照时,btrfs都会将挂载的块设备更改为快照,就像我使用某种–bind挂载选项一样. 情况: # mount | grep libvirt /dev/dm-4 on /var/lib/libvirt/images type btrfs (rw,relatime,space_cache) # ls -l /dev/mapper | grep dm-4 lrwxrwxrwx 1 root root 7 M?r 17 01:18 system-vm_disks -> ../dm-4 # lvcreate -s /dev/system/vm_disks -n vm_backup -L 32G Logical volume "vm_backup" created # mount | grep libvirt /dev/dm-5 on /var/lib/libvirt/images type btrfs (rw,space_cache) # ls -l /dev/mapper | grep dm-5 lrwxrwxrwx 1 root root 7 M?r 17 01:18 system-vm_backup -> ../dm-5 # mount /dev/system/vm_backup /mnt/test # touch /mnt/test/touchME # ls -l /var/lib/libvirt/images/touchME -rw-r--r-- 1 root root 0 M?r 17 01:26 /var/lib/libvirt/images/touchME 当我删除快照时: # umount /mnt/test # lvremove /dev/system/vm_backup Do you really want to remove active logical volume vm_backup? [y/n]: y Logical volume "vm_backup" successfully removed # mount | grep libvirt /dev/dm-4 on /var/lib/libvirt/images type btrfs (rw,space_cache) # ls -l /dev/mapper | grep dm-4 lrwxrwxrwx 1 root root 7 M?r 17 01:21 system-vm_disks -> ../dm-4 # ls -l /var/lib/libvirt/images/touchME -rw-r--r-- 1 root root 0 M?r 17 01:26 /var/lib/libvirt/images/touchME 我希望我的快照是一个真正的快照而不是像–bind mount. >我想备份vm_disks LV中的每个子卷和每个btrfs快照(我不知道存在多少和哪些快照/子卷) 我的系统: # uname -a Linux laptop 3.12-1-amd64 #1 SMP Debian 3.12.9-1 (2014-02-01) x86_64 GNU/Linux # lvm version LVM version: 2.02.104(2) (2013-11-13) Library version: 1.02.83 (2013-11-13) Driver version: 4.26.0 # btrfs --version Btrfs v3.12 我必须使用至少内核3.9或更新,因为我使用Linux 3.9或更新版本提供的IPv6 NAT功能(是的,我知道你不应该使用NAT与IPv6,但这是另一个故事). 谢谢你的帮助! 编辑: 我使用dd和loop设备做了一些实验. 测试: # mkfs.btrfs /dev/loop0 [...] # mount /dev/loop0 original # touch original/original_file # ls -l original -rw-r--r-- 1 root root 0 Mar 28 21:42 original_file # dd if=/dev/loop0 of=/dev/loop1 509312+0 records in 509312+0 records out 260767744 bytes (261 MB) copied,1.76431 s,148 MB/s # mount /dev/loop1 clone # touch clone/expected_clone_file # ls -l clone -rw-r--r-- 1 root root 0 Mar 28 21:44 expected_clone_file -rw-r--r-- 1 root root 0 Mar 28 21:42 original_file # ls -l original -rw-r--r-- 1 root root 0 Mar 28 21:44 expected_clone_file -rw-r--r-- 1 root root 0 Mar 28 21:42 original_file # umount clone # umount original # mount /dev/loop1 clone # ls -l clone -rw-r--r-- 1 root root 0 Mar 28 21:42 original_file # umount clone # mount /dev/loop0 original # ls -l original -rw-r--r-- 1 root root 0 Mar 28 21:44 expected_clone_file -rw-r--r-- 1 root root 0 Mar 28 21:42 original_file 因此,每当您尝试使用克隆的btrfs文件系统安装新设备时,最终都会使用旧的已安装设备(但mount的输出中没有任何内容正确指示这一点,正如您在上面的LVM实验中所见). 我现在的问题是:如何将克隆的btrfs的uuid更改为一些新的未使用的uuid.在那之后,我可以将克隆设备与原始设备一起安装,我怀疑. 解决方法
我没有大量看到这个但是btrfs,因为文件系统适用于磁盘组,而不是单个设备.
我怀疑当发生挂载时,btrfs无法区分挂载的快照和真正挂载的文件系统.事实上,可以看到底层子卷的UUID,假设它是原始卷的镜像并同时写入两个卷. 如果能够解决大多数意图和目的btrfs快照取代LVM快照,我会感到惊讶. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |