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 ~]
Verifique o espaço atual do sistema de arquivos usado.
[root@localhost ~]
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 ~]
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 ~]
O estado das matrizes após a remoção dos discos.
[root@localhost ~]
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 ~]
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 ~]
Depois disso, aguardamos a sincronização das matrizes.
[root@localhost ~]
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 ~]
O estado das matrizes após a remoção dos discos.
[root@localhost ~]
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 ~]
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 ~]
Depois disso, aguardamos a sincronização das matrizes.
[root@localhost ~]
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:
- Estenda a seção 2 em cada unidade,
- Estenda a matriz md127,
- Expanda PV (volume físico),
- Estenda LV (volume lógico) vg0-root,
- 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 ~]
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 ~]
Realizamos a expansão do
volume físico . Antes da expansão, verifique o estado atual do PV.
[root@localhost ~]
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 ~]
Expansão do
volume lógico . Antes da extensão, verifique o status atual de LV (1).
[root@localhost ~]
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 ~]
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 ~]
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 ~]
Verifique a tabela de partição usada na unidade
/dev/sda
.
[root@localhost ~]
A unidade
/dev/sdb
usa uma tabela de partição semelhante. Verifique o espaço em disco usado no sistema.
[root@localhost ~]
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 ~]
Na nova unidade de 3 TB, precisaremos criar 3 partições:
bios_grub
seção bios_grub
para compatibilidade da GPT com o BIOS,- A partição para a matriz RAID a ser montada em
/boot
. - 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 ~]
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 ~]
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 ~]
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 ~]
Particionando discos depois de adicionar partições a uma matriz.
[root@localhost ~]
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 ~]
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 ~]
Depois de copiar a marcação GPT para um segundo novo disco, a marcação ficará assim.
[root@localhost ~]
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 ~]
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:
- Estenda a matriz md126,
- Expanda PV (volume físico),
- Estenda LV (volume lógico) vg0-root,
- 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 ~]
Expansão do volume físico .Antes da expansão, verificamos o valor atual do espaço ocupado PV / dev/md126
. [root@localhost ~]
Expanda PV com o seguinte comando. pvresize /dev/md126
Verifique a ação concluída. [root@localhost ~]
Expansão classe volume lógico vg0-root .Após a expansão do PV, verificamos o espaço ocupado do VG. [root@localhost ~]
Verifique o espaço ocupado por LV. [root@localhost ~]
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 ~]
Estendendo o sistema de arquivos (ext4).Verifique o tamanho atual do sistema de arquivos. [root@localhost ~]
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 ~]
O tamanho do sistema de arquivos é aumentado pelo volume inteiro do volume.