Substituindo discos menores por discos maiores no Linux

Olá pessoal. Antecipando o início de um novo grupo do curso Linux Administrator, estamos publicando material útil escrito por nossos alunos, bem como pelo mentor do curso, Roman Travin, especialista em suporte técnico de produtos corporativos REG.RU.

Neste artigo, consideraremos 2 casos de substituição de discos e transferência de informações para novos discos de maior volume com expansão adicional da matriz e do sistema de arquivos. O primeiro caso diz respeito à substituição de discos com a mesma marcação MBR / MBR ou GPT / GPT, o segundo caso refere-se à substituição de discos com marcação MBR em discos com capacidade superior a 2 TB, nos quais será necessária a marcação GPT com a partição biosboot. Nos dois casos, os discos para os quais transferimos dados já estão instalados no servidor. O sistema de arquivos usado para a partição raiz é ext4.



Caso 1: Substituindo unidades menores por unidades maiores (até 2 TB)


Tarefa: Substitua os discos atuais por discos maiores (até 2 TB) pela transferência de informações. Nesse caso, temos 2 discos SSD de 240 GB (RAID-1) com o sistema instalado e 2 discos SATA de 2 TB para os quais você precisa transferir o sistema.

Considere o layout de disco atual.

[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sda2 8:2 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk sdd 8:48 0 931,5G 0 disk 

Verifique o espaço atual do sistema de arquivos usado.

 [root@localhost ~]# df -h      % C  devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 9,6M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,3G 192G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 6,3G 0 6,3G 0% /run/user/0 

O tamanho do sistema de arquivos antes da substituição dos discos é 204 GB, são utilizadas 2 matrizes de software md126, montadas em /boot e md127 , que é usado como volume físico para o grupo VG vg0 .

1. Removendo partições de disco de matrizes


Verifique o estado da matriz

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sda1[0] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sda2[0] sdb2[1] 233206784 blocks super 1.2 [2/2] [UU] bitmap: 0/2 pages [0KB], 65536KB chunk unused devices: <none> 

O sistema usa 2 matrizes: md126 (ponto de montagem /boot ) - consiste nas md127 /dev/sda1 e /dev/sdb1 , md127 (LVM para troca e raiz do sistema de arquivos) - consiste em /dev/sda2 e /dev/sdb2 .

Marcamos as partições do primeiro disco, usadas em cada matriz, como ruins.

 mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2 

Removemos seções do dispositivo de bloco / dev / sda das matrizes.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

Depois de removermos o disco da matriz, as informações sobre os dispositivos de bloco ficarão assim.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk sdd 8:48 0 931,5G 0 disk 

O estado das matrizes após a remoção dos discos.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdb1[1] 1047552 blocks super 1.2 [2/1] [_U] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] bitmap: 1/2 pages [4KB], 65536KB chunk unused devices: <none> 

2. Copiando a tabela de partição para um novo disco


Você pode verificar a tabela de partição usada no disco com o seguinte comando.

 fdisk -l /dev/sdb | grep 'Disk label type' 

A saída para o MBR será:

 Disk label type: dos 

para GPT:

 Disk label type: gpt 

Copie a tabela de marcação para MBR:

 sfdisk -d /dev/sdb | sfdisk /dev/sdc 

Nesse comando, o primeiro é a unidade da qual a marcação é copiada, o segundo é o local para onde copiar.

ATENÇÃO : Para GPT, a unidade na qual copiar a marcação é a primeira a ser indicada, a unidade na qual copiar a marcação da segunda unidade. Se você misturar os discos, a marcação inicial íntegra será substituída e destruída.

Copiando a tabela de marcação para a GPT:

 sgdisk -R /dev/sd /dev/sdb 

Em seguida, atribua um UUID aleatório ao disco (para GPT).

 sgdisk -G /dev/sdc 

Após a execução do comando, as partições devem aparecer no disco /dev/sdc .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part └─sdc2 8:34 0 222,5G 0 part sdd 8:48 0 931,5G 0 disk 

Se após a ação executada as partições no sistema no disco /dev/sdc não estiverem definidas, executaremos o comando para reler a tabela de partição.

 sfdisk -R /dev/sdc 

Se os discos atuais usarem a tabela MBR e as informações precisarem ser transferidas para discos com capacidade superior a 2 TB, os novos discos precisarão criar manualmente a marcação GPT usando a seção biosboot. Este caso será considerado na parte 2 deste artigo.

