在大于 2T 的 PV 上使用 lvm 和精简配置 (thinpool)

在大于 2T 的 PV 上使用 lvm 和精简配置 (thinpool)

初始问题

我正在尝试使用 Trusty 14.04 上的 lvm 精简卷,并使用 3TB 的外部驱动器作为卷组的 PV,但由于某种原因,这失败了,并且精简池以某种方式损坏了。

在作为 PV 的 2TB 驱动器上,这一切都运行良好,我甚至可以创建精简卷的精简快照等。

以下是我所做的:

1)设置PV:

# pvcreate /dev/sdb

2)创建卷组:

# vgcreate vg_backups /dev/sdb

3)创建精简池:

# lvcreate --thin -L2,5T --chunksize 1M --poolmetadatasize 16G /dev/vg_backups/backup_thinpool

4)创建一个新的精简卷:

# lvcreate --thinpool /dev/vg_backups/backup_thinpool -n test_lv -V400G

5) 到目前为止,一切似乎都进展顺利,并且薄 LV 似乎处于活动状态,但是当我想使用以下命令使 VG 处于非活动状态时:

# vgchange -an /dev/vg_backups

...我第一次收到这个警告:

WARNING: Integrity check of metadata for thin pool vg_backups/backup_thinpool failed.

然后如果我尝试通过以下方式重新激活 VG:

# vgchange -ay /dev/vg_backups

...我得到:

Check of thin pool vg_backups/backup_thinpool failed (status:1). Manual repair required (thin_dump --repair /dev/mapper/vg_backups-backup_thinpool_tmeta)!

... 并且无法激活精简卷。运行 thin_dump --repair 命令只会给出以下结果:

# thin_dump --repair /dev/mapper/vg_backups-backup_thinpool_tmeta
read failed

正如我所说,如果我使用 2TB 驱动器作为 PV,一切都会正常。还在 Centos 7 盒子上进行了测试,它也可以与 3TB 驱动器一起使用。因此,Ubuntu 中的 lvm thinpool 处理一定出了问题。

有人遇到过这个问题吗?有没有什么解决方法/修复方法?

一些进一步的测试和发现:

我有另一台安装了 16.04 的机器(结果与 15.10 相同),我实际上能够在 3T 磁盘上创建精简 LV,并且它被激活并可用。

但是,如果我对薄卷进行如下薄快照:

# lvcreate -s --thinpool /dev/vg_backups/backup_thinpool -n test_lv_snapshot test_lv

...那么该薄快照将不会变为活动状态,并且即使我尝试也无法激活它:

# lvchange -ay /dev/vg_backups/test_lv_snapshot

我没有收到任何错误,LV 只是没有变为活动状态。

在 16.04 上,我可以无错误地停用并重新激活(vgchange)卷组 - 无论我如何尝试,薄快照都不会变为活动状态。

此外,在 16.04(和 15.10)上,即使 2T 磁盘也有同样的行为 - 薄快照不会变为活动状态。

但是,如果我首先在 14.04 机器上的 2T 磁盘上创建精简池、一些精简卷和这些精简卷的一些精简快照,然后将磁盘连接到 16.04 机器,那么这些精简卷及其快照就会被激活。

但是如果我随后在 16.04 机器上的该磁盘上创建更多精简快照,这些精简快照将无法在 16.04 机器上激活,但如果我将磁盘重新连接到 14.04 机器,即使在 16.04 机器上创建的精简快照也会被视为活动状态...???

因此,我在这里可能看到两个不同的问题:

1)不知何故 14.04 无法像处理 2T 磁盘那样处理 3T 磁盘

2)在 16.04 上创建的任何磁盘上的精简快照都无法激活

这意味着在 16.04(和 15.10)上创建的任何薄快照都无法访问(无法激活和安装卷),这非常糟糕!

因此,如果有人能解决这些问题那就太好了!

答案1

要激活快照,请尝试添加“-K/--ignoreactivationskip”

有人决定将精简卷上的快照默认为 setactivationskip 为“yes”。您可以通过在每个新快照上运行“lvchange --setactivationskip n”来永久禁用跳过。

相关内容