Olá a todos. Antes do início do novo grupo de curso. Estamos publicando um recurso útil escrito por Roman Travin, nosso aluno, mentor do curso e especialista em suporte técnico de produtos corporativos da REG.RU.
Este artigo examinará dois cenários envolvendo a substituição de discos e a migração de dados para novos discos maiores, com a subsequente expansão do array e do sistema de arquivos. O primeiro cenário envolve a substituição de discos com o mesmo esquema de particionamento, seja MBR/MBR ou GPT/GPT. O segundo cenário envolve a substituição de discos com esquemas de particionamento MBR por discos maiores que 2 TB, o que exigirá particionamento GPT com uma partição BIOSBOOT. Em ambos os casos, os discos para os quais os dados estão sendo migrados já estão instalados. servidorO sistema de arquivos usado para a partição raiz é o ext4.
Caso 1: Substituição de discos rígidos menores por discos rígidos maiores (até 2 TB)
Tarefa: Substitua os discos rígidos atuais por discos maiores (até 2 TB) e migre os dados. Neste caso, temos dois SSDs de 240 GB (RAID-1) com o sistema operacional instalado e dois discos SATA de 1 TB para os quais o sistema operacional precisa ser migrado.
Vamos analisar 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 931,5G 0 disk
sdd 8:48 0 931,5G 0 disk Vamos verificar o espaço em uso no sistema de arquivos.
[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 é de 204 GB, com 2 arrays de software md126 sendo utilizados e montados em /boot и md127, que é usado como volume físico para o grupo VG vg0.
1. Removendo partições de disco de arrays
Vamos verificar o estado do array.
[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 utiliza 2 matrizes: md126 (ponto de montagem) /boot) - consiste em uma seção /dev/sda1 и /dev/sdb1, md127 (LVM para trocar e a raiz do sistema de arquivos) - consiste em /dev/sda2 и /dev/sdb2.
Marcamos como defeituosas as partições do primeiro disco utilizadas em cada array.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Removendo partições do dispositivo de bloco /dev/sda dos arrays.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2Após removermos o disco do array, as informações do dispositivo 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 Estado dos arrays 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. Copie a tabela de partições para o novo disco.
Você pode verificar a tabela de partições usada no disco usando o seguinte comando.
fdisk -l /dev/sdb | grep 'Disk label type'
A saída para MBR será:
Disk label type: dospara GPT:
Disk label type: gpt Copiando a tabela de partições para MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdcneste comando primeiro o disco está indicado с dos quais A marcação é copiada. segundo - onde cópia.
CUIDADOPara GPT primeiro o disco está indicado em que copiar marcação, o segundo disco indica o disco de qual Copie o particionamento. Se você misturar os discos, o particionamento original correto será sobrescrito e destruído.
Copiando a tabela de partições para GPT:
sgdisk -R /dev/sdс /dev/sdbEm seguida, atribuímos 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 realizada, as partições do sistema no disco /dev/sdc Se você não tiver certeza, execute o comando para reler a tabela de partições.
sfdisk -R /dev/sdcSe seus discos rígidos atuais usam a tabela de partições MBR e você precisa transferir dados para discos com capacidade superior a 2 TB, será necessário criar manualmente uma tabela de partições GPT nos novos discos usando a partição BIOSBOOT. Esse caso será abordado na Parte 2 deste artigo.
3. Adicionando partições de um novo disco ao array
Vamos adicionar partições de disco aos respectivos arrays.
mdadm /dev/md126 --add /dev/sdc1
mdadm /dev/md127 --add /dev/sdc2Vamos verificar 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 dos arrays.
[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 Parâmetro -n Especifica os intervalos em segundos nos quais o comando deve ser executado para verificar o progresso.
Repita os passos 1 a 3 para o próximo disco a ser substituído.
Marcamos como defeituosas as partições do segundo disco que são usadas em cada array.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Excluindo partições de um dispositivo de bloco /dev/sdb a partir de matrizes.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2Após removermos o disco do array, as informações do dispositivo 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
Estado dos arrays 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> Copiando a tabela de partições MBR do disco /dev/sdс para disco /dev/sdd.
sfdisk -d /dev/sdс | sfdisk /dev/sdd Após a execução do comando, as partições devem aparecer no disco. /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 Adicionando partições de disco a arrays.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2Vamos verificar 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 dos arrays.
[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. Instalando o GRUB em novos discos rígidos
Para CentOS:
grub2-install /dev/sdXPara Debian/Ubuntu:
grub-install /dev/sdX onde X — a letra do dispositivo de bloco. Nesse caso, o GRUB precisa ser instalado em /dev/sdc и /dev/sdd.
6. Estender o sistema de arquivos (ext4) da partição raiz
Em discos novos /dev/sdc и /dev/sdd 931.5 GB disponíveis. Como a tabela de partições é copiada de discos menores, as partições /dev/sdc2 и /dev/sdd2 222.5 GB disponíveis.
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 partição 2 em cada disco.
- Amplie a matriz md127,
- Expandir PV (volume físico),
- Expandir LV (volume lógico) vg0-root,
- Expanda o sistema de arquivos.
Utilizando o utilitário se separaram Vamos expandir a seção. /dev/sdc2 ao valor máximo. Executamos o comando. parted /dev/sdc (1) e visualize a tabela de partições atual com o comando p (2).

Como você pode ver, a partição 2 termina em 240 GB. Vamos expandir a partição com o comando resizepart 2, onde 2 é o número da partição (3). Especifique o valor em formato numérico, por exemplo, 1000 GB, ou use o valor de compartilhamento do disco (100%). Novamente, verifique se a partição tem o novo tamanho (4).
Repita os passos acima para o disco. /dev/sddApós expandir as seções /dev/sdc2 и /dev/sdd2 passou a ser igual 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 até o máximo.
mdadm --grow /dev/md127 --size=maxVerificamos que o array foi expandido. Seu tamanho agora é de 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]Estamos realizando uma expansão. volume físicoAntes de prosseguirmos, vamos verificar o estado atual do sistema fotovoltaico.
[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, PV /dev/md127 Utiliza 222.4 GB de espaço.
Expandimos o PV com o seguinte comando.
pvresize /dev/md127Verificamos o resultado da expansão da energia 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 ]Estamos em expansão. volume lógicoAntes de expandir, vamos verificar o estado atual de LV (1).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<206,41 GiB] inherit LV /dev/vg0/root Utiliza 206.41 GB.
Expandimos LV com o seguinte comando (2).
lvextend -l +100%FREE /dev/mapper/vg0-rootVerificamos a ação concluída (3).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit
Como podemos ver, após a expansão do LV, a quantidade de espaço em disco ocupado passou a ser de 914.39 GB.

O tamanho do LV aumentou (4), mas o sistema de arquivos ainda ocupa 204 GB (5).
1. Vamos expandir o sistema de arquivos.
resize2fs /dev/mapper/vg0-rootApós executar o comando, 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/0O sistema de arquivos raiz aumentará de tamanho para 900 GB. Após a conclusão dessas etapas, você poderá remover os discos antigos.
Caso 2: Substituição de discos rígidos menores por discos rígidos maiores (acima de 2 TB)
Tarefa: Substitua os discos rígidos atuais por discos maiores (2 x 3 TB), preservando os dados. Neste caso, temos 2 SSDs de 240 GB (RAID-1) com o sistema operacional instalado e 2 discos SATA de 3 TB para os quais o sistema operacional precisa ser migrado. Os discos atuais utilizam a tabela de partição MBR. Como os novos discos têm capacidade superior a 2 TB, precisarão utilizar a tabela de partição GPT, pois o MBR não suporta discos com capacidade superior a 2 TB.
Vamos analisar 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 Vamos verificar a tabela de partições usada no disco. /dev/sda.
[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos Em disco /dev/sdb Uma tabela de partições semelhante é utilizada. Vamos verificar o espaço em disco utilizado pelo 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/0Como você pode ver, o sistema de arquivos raiz ocupa 204 GB. Vamos verificar o estado atual do array RAID por software.
1. Instalando a tabela de partições GPT e o particionamento de disco
Vamos verificar o particionamento do disco por setores.
[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
No novo disco de 3 TB, precisaremos criar 3 partições:
- Seção
bios_grubTamanho de 2 MiB para compatibilidade com GPT na BIOS. - Partição para o array RAID que será montado em
/boot. - Partição para o array RAID no qual será instalada. raiz do VE и Troca de LV.
Instalando o utilitário se separaram a equipe yum install -y parted (para CentOS), apt install -y parted (para Debian/Ubuntu).
Uso se separaram Vamos executar os seguintes comandos para particionar o disco.
Execute o comando parted /dev/sdc e acesse o modo de edição do layout do disco.
Crie uma tabela de partições GPT.
(parted) mktable gpt Criar 1 partição bios_grub seção e defina um sinalizador para ela.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on Crie uma segunda partição e defina um sinalizador para ela. A partição será usada como um bloco para o array RAID e montada em /boot.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot onCriamos uma terceira partição, que também será usada como um bloco de matriz no qual o LVM estará localizado.
(parted) mkpart primary 1028MiB 100% Neste caso, não é necessário definir o sinalizador, mas, se necessário, ele pode ser definido com o seguinte comando.
(parted) set 3 raid onVamos verificar 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 um novo GUID aleatório ao disco.
sgdisk -G /dev/sdd
2. Removendo partições do primeiro disco dos arrays
Vamos verificar o estado do array.
[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 utiliza 2 arrays: md126 (ponto de montagem /boot) - consiste em /dev/sda1 и /dev/sdb1, md127 (LVM para swap e a raiz do sistema de arquivos) - consiste em /dev/sda2 и /dev/sdb2.
Marcamos como defeituosas as partições do primeiro disco utilizadas em cada array.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2 Excluindo partições de um dispositivo de bloco /dev/sda a partir de matrizes.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Verificando o estado do array após a remoção do 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 de um novo disco ao array
O próximo passo é adicionar as partições do novo disco aos arrays para sincronização. Vamos verificar o estado atual do particionamento 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 Seção /dev/sdc1 é bios_grub seção e não participa da criação de arrays. Somente /dev/sdc2 и /dev/sdc3Adicionamos essas seções às matrizes correspondentes.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3Em seguida, aguardamos a sincronização do array.
[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 após adicionar partições ao array.
[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 dos arrays
Marcamos como defeituosas as partições do segundo disco que são usadas em cada array.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Excluindo partições de um dispositivo de bloco /dev/sda a partir de matrizes.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Copie a tabela de partições GPT e sincronize o array.
Para copiar a tabela de partições GPT, usaremos o utilitário. sgdisk, que está incluído no pacote para trabalhar com partições de disco e a tabela GPT - gdisk.
Instalação gdisk para CentOS:
yum install -y gdisk Instalação gdisk para Debian/Ubuntu:
apt install -y gdiskCUIDADOPara GPT primeiro o disco está indicado em que copie a marcação, o segundo disco indica o disco de qual Eles copiam o particionamento. Se os discos forem misturados, o particionamento original correto será sobrescrito e destruído.
Copie a tabela de partições GPT.
sgdisk -R /dev/sdd /dev/sdc Particionando discos após a transferência da tabela para o disco. /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 que participam dos arrays RAID de software.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3Estamos aguardando a sincronização do array.
[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>Após copiar o particionamento GPT para o segundo disco novo, o particionamento 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, instalamos o GRUB nos novos discos.
Instalação para CentOS:
grub2-install /dev/sdXInstalação para Debian/Ubuntu:
grub-install /dev/sdX onde X — letra da unidade, no nosso caso, discos /dev/sdc и /dev/sdd.
Atualizando informações do array.
Para CentOS:
mdadm --detail --scan --verbose > /etc/mdadm.confPara 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 CentOS:
dracut -f -v --regenerate-allPara Debian/Ubuntu:
update-initramfs -u -k allAtualizando a configuração do GRUB.
Para CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Para Debian/Ubuntu:
update-grubApós concluir esses passos, os discos antigos podem ser removidos.
6. Estender o sistema de arquivos (ext4) da partição raiz
Layout do disco antes da expansão do sistema de arquivos após a migração do sistema para 2 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] Agora seções /dev/sdc3 и /dev/sdd3 Elas ocupam 2.7 TB. Como criamos um novo layout de disco com uma tabela GPT, o tamanho da partição 3 foi inicialmente definido para o espaço máximo possível em disco; neste caso, não há necessidade de expandir a partição.
É necessário:
- Amplie a matriz md126,
- Expandir PV (volume físico),
- Expandir LV (volume lógico) vg0-root,
- Expanda o sistema de arquivos.
1. Expanda a matriz md126 até o máximo.
mdadm --grow /dev/md126 --size=max
Após expandir a matriz md126 A área ocupada 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]
Estamos em expansão. volume físico.
Antes de expandir, 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 Expandimos o PV com o seguinte comando.
pvresize /dev/md126
Verificamos a ação concluída.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51tEstamos em expansão. volume lógico vg0-root.
Após a expansão do PV, vamos verificar o espaço ocupado pelo VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51tVamos verificar 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 vg0-root ocupa 206.41 GB.
Expandindo o LV para o espaço máximo em disco.
lvextend -l +100%FREE /dev/mapper/vg0-root Verificação do espaço LV 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,00gExpandindo o sistema de arquivos (ext4).
Vamos verificar 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/0O volume /dev/mapper/vg0-root ocupa 204 GB após a expansão do LV.
Expandindo o sistema de arquivos.
resize2fs /dev/mapper/vg0-root
Verificando o tamanho do sistema de arquivos após expandi-lo.
[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 foi aumentado para o tamanho total do volume.
Fonte: habr.com
