Como para sobrescrever cada disco com dados aleatórios, ele é redundante. Como você vai construir um novo RAID criptografado, o resync substituirá tudo de qualquer maneira.
Quanto ao método de sobrescrever, /dev/urandom
é terrivelmente lento, as pessoas que tentam usá-lo para limpar terabytes geralmente cancelam na metade do caminho, porque isso leva muito tempo. Criptografar o dispositivo com uma chave aleatória e, em seguida, limpar isso com /dev/zero
é mais rápido e shred -n 1
ainda é muito mais rápido. Portanto, se você precisar ter dados aleatórios em seu disco, recomendo que use esses métodos.
Agora, para o seu RAID, eu faria o seguinte: (neste exemplo, loop2
é o disco de 2 TB)
-
Adicione a nova partição de disco de 1 TB ao RAID-1. Aguarde até a sincronização terminar . Dessa forma, seu 1 TB de dados abrange três discos.
$ mdadm /dev/md99 --grow --raid-devices=3 --add /dev/loop1p1 mdadm: added /dev/loop1p1 raid_disks for /dev/md99 set to 3 $ cat /proc/mdstat md99 : active raid1 loop1p1[2] loop2p1[1] loop0p1[0] 100224 blocks super 1.2 [3/3] [UUU]
-
remova o disco de 2 TB da matriz RAID-1. Seu 1TB ainda é preservado redundantemente nos dois discos de 1TB.
$ mdadm /dev/md99 --fail /dev/loop2p1 mdadm: set /dev/loop2p1 faulty in /dev/md99 $ mdadm /dev/md99 --remove /dev/loop2p1 mdadm: hot removed /dev/loop2p1 from /dev/md99 $ mdadm /dev/md99 --grow --raid-devices=2 raid_disks for /dev/md99 set to 2 $ cat /proc/mdstat md99 : active raid1 loop1p1[2] loop0p1[0] 100224 blocks super 1.2 [2/2] [UU]
-
limpe o disco de 2 TB
$ shred -n 1 /dev/loop2
-
reparticione o disco para 2 TB. Observe que você precisará de uma partição de inicialização se não tiver outro dispositivo de inicialização, pois você não pode inicializar a partir de dispositivos criptografados.
$ parted /dev/loop2
-
crie um novo array RAID-1 usando essa partição e
missing
para o segundo dispositivo. O segundo dispositivo será adicionado mais tarde. Além disso, o tamanho será limitado por enquanto, para ser aumentado mais tarde, já que não temos certeza do tamanho dos discos de 2x1TB neste momento. (Se tiver certeza, sinta-se à vontade para usar um tamanho diferente aqui, mas você não poderá adicionar o 2x1TB mais tarde se o fizer muito grande).$ mdadm /dev/md42 --create --level=1 --raid-devices=2 --size=1000G /dev/loop2p1 missing mdadm: largest drive (/dev/loop2p1) exceeds size (102400K) by more than 1% Continue creating array? yes mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md42 started. $ cat /proc/mdstat md42 : active raid1 loop2p1[0] 102400 blocks super 1.2 [2/1] [U_] md99 : active raid1 loop1p1[2] loop0p1[0] 100224 blocks super 1.2 [2/2] [UU]
-
criptografá-lo, mkfs, copiar dados (use sua codificação e configurações preferidas, LVM, sistema de arquivos, métodos de cópia, ...)
$ cryptsetup luksFormat /dev/md42 $ cryptsetup luksOpen /dev/md42 luksmd42 $ mkfs.ext4 /dev/mapper/luksmd42 $ mount /dev/md99 /mnt/old $ mount /dev/md42 /mnt/new $ rsync -aAHSX /mnt/old/. /mnt/neW/. $ umount /mnt/old /mnt/new
-
Agora, seus dados são redundantes no antigo RAID 1 (não criptografado) e no novo RAID 1 não redundante (criptografado). Mas neste ponto você tem que quebrar a redundância para adicionar os discos 2x1TB ao novo RAID 1.
$ mdadm --stop /dev/md99 mdadm: stopped /dev/md99
-
Neste ponto, você também pode limpar os discos 2x1TB se quiser perder seu tempo. Não é necessário que o RAID-1 sincronize os dados aleatórios do disco de 2 TB com os discos de 1 TB.
$ shred -n 1 /dev/loop0 & $ shred -n 1 /dev/loop1 & $ wait # for shred $ parted /dev/loop0 $ parted /dev/loop1
-
Combine 2x1TB usando mdadm, seja
linear
ou0
, dependendo da sua preferência.$ mdadm /dev/md43 --create --level=0 --raid-devices=2 /dev/loop0p1 /dev/loop1p1 $ cat /proc/mdstat md43 : active raid0 loop1p1[1] loop0p1[0] 199680 blocks super 1.2 512k chunks md42 : active raid1 loop2p1[0] 102400 blocks super 1.2 [2/1] [U_]
-
Adicione-o ao RAID 1 e aumente o RAID 1 ao mesmo tempo.
$ mdadm /dev/md42 --add /dev/md43 mdadm: added /dev/md43 $ mdadm /dev/md42 --grow --size=max mdadm: component size of /dev/md42 has been set to 199616K $ cat /proc/mdstat md43 : active raid0 loop1p1[1] loop0p1[0] 199680 blocks super 1.2 512k chunks md42 : active raid1 md43[2] loop2p1[0] 199616 blocks super 1.2 [2/2] [UU]
-
Cresça o cryptsetup e o sistema de arquivos também.
$ cryptsetup resize luksmd42 $ resize2fs /dev/mapper/luksmd42 resize2fs 1.42.7 (21-Jan-2013) Resizing the filesystem on /dev/mapper/luksmd42 to 197568 (1k) blocks. The filesystem on /dev/mapper/luksmd42 is now 197568 blocks long.
e você está feito.
Editar:
Veja um exemplo de /etc/mdadm.conf
para acompanhar essa configuração (use mdadm --detail --scan
para obter um ponto de partida):
ARRAY /dev/md43 metadata=1.2 UUID=b9f590d7:9984dad4:cb75131b:63bca165
ARRAY /dev/md42 metadata=1.2 UUID=3a70188d:9ecacda7:ac715e16:9402fc55
Em particular:
- no
DEVICE
lines (se você precisar deles, verifique se ele incluimd*
devices) - a ordem de
ARRAY
linhas é importante - a matriz RAID0 deve ser criada primeiro, o que acontece se for listada primeiro no arquivo.