LVM 和灾难恢复

LVM 和灾难恢复

我明白什么逻辑卷管理器是什么以及它能完成什么,但我觉得我缺少了一些东西。

假设我们有两个物理驱动器,sda 和 sdb。两者都是 100 MB。我将它们放入 VolumeGroup1 并创建一个 200 MB 的 LogicalVolume1。

如果我创建一个 150 MB 的文件会发生什么?100 MB 会物理上位于 sda 上,而 50 MB 位于 sdb 上吗?如果是这样,什么会告诉操作系统文件的一部分位于一个驱动器上,而另一部分位于另一个驱动器上?

驱动器故障怎么办?假​​设没有 RAID,如果 sdb 发生故障,sda 上的所有数据都会丢失吗?有没有办法控制哪些文件位于哪些物理驱动器上?

您通常如何管理 LVM?您是否会创建一个或两个大型卷组,然后根据需要进行分区?还有其他提示吗?

答案1

假设我们有两个物理驱动器,sda 和 sdb。两者都是 100 MB。我将它们放入 VolumeGroup1 并创建一个 200 MB 的 LogicalVolume1。
如果我创建一个 150 MB 的文件会发生什么?100 MB 物理上位于 sda 上,而 50 MB 位于 sdb 上吗?

正确(假设在文件创建之前文件系统是空的)。

如果是这样,那么什么告诉操作系统文件的一部分位于一个驱动器上,而另一部分位于另一个驱动器上?

LVM 告诉操作系统有一个 200MB 的磁盘。内核的 LVM 部分(分为两部分:用户空间管理工具和内核驱动程序)会将操作系统看到的内容映射到磁盘上的物理位置/块。

驱动器故障怎么办?假​​设没有 RAID,如果 sdb 发生故障,sda 上的所有数据都会丢失吗?有没有办法控制哪些文件位于哪些物理驱动器上?

是的,考虑数据丢失。

如果您创建较小的逻辑卷,那么您可以使用pvmove命令将它们从一个磁盘移动到另一个磁盘。

您通常如何管理 LVM?您是否会创建一个或两个大型卷组,然后根据需要进行分区?还有其他提示吗?

我倾向于创建大型卷组,然后根据需要创建逻辑卷。无需完全分配卷组中的所有空间;在需要时再分配。增加逻辑卷的大小很容易,而且几乎所有现代文件系统也都可以轻松扩展。

答案2

Linux 中 LVM 和软件 Raid 得以运行的底层是内核的设备映射器部分。它将物理设备的块地址抽象到您正在使用的虚拟块设备。

在使用 LVM 时,与处理数据的其他任何事情一样,您需要注意数据可用性的影响。这并不是说 LVM 很危险,事实上,如果使用正确的做法,它对可用性的影响很小。

在您在问题中提到的场景中,数据的可用性将与 RAID0 相同,如果任何驱动器发生故障,就会导致数据丢失。

实际上,我不会在没有在某种 RAID 上运行 LVM 的情况下使用它。我曾在一个 30TB 文件服务器上使用过 LVM,该服务器在一个 VG 中大约有 20 个硬件 RAID5 卷。但是,如果您有足够的可用区,您可以使用 pvmove 将数据从一个或多个 PV 中迁移出来,如果它开始给您带来问题。

但始终要有一个备份策略,并且不时进行测试。

答案3

您通常如何管理 LVM?您是否会创建一个或两个大型卷组,然后根据需要进行分区?

我的总体策略是将可能(作为一整套)迁移到另一个系统的物理卷放入单独的卷组中。

如果您有外部存储,最好将其放在单独的卷组中。从物理上来说,将其从这台计算机断开并连接到另一台计算机是很容易的,因此从逻辑上来说,将其导出/导入到 LVM 中也应该很容易,同时保持数据完好无损。

如果您的内部磁盘上已经有 vg00,然后您为机器购买了另一个内部磁盘,请问自己一个问题:新磁盘上的数据是否会绑定到 vg00,并且将数据移动到另一个系统没有任何意义?在这种情况下,它应该是 vg00 的一部分。否则,我会创建 vg01,因为它可以轻松地自行导出/导入。

答案4

如果我创建一个 150 MB 的文件会发生什么?100 MB 会物理上位于 sda 上,而 50 MB 位于 sdb 上吗?如果是这样,什么会告诉操作系统文件的一部分位于一个驱动器上,而另一部分位于另一个驱动器上?

LVM(逻辑卷管理器)将物理卷收集到卷组中。每个物理卷(驱动器本身)都有称为物理扩展的小块。这些扩展在磁盘中有一个唯一标识符。实际上,它们是按顺序编号的。当您创建逻辑卷时,它是由与物理扩展配对的逻辑扩展构建的。逻辑扩展在逻辑卷中具有唯一 ID。在 HP-UX 中,您可以检查哪个逻辑扩展与哪个物理扩展配对。在 SLES11 中,我不知道如何检查它。lvdisplay --maps应该不错,但不完美(对我来说)。

相关内容