我了解LVM是什么以及它完成了什么,但我觉得我错过了一些东西。
假设我们有两个物理驱动器,sda 和 sdb。两者都是 100 兆。我将它们放入 VolumeGroup1 并创建一个 200 兆的 LogicalVolume1。
如果我创建一个 150 兆的文件会怎样?100 megs 会在 sda 上,50 在 sdb 上吗?如果是这样,是什么告诉操作系统文件的一部分在一个驱动器上,而另一部分在另一个驱动器上?
驱动故障怎么办?假设没有RAID,如果sdb出现故障,sda上的数据会全部丢失吗?有没有办法控制哪些文件在哪些物理驱动器上?
您通常如何管理 LVM?您是否创建一个或两个大型卷组,然后根据需要进行分区?还有其他提示吗?
正确(假设文件系统在创建文件之前为空)。
LVM 告诉操作系统只有一个 200MB 磁盘。内核的 LVM 部分(它分为两部分,用户空间管理工具和内核驱动程序)然后会将操作系统看到的内容映射到磁盘上的物理位置/块。
是的,考虑丢失的数据。
如果您创建较小的逻辑卷,则可以使用该
pvmove
命令将它们从磁盘移动到磁盘。我倾向于创建大型卷组,然后根据需要创建逻辑卷。无需完全分配卷组中的所有空间;在需要时分配它。增加逻辑卷的大小很容易,几乎所有现代文件系统也可以轻松增长。
让 LVM 和 Software Raid 在 Linux 中工作的底层是内核的设备映射器部分。这就是将物理设备的块地址抽象为您正在使用的虚拟块设备的原因。
在将 LVM 与任何数据一起使用时,您确实需要了解数据可用性的影响。这并不是说 LVM 实际上是危险的,当使用正确的做法时,它对可用性的影响是最小的。
在您在问题中建议的情况下,您的数据可用性将与 RAID0 相同,如果任何驱动器出现故障,则会导致数据丢失。
实际上,如果不在某种 RAID 上运行 LVM,我不会使用它。我在一个 30TB 文件服务器上使用了 LVM,该服务器在一个 VG 中有大约 20 个硬件 RAID5 卷。但是,如果您有足够的空闲 Extents,您可以使用 pvmove 将数据从一个或多个 PV 迁移出去,以防它开始给您带来问题。
但始终有一个不时测试的备份策略。
您通常如何管理 LVM?您是否创建一个或两个大型卷组,然后根据需要进行分区?
我的一般策略是将可能(作为一个整体)迁移到另一个系统的物理卷放入单独的卷组中。
如果您有外部存储,最好将其放在单独的卷组中。将其从这台计算机断开连接并连接到另一台计算机在物理上很容易,因此在 LVM 中导出/导入它在逻辑上应该同样容易,同时保持数据完整。
如果您的内部磁盘上已经有一个 vg00,然后您为您的机器购买了另一个内部磁盘,请问自己一个问题:新磁盘上的数据是否会绑定到 vg00,并且移动没有任何意义数据到另一个系统?在这种情况下,它应该是 vg00 的一部分。否则,我会创建 vg01,因为它可以轻松地自行导出/导入。
如果您在这样的组中有两个驱动器作为物理卷,那么您所拥有的是一个 JBOD(Just a Bunch Of Disks)阵列。如果其中一个驱动器发生故障,您将不会比将驱动器排列在 RAID0 阵列中得到更好的保护。
如果卷组中有一个逻辑卷(因为这将由卷中的文件系统而不是 LVM 控制),则无法直接控制两个驱动器上的内容,但如果将卷组拆分为多个逻辑卷,则可以手动排序它们的创建,以便给定的逻辑卷位于给定的驱动器上。
我相信 VG 中的每个 PV 都有一个 LV 布局的副本,并且数据不会像 RAID0 那样被剥离,因此如果您的一个驱动器发生故障,但如果数据丢失是任何问题,您确实有更多的机会恢复某些东西我根本不会考虑以这种方式使用两个驱动器(通过 LVM 或 RAID0)。
LVM(逻辑卷管理器)将物理卷收集到卷组中。每个物理卷(驱动器本身)都有称为物理范围的小块。这些盘区在磁盘中有一个唯一标识符。实际上它们是按顺序编号的。当您创建一个逻辑卷时,它是从与物理盘区配对的逻辑盘区构建的。逻辑盘区在逻辑卷中具有唯一 ID。在 HP-UX 中,您可以检查哪个逻辑范围与哪个物理范围配对。在 SLES11 中,我不知道如何检查它。
lvdisplay --maps
应该很好但不完美(对我来说)。