3. Adicionando partições do novo disco à matriz


Adicione partições de disco às matrizes correspondentes.

 mdadm /dev/md126 --add /dev/sdc1 mdadm /dev/md127 --add /dev/sdc2 

Verifique se as seções foram adicionadas.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk 

Depois disso, aguardamos a sincronização das matrizes.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc1[2] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc2[2] sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] [==>..................] recovery = 10.6% (24859136/233206784) finish=29.3min speed=118119K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

Você pode monitorar continuamente o processo de sincronização usando o utilitário watch .

 watch -n 2 cat /proc/mdstat 

A -n especifica em quais intervalos em segundos o comando deve ser executado para verificar o progresso.

Repita as etapas 1 a 3 para a próxima unidade de substituição.

Marcamos as partições do segundo disco, usadas em cada matriz, como ruins.

 mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2 

Removemos seções do dispositivo de bloco /dev/sdb das matrizes.

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

Depois de removermos o disco da matriz, as informações sobre os dispositivos de bloco ficarão assim.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk 

O estado das matrizes após a remoção dos discos.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc1[2] 1047552 blocks super 1.2 [2/1] [U_] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc2[2] 233206784 blocks super 1.2 [2/1] [U_] bitmap: 1/2 pages [4KB], 65536KB chunk unused devices: <none> 

Copie a tabela de marcação MBR da unidade /dev/sd para a unidade /dev/sdd .

 sfdisk -d /dev/sd | sfdisk /dev/sdd 

Após a execução do comando, as partições devem aparecer na unidade /dev/sdd .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part └─sdd2 8:50 0 222,5G 0 part 

Adicione partições de disco às matrizes.

 mdadm /dev/md126 --add /dev/sdd1 mdadm /dev/md127 --add /dev/sdd2 

Verifique se as seções foram adicionadas.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

Depois disso, aguardamos a sincronização das matrizes.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdd1[3] sdc1[2] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdd2[3] sdc2[2] 233206784 blocks super 1.2 [2/1] [U_] [>....................] recovery = 0.5% (1200000/233206784) finish=35.4min speed=109090K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

5. Instale o GRUB em novas unidades


Para o CentOS:

 grub2-install /dev/sdX 

Para Debian / Ubuntu:

 grub-install /dev/sdX 

onde X é a letra do dispositivo de bloco. Nesse caso, instale o GRUB em /dev/sdc e /dev/sdd .

6. Extensão do sistema de arquivos (ext4) da partição raiz


931,5 GB estão disponíveis nas novas unidades /dev/sdc e /dev/sdd . Como a tabela de partição é copiada de discos menores, 222,5 GB estão disponíveis nas partições /dev/sdc2 e /dev/sdd2 .

 sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

É necessário:

  1. Estenda a seção 2 em cada unidade,
  2. Estenda a matriz md127,
  3. Expanda PV (volume físico),
  4. Estenda LV (volume lógico) vg0-root,
  5. Estenda o sistema de arquivos.

Usando o utilitário partido, expanda a /dev/sdc2 para o valor máximo. parted /dev/sdc comando parted /dev/sdc (1) e visualizamos a tabela de partição atual com o comando p (2).



Como você pode ver, o final da seção 2 termina com 240 GB. Vamos expandir a seção com o comando resizepart 2 , em que 2 é o número da seção (3). Indicamos o valor no formato digital, por exemplo, 1000 GB ou usamos a indicação do compartilhamento de disco - 100%. Novamente, verificamos que a seção possui um novo tamanho (4).

Repita as etapas acima para a unidade /dev/sdd . Após expandir as partições, /dev/sdc2 e /dev/sdd2 tornaram-se iguais a 930,5 GB.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 930,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 930,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

Depois disso, expandimos a matriz md127 ao máximo.

 mdadm --grow /dev/md127 --size=max 

Verifique se a matriz foi expandida. Agora, seu tamanho se tornou 930,4 GB.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 930,5G 0 part └─md127 9:127 0 930,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 930,5G 0 part └─md127 9:127 0 930,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

Realizamos a expansão do volume físico . Antes da expansão, verifique o estado atual do PV.

 [root@localhost ~]# pvscan PV /dev/md127 VG vg0 lvm2 [222,40 GiB / 0 free] Total: 1 [222,40 GiB] / in use: 1 [222,40 GiB] / in no VG: 0 [0 ] 

