是否可以增加 luks 加密的外部 raid5 阵列?

con*_*use 5 encryption hardware storage raid

我打算购买一个外部raid 阵列(硬件raid5)。我的意图是最初为它配备 4 个磁盘,并使用 luks 和 dm-crypt 对其进行加密。我的问题是:我是否能够热交换磁盘并增加加密的 raid,将一两个磁盘增加到总共 6 个?

我没有理由不这样做,但安全总比抱歉好。那么 dm-crypt 对不断增长的分区大小是否稳定?

小智 6

只是一些澄清,为弱牙预先咀嚼智慧。像许多 Linux 文档一样,这个有用的教程假设比一些普通用户可能拥有的知识多一点。

您可以通过查看 /dev 目录来确定您的 RAID 阵列的名称,它将是 md#,例如 md0 或 md1 等。要获取有关 RAID 阵列的更多详细信息,以便您可以选择正确的阵列,请尝试以下命令:

 mdadm -D /dev/md#
Run Code Online (Sandbox Code Playgroud)

是所述阵列的数目。它会给你这样的信息:

Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : we:0  (local to host we)
           UUID : 94777f33ltjj97
         Events : 136

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
       2       8       34        2      active sync   /dev/sdc2
       4       8       50        3      active sync   /dev/sdd2
Run Code Online (Sandbox Code Playgroud)

命令中不存在引号来增加 RAID 文件系统,“-n”指的是阵列中新的驱动器总数。因此,如果您要将 RAID 5 阵列从 4 个驱动器扩展到 5 个驱动器,您可以使用以下命令:

mdadm --grow -n 5 /dev/md2
Run Code Online (Sandbox Code Playgroud)

运行此命令以查看 RAID 合并的进展情况:

cat /proc/mdstat
Run Code Online (Sandbox Code Playgroud)

对于大驱动器和缓慢系统,调整 RAID 大小可能需要很长时间,甚至几天。当它达到 100% 时,您就可以进行下一步了。如果您首先在 LUKS 加密分区上进行 LVM 分区,则需要调整加密卷的大小。要弄清楚,您可以查看 /dev/mapper 文件夹。选择加密卷,而不是任何 LVM 逻辑卷。由于我的系统正在运行,我显然不需要执行教程给出的第一个命令:

  cryptsetup luksOpen /dev/md0 md0_crypt

    *Device md0_crypt already exists*
Run Code Online (Sandbox Code Playgroud)

如果第二个命令有效,它将不会给出任何输出,就像许多 Linux 命令一样:

cryptsetup resize md0_crypt
Run Code Online (Sandbox Code Playgroud)

接下来是调整 LVM 方案大小的时候了。我想出了用这个命令运行 pvresize 命令的内容: pvs -o +tags

pvs -o +tags
  *PV         VG   Fmt  Attr PSize PFree PV Tags
  /dev/dm-0  vg0  lvm2 a--  1.02g    0* 
Run Code Online (Sandbox Code Playgroud)

所以我在物理卷上运行了 pvresize 命令,它告诉我它已经成功了。

pvresize /dev/dm-0
  *Physical volume "/dev/dm-0" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized*
Run Code Online (Sandbox Code Playgroud)

接下来决定您希望使用 lvdisplay 命令扩展哪个逻辑卷。这将告诉您逻辑卷的名称。您的卷组的名称将在 /dev 文件夹中。就我而言,我使用了:

lvdisplay /dev/vg0
Run Code Online (Sandbox Code Playgroud)

查看显示“LV 名称”的字段,我决定使用以下命令将所有新空间添加到我的逻辑卷之一:

lvresize -l +100%FREE /dev/mapper/vg0-system
  Extending logical volume system to 7.17 GiB
  Logical volume system successfully resized
Run Code Online (Sandbox Code Playgroud)

最后,您可以使用 resize2fs 命令调整 LVM 的大小,以使更改生效。

resize2fs /dev/mapper/vg0-system
*resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/mapper/vg0-system is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg0-system to 1879040 (4k) blocks.
The filesystem on /dev/mapper/vg0-system is now 1879040 blocks long.*
Run Code Online (Sandbox Code Playgroud)

该过程完成后(可能需要一段时间),您可以使用“df -h”命令查看文件系统的新大小。我觉得整个过程有点吓人,所以我想把命令拼出来,以减少别人的焦虑。


小智 5

是的,你当然可以。

怎么做

首先,我需要使用以下命令将额外的驱动器作为热备件添加到阵列中:

mdadm --add /dev/md2 /dev/sdc3
Run Code Online (Sandbox Code Playgroud)

/dev/md2 是raid,sdc3 是附加磁盘。

然后我告诉数组增长 [...] 与:

"mdadm --grow -n 12 /dev/md2".
Run Code Online (Sandbox Code Playgroud)

现在,我等了大约 16 个小时,让阵列将自身重组为新布局。[...] 查看cat /proc/mdstat进度。

然后我需要告诉加密分区它更大。[...]

cryptsetup luksOpen /dev/md2 storage
cryptsetup resize storage
Run Code Online (Sandbox Code Playgroud)

“存储”是加密设备的标签,如/dev/mapper/sotrage.

如果这是一个 LVM 分区,我需要做一个pvresize而不是上面的。最后,我不得不增加文件系统的大小。[...]

resize2fs /dev/mapper/storage
Run Code Online (Sandbox Code Playgroud)

在执行此操作时,您是否会丢失阵列上的任何数据?不,它保留了所有数据。在对其进行整形之前,我已经运行了“dd if=/dev/md2 of=/dev/zero”,以确保在进行整形之前任何驱动器上都没有任何坏块。运行这种验证可以找到通常不使用的边缘扇区,这是运行 RAID 阵列的重要部分。此外,请确保在运行重塑之前没有出现故障的驱动器。

其他有用的位:

在 RAID 调整大小完成之前,您无法扩展文件系统。

在设备使用时调整 RAID-5 大小是否安全?是的,应该是。它旨在跟踪它的位置,因此您甚至可以在增加阵列时重新启动,它会从停止的地方恢复。

来源:http : //www.tummy.com/journals/entries/jafo_20080502_154339