Hola a todos. En la antesala del inicio de un nuevo grupo del curso publicamos un material útil, escrito por nuestro estudiante y mentor en los cursos, especialista en soporte técnico de productos corporativos REG.RU — Roman Travyin.
En este artículo se analizarán 2 casos de reemplazo de discos y transferencia de información a nuevos discos de mayor capacidad con posterior expansión del arreglo y del sistema de archivos. El primer caso se referirá al reemplazo de discos con la misma partición MBR/MBR o GPT/GPT, el segundo caso se centrará en el reemplazo de discos con partición MBR por discos de más de 2 TB, los cuales requerirán una partición GPT con sección biosboot. En ambos casos, los discos a los que se está transfiriendo la información ya están instalados en servidor. El sistema de archivos utilizado para la partición raíz es ext4.
Caso 1: Reemplazo de discos de menor capacidad por discos de mayor capacidad (hasta 2TB)
Tarea: Reemplazar los discos actuales por discos de mayor capacidad (hasta 2 TB) con transferencia de información. En este caso tenemos discos 2 x 240 GB SSD (RAID-1) con el sistema instalado y discos 2 x 1 TB SATA, a los cuales es necesario transferir el sistema.
Analicemos la partición actual de los discos.
[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 utilizado en el sistema de archivos en este momento.
[root@localhost ~]# df -h
Sistema de archivos Tamaño Usado Dispon % Usado Montado en
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 del reemplazo de discos es de 204 GB, se utilizan 2 arreglos de software md126, que está montado en /boot y md127, que se utiliza como volumen físico para el grupo VG vg0.
1. Eliminación de particiones del disco de los arreglos
Verificamos el estado del arreglo
[root@localhost ~]# cat /proc/mdstat
Personalidades: [raid1]
md126: raid1 activo sda1[0] sdb1[1]
1047552 bloques super 1.2 [2/2] [UU]
bitmap: 0/1 páginas [0KB], 65536KB porciones
md127: raid1 activo sda2[0] sdb2[1]
233206784 bloques super 1.2 [2/2] [UU]
bitmap: 0/2 páginas [0KB], 65536KB porciones
dispositivos no utilizados: En el sistema se utilizan 2 arreglos: md126 (punto de montaje /boot) — consiste en la partición /dev/sda1 y /dev/sdb1, md127 (LVM para swap y la raíz del sistema de archivos) — consiste en /dev/sda2 y /dev/sdb2.
Marcamos las particiones del primer disco que se utilizan en cada arreglo como fallidas.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Eliminamos las particiones del dispositivo de bloques /dev/sda de los arreglos.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2Una vez que hemos eliminado el disco del arreglo, la información sobre los dispositivos de bloques se verá de la siguiente manera.
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO DE MONTAJE
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 parte
└─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 disco
sdd 8:48 0 931,5G 0 disco Estado de los arreglos después de la eliminación de discos.
[root@localhost ~]# cat /proc/mdstat
Personalidades: [raid1]
md126: raid1 activo sdb1[1]
1047552 bloques super 1.2 [2/1] [_U]
bitmap: 0/1 páginas [0KB], 65536KB porciones
md127: raid1 activo sdb2[1]
233206784 bloques super 1.2 [2/1] [_U]
bitmap: 1/2 páginas [4KB], 65536KB porciones
dispositivos no utilizados:2. Copia de la tabla de particiones en un nuevo disco
Se puede verificar la tabla de particiones utilizada en el disco con el siguiente comando.
fdisk -l /dev/sdb | grep 'Tipo de etiqueta de disco'
La salida para MBR será:
Tipo de etiqueta de disco: dospara GPT:
Tipo de etiqueta de disco: gpt Copia de la tabla de particiones para MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdcEn este comando primero se indica el disco con cuyo se copia la partición, el segundo — dónde copiar.
ATENCIÓN: Para GPT primero se indica el disco en el que se copia la partición, segunda se indica el disco desde el cual se copia la partición. Si se confunden los discos, la partición inicial válida será sobrescrita y destruida.
Copia de la tabla de particiones para GPT:
sgdisk -R /dev/sdc /dev/sdbA continuación, asignamos un UUID aleatorio al disco (para GPT).
sgdisk -G /dev/sdc Después de ejecutar el comando, las particiones deben 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 ejecutar la acción las particiones en el sistema no se han determinado en el disco /dev/sdc se deben ejecutar el comando para volver a leer la tabla de particiones.
sfdisk -R \/dev\/:sdcSi las tablas de los discos actuales son MBR y se necesita transferir información a discos de más de 2 TB, se requerirá crear manualmente la partición GPT en los nuevos discos utilizando la partición biosboot. Este caso se tratará en la segunda parte de este artículo.
3. Agregar particiones del nuevo disco a la matriz
Agregamos las particiones del disco a las matrices correspondientes.
mdadm \/dev\/md126 --add \/dev\/sdc1
mdadm \/dev\/md127 --add \/dev\/sdc2Verificamos que las particiones se hayan agregado.
[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 la sincronización de las matrices.
[root@localhost ~]# cat \/proc\/mdstat
Personalidades : [raid1]
md126 : raid1 activo sdc1[2] sdb1[1]
1047552 bloques super 1.2 [2\/2] [UU]
bitmap: 0\/1 páginas [0KB], 65536KB chunk
md127 : raid1 activo sdc2[2] sdb2[1]
233206784 bloques super 1.2 [2\/1] [_U]
[==>..................] recuperación = 10.6% (24859136\/233206784) finalizar=29.3min velocidad=118119K\/sec
bitmap: 2\/2 páginas [8KB], 65536KB chunk
dispositivos no utilizados: <ninguno> Se puede observar continuamente el proceso de sincronización utilizando la utilidad ver.
watch -n 2 cat \/proc\/mdstat Parámetro -n que indica con qué intervalo en segundos se debe ejecutar el comando para verificar el progreso.
Repetimos los puntos 1 a 3 para el siguiente disco a ser reemplazado.
Marcamos las particiones del segundo disco que se utilizan en cada matriz como fallidas.
mdadm \/dev\/md126 --fail \/dev\/sdb1
mdadm \/dev\/md127 --fail \/dev\/sdb2
Eliminamos las particiones del dispositivo de bloque /dev/sdb de los arreglos.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2Una vez que hemos eliminado el disco del arreglo, la información sobre los dispositivos de bloques se verá de la siguiente manera.
[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 los arreglos después de la eliminación de discos.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdc1[2]
1047552 bloques super 1.2 [2/1] [U_]
bitmap: 0/1 páginas [0KB], 65536KB chunk
md127 : active raid1 sdc2[2]
233206784 bloques super 1.2 [2/1] [U_]
bitmap: 1/2 páginas [4KB], 65536KB chunk
dispositivos no utilizados: Copiando la tabla de particiones MBR desde el disco /dev/sdс al disco /dev/sdd.
sfdisk -d /dev/sdc | sfdisk /dev/sdd Después de ejecutar el comando, las particiones deben 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 Añadiendo las particiones del disco a los arreglos.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2Verificamos que las particiones se hayan agregado.
[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 la sincronización de las matrices.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdd1[3] sdc1[2]
1047552 bloques super 1.2 [2/2] [UU]
bitmap: 0/1 páginas [0KB], 65536KB chunk
md127 : active raid1 sdd2[3] sdc2[2]
233206784 bloques super 1.2 [2/1] [U_]
[>....................] recuperación = 0.5% (1200000/233206784) finish=35.4min speed=109090K/sec
bitmap: 2/2 páginas [8KB], 65536KB chunk
dispositivos no utilizados:
5. Instalación de GRUB en los nuevos discos
Para CentOS:
grub2-install /dev/sdXPara Debian/Ubuntu:
grub-install /dev/sdX donde X — letra del dispositivo de bloque. En este caso, GRUB debe ser instalado en /dev/sdc y /dev/sdd.
6. Ampliación del sistema de archivos (ext4) de la partición raíz
En nuevos discos /dev/sdc y /dev/sdd hay disponibles 931.5 GB. Debido a que la tabla de particiones se copió de discos de menor capacidad, en las particiones /dev/sdc2 y /dev/sdd2 hay disponibles 222.5 GB.
sdc 8:32 0 931,5G 0 disco
├─sdc1 8:33 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 222,5G 0 parte
└─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 disco
├─sdd1 8:49 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 222,5G 0 parte
└─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:
- Ampliar la partición 2 en cada uno de los discos,
- Ampliar el conjunto md127,
- Ampliar el PV (volumen físico),
- Ampliar el LV (volumen lógico) vg0-root,
- Ampliar el sistema de archivos.
Usando la utilidad parted ampliamos la partición /dev/sdc2 al valor máximo. Ejecutamos el comando parted /dev/sdc (1) y consultamos la tabla de particiones actual con el comando p (2).

Como se puede ver, el final de la partición 2 termina en 240 GB. Ampliemos la partición con el comando resizepart 2, donde 2 es el número de la partición (3). Indicamos el valor en formato numérico, por ejemplo 1000 GB, o usamos una fracción del disco — 100%. Verificamos nuevamente que la partición tiene un nuevo tamaño (4).
Repetimos los pasos indicados anteriormente para el disco /dev/sdd. Después de ampliar las particiones /dev/sdc2 y /dev/sdd2 se volvieron iguales a 930.5 GB.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
└─sdb2 8:18 0 222,5G 0 parte
sdc 8:32 0 931,5G 0 disco
├─sdc1 8:33 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc2 8:34 0 930,5G 0 parte
└─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 disco
├─sdd1 8:49 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd2 8:50 0 930,5G 0 parte
└─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 eso, ampliamos el conjunto md127 al máximo.
mdadm --grow /dev/md127 --size=maxVerificamos que el conjunto ha crecido. Ahora su tamaño es 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]Ejecutando la expansión volumen físico. Antes de la expansión, verifiquemos el estado actual de 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 podemos ver, el PV /dev/md127 utiliza 222.4 GB de espacio.
Ampliamos el PV con el siguiente comando.
pvresize \/dev\/md127Verificamos el resultado de la expansión del PV.
[
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 ]Ampliamos el volumen lógico. Antes de la expansión, 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 el LV con el siguiente comando (2).
lvextend -l +100%FREE \/dev\/mapper\/vg0-rootVerificamos la acción realizada (3).
[root@localhost ~]# lvscan
ACTIVE '\/dev\/vg0\/swap' [<16,00 GiB] inherit
ACTIVE '\/dev\/vg0\/root' [<914,39 GiB] inherit
Como vemos, después de la expansión, el volumen de espacio en disco ocupado ha llegado a 914.39 GB.

El volumen de LV ha aumentado (4), pero el sistema de archivos aún ocupa 204 GB (5).
1. Vamos a ampliar el sistema de archivos.
resize2fs \/dev\/mapper\/vg0-rootVerificamos el tamaño del sistema de archivos después del comando ejecutado.
[root@localhost ~]# df -h
El sistema de archivos Tamaño Usado Disponibilidad % Usado Montado en
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\/0El tamaño del sistema de archivos raíz aumentará a 900 GB. Después de realizar estas acciones, se pueden extraer los discos antiguos.
Caso 2: Reemplazo de discos de menor capacidad por discos de mayor capacidad (más de 2TB)
Tarea: Reemplace los discos actuales por discos de mayor capacidad (2 x 3TB) manteniendo la información. En este caso, tenemos discos 2 x 240 GB SSD (RAID-1) con el sistema instalado y discos 2 x 3 TB SATA, a los que se debe transferir el sistema. En los discos actuales se utiliza una tabla de particiones MBR. Como los nuevos discos tienen una capacidad mayor de 2 TB, se deberá utilizar la tabla GPT, ya que MBR no puede trabajar con discos de más de 2 TB.
Veamos la distribución actual de los discos.
[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 Verifiquemos 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 el disco /dev/sdb se utiliza una tabla de particiones similar. Verifiquemos el espacio en disco utilizado en el sistema.
[root@localhost ~]# df -h
Sistema de archivos Tamaño Usado Disponible Uso% Montado en
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 se puede ver, la raíz del sistema de archivos ocupa 204 GB. Verifiquemos el estado actual del arreglo RAID programático.
1. Establecimiento de la tabla de particiones GPT y distribución del disco
Verifiquemos la distribución de los discos por sectores.
[root@localhost ~]# parted /dev/sda print
Modelo: ATA KINGSTON SVP200S (scsi)
Disco /dev/sda: 240GB
Tamaño del sector (lógico/físico): 512B/512B
Tabla de particiones: msdos
Disk Flags:
Número Inicio Fin Tamaño Tipo Sistema de archivos Bandas
1 1049kB 1076MB 1075MB primary de arranque, raid
2 1076MB 240GB 239GB primary raid
En el nuevo disco de 3TB, necesitaremos crear 3 particiones:
- Sección
bios_grubde un tamaño de 2MiB para la compatibilidad de GPT con BIOS, - Partición para el arreglo RAID que será montada en
/boot. - Partición para el arreglo RAID, en la que estará LV root y LV swap.
Instalamos la utilidad parted con el comando yum install -y parted (para CentOS), apt install -y parted (para Debian/Ubuntu).
virtualización puede ejecutar máquinas virtuales que funcionan con parted Ejecutaremos los siguientes comandos para el particionado del disco.
Ejecutamos el comando parted /dev/sdc y pasamos al modo de edición del particionado del disco.
Creamos una tabla de particiones GPT.
(parted) mktable gpt Creamos la primera partición bios_grub y establecemos la bandera para ella.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on Creamos la segunda partición y establecemos la bandera para ella. Esta partición se utilizará como bloque para la matriz RAID y se montará en /boot.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot onCreamos la tercera partición, que también se utilizará como bloque de la matriz, donde estará LVM.
(parted) mkpart primary 1028MiB 100% En este caso, no es necesario establecer la bandera, pero si es necesario, se puede establecer con el siguiente comando.
(parted) set 3 raid onVerificamos la tabla creada.
(parted) p
Modelo: ATA TOSHIBA DT01ACA3 (scsi)
Disco /dev/sdc: 3001GB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones: gpt
Banderas del disco:
Número Inicio Fin Tamaño Sistema de archivos Nombre Banderas
1 1049kB 3146kB 2097kB primary bios_grub
2 3146kB 1077MB 1074MB primary de arranque
3 1077MB 3001GB 3000GB primary
Asignamos un nuevo GUID aleatorio al disco.
sgdisk -G /dev/sdd
2. Eliminación de particiones del primer disco de las matrices
Verificamos el estado del arreglo
[root@localhost ~]# cat /proc/mdstat
Personalidades: [raid1]
md126: raid1 activo sda1[0] sdb1[1]
1047552 bloques super 1.2 [2/2] [UU]
bitmap: 0/1 páginas [0KB], 65536KB porciones
md127: raid1 activo sda2[0] sdb2[1]
233206784 bloques super 1.2 [2/2] [UU]
bitmap: 0/2 páginas [0KB], 65536KB porciones
dispositivos no utilizados: El sistema utiliza 2 matrices: md126 (punto de montaje /boot) — consiste en /dev/sda1 y /dev/sdb1, md127 (LVM para swap y la raíz del sistema de archivos) — consiste en /dev/sda2 y /dev/sdb2.
Marcamos las particiones del primer disco que se utilizan en cada arreglo como fallidas.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2 Eliminamos las particiones del dispositivo de bloque /dev/sda de los arreglos.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Comprobamos el estado de la matriz después de eliminar el disco.
[root@localhost ~]# cat /proc/mdstat
Personalidades : [raid1]
md126 : raid1 activo sdb1[1]
1047552 bloques super 1.2 [2/1] [_U]
mapa de bits: 0/1 páginas [0KB], 65536KB bloque
md127 : raid1 activo sdb2[1]
233206784 bloques super 1.2 [2/1] [_U]
mapa de bits: 2/2 páginas [8KB], 65536KB bloque
dispositivos no utilizados:
3. Agregar particiones del nuevo disco a la matriz
El siguiente paso es añadir las particiones del nuevo disco a las matrices para la sincronización. Revisamos el estado actual del particionado de los discos.
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO DE MONTAJE
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 parte
└─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 [INTERCAMBIO]
sdc 8:32 0 2,7T 0 disco
├─sdc1 8:33 0 2M 0 parte
├─sdc2 8:34 0 1G 0 parte
└─sdc3 8:35 0 2,7T 0 parte
sdd 8:48 0 2,7T 0 disco Sección /dev/sdc1 es bios_grub partición y no participa en la creación de matrices. Solo se utilizarán en las matrices /dev/sdc2 y /dev/sdc3. Añadimos estas particiones a las matrices correspondientes.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3Después de lo cual, esperamos la sincronización de la matriz.
[root@localhost ~]# cat /proc/mdstat
Personalidades : [raid1]
md126 : raid1 activa sdc2[2] sdb1[1]
1047552 bloques super 1.2 [2/2] [UU]
bitmap: 0/1 páginas [0KB], 65536KB chunk
md127 : raid1 activa sdc3[2] sdb2[1]
233206784 bloques super 1.2 [2/1] [_U]
[>....................] recuperación = 0.2% (619904/233206784) finish=31.2min speed=123980K/sec
bitmap: 2/2 páginas [8KB], 65536KB chunk
dispositivos no utilizados:Distribución de disco tras la adición de particiones al array.
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO_DE_MONTADO
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 parte
└─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 disco
├─sdc1 8:33 0 2M 0 parte
├─sdc2 8:34 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 parte
└─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 disco 4. Eliminación de particiones del segundo disco de los arrays
Marcamos las particiones del segundo disco que se utilizan en cada matriz como fallidas.
mdadm \/dev\/md126 --fail \/dev\/sdb1
mdadm \/dev\/md127 --fail \/dev\/sdb2
Eliminamos las particiones del dispositivo de bloque /dev/sda de los arreglos.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Copiamos la tabla de partición GPT y sincronizamos el array
Para copiar la tabla de partición GPT utilizaremos la herramienta sgdisk, que forma parte del paquete para trabajar con particiones de discos y la tabla GPT — gdisk.
Instalación gdisk para CentOS:
yum install -y gdisk Instalación gdisk para Debian/Ubuntu:
apt install -y gdiskATENCIÓN: Para GPT primero se indica el disco en el que copiamos la partición, segunda se indica el disco desde el cual copia las particiones. Si se confunden los discos, la partición original correcta será sobreescrita y destruida.
Copiamos la tabla de partición GPT.
sgdisk -R /dev/sdd /dev/sdc Distribución de disco después de transferir la tabla al disco /dev/sdd.
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO_DE_MONTADO
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
└─sdb2 8:18 0 222,5G 0 parte
sdc 8:32 0 2,7T 0 disco
├─sdc1 8:33 0 2M 0 parte
├─sdc2 8:34 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 parte
└─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 disco
├─sdd1 8:49 0 2M 0 parte
├─sdd2 8:50 0 1G 0 parte
└─sdd3 8:51 0 2,7T 0 parte Luego agregamos cada una de las particiones que participan en los arrays RAID de software.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3Esperamos a que se sincronice el array.
[root@localhost ~]# cat /proc/mdstat
Personalidades : [raid1]
md126 : raid1 activo sdd2[3] sdc2[2]
1047552 bloques super 1.2 [2/2] [UU]
bitmap: 1/1 páginas [4KB], 65536KB chunk
md127 : raid1 activo sdd3[3] sdc3[2]
233206784 bloques super 1.2 [2/1] [U_]
[>....................] recuperación = 0.0% (148224/233206784) finalizar=26.2min velocidad=148224K/seg
bitmap: 2/2 páginas [8KB], 65536KB chunk
dispositivos no utilizados:Después de copiar la tabla de particiones GPT al segundo nuevo disco, la tabla se verá de la siguiente manera.
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO DE MONTAJE
sda 8:0 0 223,6G 0 disco
├─sda1 8:1 0 1G 0 parte
└─sda2 8:2 0 222,5G 0 parte
sdb 8:16 0 223,6G 0 disco
├─sdb1 8:17 0 1G 0 parte
└─sdb2 8:18 0 222,5G 0 parte
sdc 8:32 0 2,7T 0 disco
├─sdc1 8:33 0 2M 0 parte
├─sdc2 8:34 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 parte
└─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 disco
├─sdd1 8:49 0 2M 0 parte
├─sdd2 8:50 0 1G 0 parte
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 parte
└─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, instalamos GRUB en los nuevos discos.
Instalación para CentOS:
grub2-install /dev/sdXInstalación para Debian/Ubuntu:
grub-install /dev/sdX donde X — letra del disco, en nuestro caso los discos /dev/sdc y /dev/sdd.
Actualizamos la información sobre el arreglo.
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 Actualizamos la imagen initrd:
Para CentOS:
dracut -f -v --regenerate-allPara Debian/Ubuntu:
update-initramfs -u -k allActualizamos la configuración de GRUB.
Para CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Para Debian/Ubuntu:
update-grubDespués de realizar estas acciones, se pueden extraer los discos antiguos.
6. Ampliación del sistema de archivos (ext4) de la partición raíz
Tabla de particiones de los discos antes de expandir el sistema de archivos tras la migración del sistema a discos 2 x 3TB (RAID-1).
[root@localhost ~]# lsblk
NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTO DE MONTAJE
sda 8:0 0 223,6G 0 disco
sdb 8:16 0 223,6G 0 disco
sdc 8:32 0 2,7T 0 disco
├─sdc1 8:33 0 2M 0 parte
├─sdc2 8:34 0 1G 0 parte
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 parte
└─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 disco
├─sdd1 8:49 0 2M 0 parte
├─sdd2 8:50 0 1G 0 parte
│ └─md127 9:127 0 1023M 0 raid1 /boot
└─sdd3 8:51 0 2,7T 0 parte
└─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 las particiones /dev/sdc3 y /dev/sdd3 ocupan 2.7 TB. Dado que creamos una nueva tabla de particiones de disco con GPT, el tamaño de 3 particiones fue establecido de inmediato en el espacio máximo del disco, por lo que no es necesario expandir la partición en este caso.
Es necesario:
- Expand the array md126,
- Ampliar el PV (volumen físico),
- Ampliar el LV (volumen lógico) vg0-root,
- Ampliar el sistema de archivos.
1. Expanding the array md126 al máximo.
mdadm --grow /dev/md126 --size=max
After expanding the array md126 the size of the occupied space increased to 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]
Ampliamos volumen físico.
Before expanding, check the current size of the occupied space PV /dev/md126.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- 222,40g 0 Expanding the PV with the following command.
pvresize /dev/md126
Check the executed action.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51tAmpliamos logical volume vg0-root.
After expanding the PV, let's check the occupied space of the VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51tLet's check the occupied LV space.
[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 The volume vg0-root occupies 206.41 GB.
Expanding the LV to the maximum disk space.
lvextend -l +100%FREE \/dev\/mapper\/vg0-root Check the LV space after expansion.
[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,00gExpanding the file system (ext4).
Let's check the current size of the file system.
[root@localhost ~]# df -h
File System Size Used Avail Use% Mounted on
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/0The volume /dev/mapper/vg0-root occupies 204 GB after expanding the LV.
Expanding the file system.
resize2fs \/dev\/mapper\/vg0-root
Check the size of the file system after its expansion.
[root@localhost ~]# df -h
Sistema de archivos Tamaño Usado Dispon. Usado% Montado en
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 ha aumentado a la capacidad total del volumen.
Fuente: habr.com