Como você pode ver, o PV /dev/md127 usa 222,4 GB de espaço.

Expanda PV com o seguinte comando.

 pvresize /dev/md127 

Verifique o resultado da extensão fotovoltaica.

[
 root@localhost ~]# pvscan PV /dev/md127 VG vg0 lvm2 [930,38 GiB / 707,98 GiB free] Total: 1 [930,38 GiB] / in use: 1 [930,38 GiB] / in no VG: 0 [0 ] 

Expansão do volume lógico . Antes da extensão, verifique o status atual de LV (1).

 [root@localhost ~]# lvscan ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit ACTIVE '/dev/vg0/root' [<206,41 GiB] inherit 

O LV /dev/vg0/root usa 206,41 GB.

Expandimos LV com o seguinte comando (2).

 lvextend -l +100%FREE /dev/mapper/vg0-root 


Verifique a ação executada (3).

 [root@localhost ~]# lvscan ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit 

Como você pode ver, após a expansão do LV, o volume de espaço em disco ocupado se tornou 914,39 GB.



O volume LV aumentou (4), mas o sistema de arquivos ainda ocupa 204 GB (5).

1. Execute a extensão do sistema de arquivos.

 resize2fs /dev/mapper/vg0-root 

Após o comando executado, verificamos o tamanho do sistema de arquivos.

 [root@localhost ~]# df -h      % C  devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 9,5M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/vg0-root 900G 1,3G 860G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 6,3G 0 6,3G 0% /run/user/0 

O tamanho do sistema de arquivos raiz aumentará para 900 GB. Após concluir as etapas, você pode remover os discos antigos.

Caso 2: Substituindo unidades menores por unidades maiores (mais de 2 TB)


Tarefa: Substitua os discos atuais por discos maiores (2 x 3 TB) por salvar informações. Nesse caso, temos 2 discos SSD de 240 GB (RAID-1) com o sistema instalado e 2 discos SATA de 2 TB de 3 TB nos quais você precisa transferir o sistema. As unidades atuais usam a tabela de partição MBR. Como os novos discos têm capacidade superior a 2 TB, eles precisam usar a tabela GPT, pois o MBR não pode trabalhar com discos maiores que 2 TB.

Veja o layout atual do disco.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sda2 8:2 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk sdd 8:48 0 2,7T 0 disk 

