RAID、LVM 和 LUKS 的最佳顺序

RAID、LVM 和 LUKS 的最佳顺序

我将使用 Debian GNU/Linux 8 安装文件服务器。

我想使用 mdadm 实现软件 RAID-1,并使用 LUKS 实现加密磁盘。我还喜欢 LVM 带来的灵活性。

有多种方法可以实现这一点。一种方法是:首先使用 mdadm 设置 RAID-1。然后设置 LVM PV 以覆盖创建的 /dev/mdX。然后设置 LV 并使用 LUKS 加密它们。然后使用文件系统(例如 ext4)格式化它们。这将产生如下布局:

RAID --> LVM --> LUKS --> ext4

或者我可以按照不同的顺序进行:

RAID --> LUKS --> LVM --> ext4

甚至可能是:

LVM --> RAID --> LUKS --> ext4

甚至可能是完全不同的顺序。

不同方法的优缺点是什么?哪种方法性能最好、安全性最好、可维护性最好等?

有没有“最佳方法”来做到这一点?

答案1

首先,LUKS 和 LVM 的顺序取决于您是否希望为不同的 LV 设置不同的 LUKS 密码或其他设置。如果您需要为不同的 LV 设置不同的密码,那么您肯定需要将 LUKS 置于 LVM 之上。另一方面,如果所有 LV 都共享相同的密码和设置(如 keylen),则您需要将 LUKS 置于 LVM 之下,这样您就不必处理拥有多个 LUKS 分区的开销(想想当您需要更改密码时需要做什么)。

其次,您几乎总是希望 RAID 处于最低级别,这样当一个磁盘坏掉时,可以轻松透明地进行交换。如果您要在 LVM 之上设置 RAID,则当一个磁盘坏掉时,您必须更换 PV,这将是一个很大的麻烦。此外,在 LVM 之上设置 RAID 会完全破坏 LVM 的灵活性。然后您可能需要在 RAID 之上再次设置第二层 LVM!

因此,由于大多数情况下人们只需要使用一个密码,这就足够了:

RAID --> LUKS --> LVM --> ext4

在某些情况下,您可能需要使用 LVM 将多个 RAID 设备组合成一个大卷,然后您可以执行以下操作:

RAID --> LVM --> LUKS (--> LVM) --> ext4

从理论上来说,顺序不会对性能产生太大影响,如果每一层都设置正确,在实践中我还没有看到这种设置有特别糟糕的性能。最重要的可能是对齐:

  1. 确保您的分区是 1MB 对齐的(对于 SSD 非常重要);
  2. 对于 RAID 层,选择块大小明智地;
  3. 对于 LVM,请确保设置--dataalignment为匹配 RAID 块大小(可能会有帮助)。

rd.luks.options=discard此外,如果在 SSD 上,请确保通过添加到/etc/default/grubdiscard到启用 LUKS TRIM/DISCARD 直通/etc/crypttab(这些是我在 Red Hat/Fedora Linux 上所做的。在 Debian 上可能会有点不同。)如果您使用较新的内核,LVM 和 RAID 应该自动支持丢弃。

当然,这些只是一般准则。如果您有特殊需求,请随时在此更新您的问题或评论。

答案2

如果您想要所有 RAID、LUKS 和 LVM,我会推荐RAID -> LUKS -> LVM -> FSRAID --> LVM --> LUKS --> LVM --> FS没有比这更好的了RAID -> LUKS -> LVM- 要扩展卷,只需RAID -> LUKS向卷组添加更多设备。

RAID --> LVM --> LUKS --> FS- 仅加密特定的逻辑卷具有默认不加密所有内容的功能(可能被视为优点或缺点)但它将使扩展根 FS 更容易。

当用户以错误的顺序扩展/调整逻辑卷时,在逻辑卷之上扩展 LUKS 是问题的常见来源。在整个 md RAID 设备上使用 LUKS 将简化调整大小 - 添加新的 md 设备,在其上创建 LUKS,将设备添加到在/etc/crypttab中(至少在 Fedora 和 RHEL 克隆上)并扩展您的卷组。如果根文件系统位于卷组上,则需要rd.luks.uuid向内核命令行添加另一个条目(编辑/etc/默认/grub并重新生成 grub.cfg。)

LUKS -> RAID通常是错误的 - 数据将被多次加密,消耗更多的 CPU 周期而没有任何好处。当磁盘发生故障时,还可能会错误地用新磁盘替换故障磁盘,而没有设置 LUKS。

延伸与收缩:

延伸时始终从堆栈底部开始,收缩时则从顶部开始。

例子:

扩展 RAID -> LVM -> LUKS -> FS(如果卷组中有足够的可用空间,则前两个步骤是可选的):

  1. 添加新磁盘并创建md RAID。
  2. 将 mdX 设备添加到卷组。
  3. 扩展逻辑卷。
  4. 扩展 LUKS 设备。
  5. 延长 FS。

收缩 RAID -> LVM -> LUKS -> FS

  1. 缩小 FS。
  2. 缩小 LUKS 设备。
  3. 缩小逻辑卷。

相关内容