Hola a todos. En vísperas del inicio de un nuevo grupo de curso
Este artículo considerará 2 casos de reemplazo de discos y transferencia de información a nuevos discos de mayor capacidad con una mayor expansión de la matriz y el sistema de archivos. El primer caso se refiere a la sustitución de discos con la misma partición MBR/MBR o GPT/GPT, el segundo caso se refiere a la sustitución de discos con partición MBR por discos con una capacidad de más de 2 TB, en los que será necesario instalar una partición GPT con una partición biosboot. En ambos casos los discos a los que transferimos los datos ya están instalados en el servidor. El sistema de archivos utilizado para la partición raíz es ext4.
Caso 1: Reemplazo de discos más pequeños por discos más grandes (hasta 2 TB)
Problema: Reemplace los discos actuales por discos más grandes (hasta 2 TB) con transferencia de información. En este caso tenemos 2 discos SSD (RAID-240) de 1 GB con el sistema instalado y 2 discos SATA de 1 TB a los que hay que transferir el sistema.
Veamos el diseño actual del 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
Comprobemos el espacio del sistema de archivos utilizado actualmente.
[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
El tamaño del sistema de archivos antes de reemplazar los discos es de 204 GB, se utilizan 2 matrices de software md126, que se montan en /boot
и md127
, que se utiliza como volumen físico para el grupo VG vg0.
1. Eliminar particiones de disco de matrices
Comprobando el estado de la 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>
El sistema utiliza 2 matrices: md126
(punto de montaje /boot
) - consta de una sección /dev/sda1
и /dev/sdb1
, md127
(LVM para intercambio y la raíz del sistema de archivos) - consta de /dev/sda2
и /dev/sdb2
.
Marcamos como malas las particiones del primer disco que se utilizan en cada matriz.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Eliminamos las particiones del dispositivo de bloque /dev/sda de las matrices.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Una vez que hayamos eliminado el disco de la matriz, la información del dispositivo de bloque se verá así.
[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 de las matrices después de retirar los 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 la tabla de particiones a un disco nuevo.
Puede verificar la tabla de particiones usada en el disco con el siguiente comando.
fdisk -l /dev/sdb | grep 'Disk label type'
La salida para MBR sería:
Disk label type: dos
para GPT:
Disk label type: gpt
Copiando la tabla de particiones para MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdc
En este comando primero se indica el disco с quién el marcado se copia, segundo - donde Copiar.
PRECAUCIÓN: Para GPT primero se indica el disco en la que copiar marcado, el segundo disco indica el disco a partir del cual copiar marcado. Si mezcla los discos, la partición inicialmente buena se sobrescribirá y destruirá.
Copiando la tabla de diseño para GPT:
sgdisk -R /dev/sdс /dev/sdb
A continuación, asigne un UUID aleatorio al disco (para GPT).
sgdisk -G /dev/sdc
Después de ejecutar el comando, las particiones deberían aparecer en el 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
Si, después de realizar la acción, las particiones del sistema en el disco /dev/sdc
indeciso, luego ejecutamos el comando para volver a leer la tabla de particiones.
sfdisk -R /dev/sdc
Si los discos actuales usan la tabla MBR y la información debe transferirse a discos de más de 2 TB, entonces en los discos nuevos deberá crear manualmente una partición GPT usando la partición biosboot. Este caso se discutirá en la Parte 2 de este artículo.
3. Agregar particiones del nuevo disco a la matriz
Agreguemos particiones de disco a las matrices correspondientes.
mdadm /dev/md126 --add /dev/sdc1
mdadm /dev/md127 --add /dev/sdc2
Comprobamos que se han añadido las secciones.
[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
Después de esto, esperamos a que los arrays se sincronicen.
[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>
Puede monitorear continuamente el proceso de sincronización usando la utilidad watch
.
watch -n 2 cat /proc/mdstat
Parámetro -n
especifica en qué intervalos en segundos se debe ejecutar el comando para verificar el progreso.
Repita los pasos 1 a 3 para el siguiente disco de reemplazo.
Marcamos como malas las particiones del segundo disco que se utilizan en cada matriz.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Eliminar particiones de dispositivos de bloque /dev/sdb
de matrices.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
Una vez que hayamos eliminado el disco de la matriz, la información del dispositivo de bloque se verá así.
[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 de las matrices después de retirar los 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>
Copiar la tabla de particiones MBR del disco /dev/sdс
al disco /dev/sdd
.
sfdisk -d /dev/sdс | sfdisk /dev/sdd
Después de ejecutar el comando, las particiones deberían aparecer en el 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
Agregar particiones de disco a matrices.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2
Comprobamos que se han añadido las secciones.
[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]
Después de esto, esperamos a que los arrays se sincronicen.
[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. Instalación de GRUB en unidades nuevas
Para CentOS:
grub2-install /dev/sdX
Para Debian/Ubuntu:
grub-install /dev/sdX
donde X
— letra del dispositivo de bloque. En este caso, necesita instalar GRUB en /dev/sdc
и /dev/sdd
.
6. Extensión del sistema de archivos (ext4) de la partición raíz
En discos nuevos /dev/sdc
и /dev/sdd
931.5 GB disponibles. Debido al hecho de que la tabla de particiones se copió de discos más pequeños, las particiones /dev/sdc2
и /dev/sdd2
222.5 GB disponibles.
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]
Es necesario:
- Extienda la partición 2 en cada uno de los discos,
- Expandir matriz md127,
- Expandir PV (volumen físico),
- Expanda LV (volumen lógico) vg0-root,
- Expanda el sistema de archivos.
Usando la utilidad separado ampliemos la sección /dev/sdc2
al valor máximo. Ejecutar el comando parted /dev/sdc
(1) y ver la tabla de particiones actual con el comando p
(2).
Como puede ver, el final de la partición 2 termina en 240 GB. Expandamos la partición con el comando. resizepart
2
, donde 2 es el número de la sección (3). Indicamos el valor en formato digital, por ejemplo 1000 GB, o utilizamos la indicación del porcentaje de disco: 100%. Volvemos a comprobar que la partición tiene el nuevo tamaño (4).
Repita los pasos anteriores para el disco. /dev/sdd
. Después de expandir particiones /dev/sdc2
и /dev/sdd2
se volvió 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]
Después de esto expandimos la matriz. md127 hasta el máximo.
mdadm --grow /dev/md127 --size=max
Comprobamos que la matriz se ha expandido. Ahora su tamaño ha pasado a ser 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]
Extendiendo la extensión volumen físico. Antes de ampliar, verifiquemos el estado actual del 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 se puede observar, PV /dev/md127
utiliza 222.4 GB de espacio.
Ampliamos PV con el siguiente comando.
pvresize /dev/md127
Comprobando el resultado de la expansión 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 ]
En expansión volumen lógico. Antes de ampliar, verifiquemos el estado actual 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.
Ampliamos LV con el siguiente comando (2).
lvextend -l +100%FREE /dev/mapper/vg0-root
Comprobamos la acción completada (3).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit
Como puede ver, después de expandir LV, la cantidad de espacio ocupado en disco pasó a ser 914.39 GB.
El volumen LV ha aumentado (4), pero el sistema de archivos todavía ocupa 204 GB (5).
1. Ampliemos el sistema de archivos.
resize2fs /dev/mapper/vg0-root
Una vez ejecutado el comando, verificamos el tamaño del sistema de archivos.
[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
El tamaño del sistema de archivos raíz aumentará a 900 GB. Después de completar los pasos, puede quitar los discos antiguos.
Caso 2: Reemplazo de discos más pequeños por discos más grandes (más de 2 TB)
Tarea: Reemplace los discos actuales con discos más grandes (2 x 3 TB) conservando la información. En este caso tenemos 2 discos SSD (RAID-240) de 1 GB con el sistema instalado y 2 discos SATA de 3 TB a los que hay que transferir el sistema. Los discos actuales utilizan la tabla de particiones MBR. Dado que los discos nuevos tienen una capacidad superior a 2 TB, deberán utilizar una tabla GPT, ya que MBR no puede funcionar con discos de más de 2 TB.
Veamos el diseño actual del 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
Comprobemos la tabla de particiones utilizada en el disco. /dev/sda
.
[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos
En disco /dev/sdb
Se utiliza una tabla de particiones similar. Comprobemos el espacio en disco utilizado en el 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 puede ver, la raíz del sistema de archivos ocupa 204 GB. Comprobemos el estado actual de la matriz RAID del software.
1. Instalación de una tabla de particiones GPT y particionamiento de disco
Comprobemos la distribución del disco por sector.
[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
En el nuevo disco de 3TB necesitaremos crear 3 particiones:
- Sección
bios_grub
Tamaño de 2MiB para compatibilidad con BIOS GPT, - La partición de la matriz RAID que se montará en
/boot
. - La partición de la matriz RAID en la que habrá raíz VI и intercambio de BT.
Instalación de la utilidad separado el equipo yum install -y parted
(para CentOS), apt install -y parted
(para Debian/Ubuntu).
Uso separado Ejecutemos los siguientes comandos para particionar el disco.
Ejecutar el comando parted /dev/sdc
y vaya al modo de edición de diseño del disco.
Cree una tabla de particiones GPT.
(parted) mktable gpt
Crear 1 sección bios_grub
sección y establezca una bandera para ello.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on
Cree la partición 2 y establezca una bandera para ella. La partición se utilizará como bloque para una matriz RAID y se montará en /boot
.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on
Creamos una tercera sección, que también se utilizará como bloque de matriz en el que se ubicará LVM.
(parted) mkpart primary 1028MiB 100%
En este caso, no es necesario configurar la bandera, pero si es necesario, se puede configurar con el siguiente comando.
(parted) set 3 raid on
Comprobamos la tabla creada.
(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
Asignamos un nuevo GUID aleatorio al disco.
sgdisk -G /dev/sdd
2. Eliminar particiones del primer disco de las matrices
Comprobando el estado de la 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>
El sistema utiliza 2 matrices: md126 (punto de montaje/arranque): consta de /dev/sda1
и /dev/sdb1
, md127
(LVM para swap
y la raíz del sistema de archivos) - consta de /dev/sda2
и /dev/sdb2
.
Marcamos como malas las particiones del primer disco que se utilizan en cada matriz.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Eliminar particiones de dispositivos de bloque /dev/sda
de matrices.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Comprobación del estado de la matriz después de retirar el 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. Agregar particiones del nuevo disco a la matriz
El siguiente paso es agregar particiones del nuevo disco a las matrices para su sincronización. Veamos el estado actual del diseño del 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
Sección /dev/sdc1
es bios_grub
sección y no participa en la creación de matrices. Las matrices sólo utilizarán /dev/sdc2
и /dev/sdc3
. Agregamos estas secciones a las matrices correspondientes.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3
Luego esperamos a que la matriz se sincronice.
[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>
Partición del disco después de agregar particiones a la 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. Eliminar particiones del segundo disco de las matrices
Marcamos como malas las particiones del segundo disco que se utilizan en cada matriz.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Eliminar particiones de dispositivos de bloque /dev/sda
de matrices.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Copie la tabla de diseño GPT y sincronice la matriz.
Para copiar la tabla de marcado GPT usaremos la utilidad sgdisk
, que se incluye en el paquete para trabajar con particiones de disco y una tabla GPT - gdisk
.
Instalación gdisk
para CentOS:
yum install -y gdisk
Instalación gdisk
para Debian/Ubuntu:
apt install -y gdisk
PRECAUCIÓN: Para GPT primero se indica el disco en la que copiar el marcado, el segundo disco indica el disco a partir del cual copiar el marcado. Si mezcla los discos, la partición inicialmente buena se sobrescribirá y destruirá.
Copie la tabla de marcado GPT.
sgdisk -R /dev/sdd /dev/sdc
Partición del disco después de transferir una tabla al 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
A continuación, agregamos cada una de las particiones que participan en matrices RAID de software.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3
Estamos esperando que la matriz se sincronice.
[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>
Después de copiar la partición GPT al segundo disco nuevo, la partición tendrá este aspecto.
[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]
A continuación, instale GRUB en los discos nuevos.
Instalación para CentOS:
grub2-install /dev/sdX
Instalación para Debian/Ubuntu:
grub-install /dev/sdX
donde X
— letra de unidad, en nuestro caso unidades /dev/sdc
и /dev/sdd
.
Actualizamos información sobre la matriz.
Para 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
Actualizando la imagen initrd
:
Para CentOS:
dracut -f -v --regenerate-all
Para Debian/Ubuntu:
update-initramfs -u -k all
Actualizamos la configuración de GRUB.
Para CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Para Debian/Ubuntu:
update-grub
Después de completar los pasos, se pueden quitar los discos antiguos.
6. Extensión del sistema de archivos (ext4) de la partición raíz
Partición del disco antes de la expansión del sistema de archivos después de migrar el sistema a 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]
Ahora secciones /dev/sdc3
и /dev/sdd3
Ocupa 2.7 TB. Dado que creamos un nuevo diseño de disco con una tabla GPT, el tamaño de la partición 3 se configuró inmediatamente al máximo espacio posible en disco; en este caso, no es necesario expandir la partición.
Es necesario:
- Expandir matriz md126,
- Expandir PV (volumen físico),
- Expanda LV (volumen lógico) vg0-root,
- Expanda el sistema de archivos.
1. Expandir la matriz md126
hasta el máximo.
mdadm --grow /dev/md126 --size=max
Después de la expansión de la matriz md126
el tamaño del espacio ocupado ha aumentado a 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]
En expansión volumen físico.
Antes de ampliar, verifique el valor actual del espacio ocupado PV /dev/md126
.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- 222,40g 0
Ampliamos PV con el siguiente comando.
pvresize /dev/md126
Comprobamos la acción completada.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51t
En expansión volumen lógico vg0-root.
Después de expandir PV, verifiquemos el espacio ocupado VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51t
Comprobemos el espacio que ocupa 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
El volumen vg0-root ocupa 206.41 GB.
Ampliamos LV al espacio máximo en disco.
lvextend -l +100%FREE /dev/mapper/vg0-root
Comprobación del espacio del VI después de la expansión.
[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
Ampliando el sistema de archivos (ext4).
Comprobemos el tamaño actual del sistema de archivos.
[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
El volumen /dev/mapper/vg0-root ocupa 204 GB después de la expansión LV.
Ampliando el sistema de archivos.
resize2fs /dev/mapper/vg0-root
Comprobando el tamaño del sistema de archivos después de expandirlo.
[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
El tamaño del sistema de archivos se ha aumentado para cubrir todo el volumen.
Fuente: habr.com