Verifique a tabela de partição usada na unidade /dev/sda .

 [root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type' Disk label type: dos 

A unidade /dev/sdb usa uma tabela de partição semelhante. Verifique o espaço em disco usado no sistema.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,5M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,3G 192G 1% / /dev/md126 1007M 120M 837M 13% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

Como você pode ver, a raiz do sistema de arquivos é 204 GB. Verifique o estado atual do RAID do software.

1. Instale a tabela de partição GPT e o particionamento de disco


Verifique o layout do disco por setor.

 [root@localhost ~]# parted /dev/sda print : ATA KINGSTON SVP200S (scsi)  /dev/sda: 240GB   (./.): 512B/512B  : msdos Disk Flags:         1 1049kB 1076MB 1075MB primary , raid 2 1076MB 240GB 239GB primary raid 

Na nova unidade de 3 TB, precisaremos criar 3 partições:

  1. bios_grub seção bios_grub para compatibilidade da GPT com o BIOS,
  2. A partição para a matriz RAID a ser montada em /boot .
  3. A partição para a matriz RAID na qual serão a raiz LV e a troca LV .

Instale o utilitário parted com o comando yum install -y parted (para CentOS), apt install -y parted (para Debian / Ubuntu).

Usando parted, execute os seguintes comandos para particionar o disco.

parted /dev/sdc comando parted /dev/sdc e mudamos para o modo de edição do layout do disco.

Crie uma tabela de partição GPT.

 (parted) mktable gpt 

Crie uma seção bios_grub e defina um sinalizador para ela.

 (parted) mkpart primary 1MiB 3MiB (parted) set 1 bios_grub on 

Crie uma seção 2 e defina um sinalizador para ela. A partição será usada como um bloco para a matriz RAID e montada em /boot .

 (parted) mkpart primary ext2 3MiB 1028MiB (parted) set 2 boot on 

Crie uma seção 3, que também será usada como um bloco de matriz no qual haverá LVM.

 (parted) mkpart primary 1028MiB 100% 

Nesse caso, a configuração do sinalizador não é necessária, mas, se necessário, é possível configurá-lo com o seguinte comando.

 (parted) set 3 raid on 

Verifique a tabela criada.

 (parted) p : ATA TOSHIBA DT01ACA3 (scsi)  /dev/sdc: 3001GB   (./.): 512B/4096B  : gpt Disk Flags:         1 1049kB 3146kB 2097kB primary bios_grub 2 3146kB 1077MB 1074MB primary  3 1077MB 3001GB 3000GB primary 

Atribua à unidade um novo GUID aleatório.

 sgdisk -G /dev/sdd 

2. Removendo partições do primeiro disco das matrizes


Verifique o estado da matriz

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sda1[0] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sda2[0] sdb2[1] 233206784 blocks super 1.2 [2/2] [UU] bitmap: 0/2 pages [0KB], 65536KB chunk unused devices: <none> 

O sistema usa 2 matrizes: md126 (ponto de montagem / inicialização) - consiste em /dev/sda1 e /dev/sdb1 , md127 (LVM para swap e a raiz do sistema de arquivos) - consiste em /dev/sda2 e /dev/sdb2 .

Marcamos as partições do primeiro disco, usadas em cada matriz, como ruins.

 mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2 

Removemos seções do dispositivo de bloco /dev/sda das matrizes.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

Verifique o estado da matriz após remover o disco.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdb1[1] 1047552 blocks super 1.2 [2/1] [_U] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

3. Adicionando partições do novo disco à matriz


O próximo passo é adicionar as partições do novo disco às matrizes para sincronização. Examinamos o estado atual do layout do disco.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part └─sdc3 8:35 0 2,7T 0 part sdd 8:48 0 2,7T 0 disk 

A /dev/sdc1 é uma partição bios_grub e não está envolvida na criação de matrizes. /dev/sdc2 usarão apenas /dev/sdc2 e /dev/sdc3 . Adicione essas seções às matrizes correspondentes.

 mdadm /dev/md126 --add /dev/sdc2 mdadm /dev/md127 --add /dev/sdc3 

Depois, aguardamos a sincronização da matriz.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdc2[2] sdb1[1] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md127 : active raid1 sdc3[2] sdb2[1] 233206784 blocks super 1.2 [2/1] [_U] [>....................] recovery = 0.2% (619904/233206784) finish=31.2min speed=123980K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

Particionando discos depois de adicionar partições a uma matriz.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdb2 8:18 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk 

4. Removendo partições do segundo disco de matrizes


Marcamos as partições do segundo disco, usadas em cada matriz, como ruins.

 mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2 

Removemos seções do dispositivo de bloco /dev/sda das matrizes.

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

5. Copie a tabela de marcação GPT e sincronize a matriz


Para copiar a tabela de marcação GPT, usamos o utilitário sgdisk , incluído no pacote para trabalhar com partições de disco e a tabela GPT - gdisk .

Instale o gdisk para o CentOS:

 yum install -y gdisk 

Instale o gdisk para Debian / Ubuntu:

 apt install -y gdisk 

ATENÇÃO : Para GPT, o disco no qual a marcação é copiada é indicado primeiro , o segundo disco é o disco no qual a marcação é copiada. Se você misturar os discos, a marcação inicial íntegra será substituída e destruída.

Copie a tabela de marcação GPT.

 sgdisk -R /dev/sdd /dev/sdc 

Particionando discos após transferir uma tabela para /dev/sdd .

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part └─sdd3 8:51 0 2,7T 0 part 

Em seguida, adicionamos cada uma das partições participantes das matrizes RAID de software.

 mdadm /dev/md126 --add /dev/sdd2 mdadm /dev/md127 --add /dev/sdd3 

Estamos aguardando a sincronização da matriz.

 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md126 : active raid1 sdd2[3] sdc2[2] 1047552 blocks super 1.2 [2/2] [UU] bitmap: 1/1 pages [4KB], 65536KB chunk md127 : active raid1 sdd3[3] sdc3[2] 233206784 blocks super 1.2 [2/1] [U_] [>....................] recovery = 0.0% (148224/233206784) finish=26.2min speed=148224K/sec bitmap: 2/2 pages [8KB], 65536KB chunk unused devices: <none> 

Depois de copiar a marcação GPT para um segundo novo disco, a marcação ficará assim.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 222,5G 0 part sdb 8:16 0 223,6G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 222,5G 0 part sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

Em seguida, instale o GRUB nas novas unidades.

Instalação para o CentOS:

 grub2-install /dev/sdX 

Instalação para Debian / Ubuntu:

 grub-install /dev/sdX 

onde X é a letra da unidade, no nosso caso, as unidades /dev/sdc e /dev/sdd .

Atualizando as informações sobre a matriz.

Para o CentOS:

 mdadm --detail --scan --verbose > /etc/mdadm.conf 

Para Debian / Ubuntu:

 echo "DEVICE partitions" > /etc/mdadm/mdadm.conf mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf 

Atualizando a imagem initrd :
Para o CentOS:

 dracut -f -v --regenerate-all 

Para Debian / Ubuntu:

 update-initramfs -u -k all 

Atualizando a configuração do GRUB.

Para o CentOS:

 grub2-mkconfig -o /boot/grub2/grub.cfg 

Para Debian / Ubuntu:

 update-grub 

Após as etapas concluídas, os discos antigos podem ser removidos.

6. Extensão do sistema de arquivos (ext4) da partição raiz


Particionando discos antes de expandir o sistema de arquivos após movê-lo para 2 x discos de 3 TB (RAID-1).

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk sdb 8:16 0 223,6G 0 disk sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md126 9:126 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md126 9:126 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

As /dev/sdc3 e /dev/sdd3 ocupam 2,7 TB. Como criamos um novo particionamento de discos com uma tabela GPT, o tamanho das três partições foi imediatamente definido para o espaço em disco máximo possível; nesse caso, a expansão da partição não é necessária.

É necessário:

  1. Estenda a matriz md126,
  2. Expanda PV (volume físico),
  3. Estenda LV (volume lógico) vg0-root,
  4. Estenda o sistema de arquivos.

1. md126 matriz md126 ao máximo.

 mdadm --grow /dev/md126 --size=max 

Após expandir a matriz md126 tamanho do espaço ocupado aumentou para 2,7 TB.

 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223,6G 0 disk sdb 8:16 0 223,6G 0 disk sdc 8:32 0 2,7T 0 disk ├─sdc1 8:33 0 2M 0 part ├─sdc2 8:34 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdc3 8:35 0 2,7T 0 part └─md126 9:126 0 2,7T 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 2,7T 0 disk ├─sdd1 8:49 0 2M 0 part ├─sdd2 8:50 0 1G 0 part │ └─md127 9:127 0 1023M 0 raid1 /boot └─sdd3 8:51 0 2,7T 0 part └─md126 9:126 0 2,7T 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] 

