小编Tim*_*ews的帖子

如何保证LVM2 LV在原始块级别的临时不变性?

我继承了一个 Azure VM (Ubuntu 20.04),它有一个 7 磁盘 VG,完全被格式化为 ext4 的 RAID5 LV 占用。

我需要进行备份,并希望使用 Azure 备份来为包含 VG 的 Azure 磁盘创建快照。

Azure 磁盘快照在时间点上不一致,因此出于文件系统完整性和 LVM 元数据的原因,我需要在备份运行时冻结存储。我的工作量可以忍受;我正在尝试找出使原始磁盘块暂时不可变的最佳方法。

fsfreeze- 我测试了冻结文件系统、拍摄快照、解冻,然后切换到快照。

在我有限的测试中,这工作正常,当“恢复”的磁盘换回时,我没有看到 LVM 带来任何可怕的情况,但我只能执行这么多测试,并且如果存在 1% 的边缘情况,我的磁盘元数据会丢失会不一致我可能找不到它。

我担心我将活动锁定在如此高的层:在活动时不会发生任何文件系统操作FIFREEZE ioctl,但这是否会阻止 LVM 执行任何类型的较低级别操作,例如元数据更新、RAID 相关活动?

然后我尝试了一下,感觉dmsetup suspend /dev/mapper/my-lvol这是一个更好的解决方案。

测试设置:

fsfreeze

  1. echo 3 > /proc/sys/vm/drop_caches
  2. sync ; sync(旧习难改 :)
  3. fsfreeze -f /export
  4. dd if=/dev/mapper/my-lvol of=/dev/null status=progress

运行dd直至完成。我承认这是有效的,因为我没有通过冻结的文件系统进行访问,但这让我想知道当我假设我的 Azure 磁盘不变时,LVM 是否仍然可以在低级别上执行操作。

dmsetup suspend

  1. echo 3 > /proc/sys/vm/drop_caches
  2. sync ; sync …

filesystems backup lvm device-mapper azure

6
推荐指数
0
解决办法
175
查看次数

标签 统计

azure ×1

backup ×1

device-mapper ×1

filesystems ×1

lvm ×1