我的问题与此主题类似LVM 是否会增加数据丢失的风险?然而,我却找不到满意的答案。
所以问题是,当我有 3 个物理磁盘的卷组 (VG) 时,LVM 在哪里存储数据/文件?当一个磁盘出现故障时会发生什么?我可以拔掉该磁盘,告诉 LVM 从 VG 中删除该物理磁盘,然后继续使用其他磁盘吗?所以真正的问题是:LVM 是否将文件保存在一个磁盘上,或者 LVM 是否对文件进行分段并将其拆分到三个磁盘上?第一个选项不可能是正确的,因为当我有一个 3GB 文件时会发生什么,我的 VG 说 3GB 是可用的,但实际上每个磁盘只剩下 1GB 空间。那么后者是真的吗?但这是否意味着我肯定会丢失除故障磁盘之外的其他一些数据?
答案1
首先,VG 本身无法存储数据(好吧,它可以,但你很少有机会以这种方式使用它)。第二件事是:LVM 看到的不是磁盘,而是物理卷。
通常,数据存储在逻辑卷下定义的分区上。一个 VG 可以包含多个 PV 上的多个 LV。来自维基媒体的图片可能会有所帮助:
![LVM方案](https://upload.wikimedia.org/wikipedia/commons/b/ba/LVM1.svg)
现在,这取决于您如何配置 LV:线性卷、条带卷或镜像卷。另外,通常 LV 按顺序放置在 PV 上,但您可以强制 LVM 将它们放置在特定的 PV 上。
如果包含 PV 的磁盘发生故障,则可能会发生两种主要情况:
- 如果 PV 不包含 LV,LVM 会提示找不到该 PV,但存储在其他 LV 上的数据将是安全的
- 如果丢失的 PV 上至少存在逻辑卷的一部分,则该 LV 上定义的文件系统肯定会被腐蚀。现在这取决于文件系统使用了您将丢失多少数据以及恢复剩余部分的难度。
当然,如果您在条带模式下配置了 LVM,很可能每个发生故障的磁盘都会使所有文件系统所有 LV 上都已损坏。
如果您想了解更多有关 LVM 内部结构的信息,RedHat 杂志上有一篇很好的文章: https://web.archive.org/web/20150213040147/http://www.redhat.com/magazine/009jul05/features/lvm2/
答案2
决定数据的去向并不是 LVM 真正的责任。然而,可以通过使用特定配置来对数据分布进行一些控制。
LVM 逻辑卷分为三种类型。第一个是线性卷,第二个是条带卷,第三个是镜像卷。如果您设置了线性映射,它会将一系列物理盘区分配给逻辑卷的一个区域为了。对于文件系统来说,这看起来就像一个连续的“磁盘”。
文件系统有责任将数据存储在它认为数据应该存放的地方。许多文件系统尝试以连续的方式存储数据,因此对于线性卷,文件可能适合也可能不适合一个物理卷。
对于条纹卷,情况有些不同。 LVM 实际上将数据分割成条带并将它们并行写入不同的 PV。
镜像在不同设备上维护相同的数据副本。
因此,根据您的设置,如果 PV3 失败,您可能只会丢失物理上位于 PV3 中的文件(线性),损坏扩展超过两个条带(条带)的所有文件,或者没有(镜像)。
答案3
LVM 的行为在 lvm.conf 中配置(位于 CentOS 5 的 /etc/lvm/ 中)。
通常,LVM 将其元数据存储在每个 PV 上(请参阅配置文件中的元数据部分)。
并且有 LVM 信息的备份,如备份- 部分/etc/lvm/lvm.conf。
现在,在这个默认设置中,它完全取决于您的 VG/LV 设置,如果您丢失 PV(如果您镜像,则不会丢失数据)是否会丢失数据。