Expansão do volume físico .

Antes da expansão, verificamos o valor atual do espaço ocupado PV / dev/md126.

 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/md126 vg0 lvm2 a-- 222,40g 0 

Expanda PV com o seguinte comando.

 pvresize /dev/md126 

Verifique a ação concluída.

 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/md126 vg0 lvm2 a-- <2,73t 2,51t 

Expansão classe volume lógico vg0-root .

Após a expansão do PV, verificamos o espaço ocupado do VG.

 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 2 0 wz--n- <2,73t 2,51t 

Verifique o espaço ocupado por LV.

 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- <206,41g swap vg0 -wi-ao---- <16,00g 

O volume raiz-vg0 ocupa 206,41 GB.

Expanda LV para o espaço máximo em disco.

 lvextend -l +100%FREE /dev/mapper/vg0-root 

Verificando o espaço do VE após a expansão.

 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- 2,71t swap vg0 -wi-ao---- <16,00g 

Estendendo o sistema de arquivos (ext4).

Verifique o tamanho atual do sistema de arquivos.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,6M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 204G 1,4G 192G 1% / /dev/md127 1007M 141M 816M 15% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

O volume / dev / mapper / vg0-root ocupa 204 GB após a extensão LV.

Expandindo o sistema de arquivos.

 resize2fs /dev/mapper/vg0-root 

Verifique o tamanho do sistema de arquivos após sua expansão.

 [root@localhost ~]# df -h      % C  devtmpfs 16G 0 16G 0% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 9,6M 16G 1% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/vg0-root 2,7T 1,4G 2,6T 1% / /dev/md127 1007M 141M 816M 15% /boot tmpfs 3,2G 0 3,2G 0% /run/user/0 

O tamanho do sistema de arquivos é aumentado pelo volume inteiro do volume.

Source: https://habr.com/ru/post/pt486084/


All Articles