首先,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
从理论上讲,如果每一层都正确设置,顺序应该不会对性能产生太大影响,而且在实践中,我还没有看到这种设置的性能会特别糟糕。最重要的事情可能是对齐:
- 确保您的分区对齐1MB(对于SSD非常重要);
- 对于RAID层,明智地选择块大小;
- 对于LVM,请确保设置
--dataalignment
为与RAID块大小匹配(这可能会有所帮助)。
此外,如果在SSD上,请确保您启用陆氏TRIM /放弃直通加入rd.luks.options=discard
到/etc/default/grub
和discard
到/etc/crypttab
(这些是我在Red Hat / Fedora Linux系统做的。可能是在Debian略有不同。)LVM和RAID应该自动支持丢弃如果您使用的是新内核。
当然,这些只是一般准则。如果您有特殊需要,请随时在此处更新您的问题或评论。