Solucionar el error de vgextend: los dispositivos tienen tamaños de bloques lógicos inconsistentes

Cómo solucionar problemas de vgextend causados ​​por tamaños de bloques lógicos mixtos.

Por qué ocurre este error

Esto suele ocurrir cuando el nuevo disco agregado por vgextend tiene un tamaño de bloque lógico diferente al de los discos que ya están en el VG.

Ejemplo:

  • Los discos VG existentes utilizan sectores lógicos de 512 bytes.
  • El dispositivo recién agregado utiliza sectores lógicos 4K

Entonces vgextend puede fallar con este error.

Solución 1: habilite tamaños de bloques mixtos en lvm.conf

Edite /etc/lvm/lvm.conf y configure:

1
allow_mixed_block_sizes=1

Discusión de referencia:
https://serverfault.com/questions/1150643/is-it-safe-to-use-allow-mixed-block-sizes-1-in-lvm-when-using-ext4-with-4k-blo

Solución 2: hacer que los tamaños de los bloques sean consistentes

Ajuste los tamaños de los bloques lógicos del dispositivo para que todos los discos del VG utilicen una configuración coherente.

Comprobar el tamaño del bloque lógico

lsblk

1
lsblk -td

PHY-SEC es el tamaño del sector físico, LOG-SEC es el tamaño del sector lógico.

sysfs

1
2
cat /sys/class/block/sda/queue/physical_block_size
cat /sys/class/block/sda/queue/logical_block_size

fdisco

1
sudo fdisk -l /dev/sda

Mire “Tamaño del sector (lógico/físico)”.

smartctl (NVMe)

1
sudo smartctl -a /dev/nvme0n1

Marque “Tamaños LBA admitidos”; + indica el formato LBA seleccionado actualmente.

Cambiar LBA/tamaño de bloque lógico

Advertencia: formatear o cambiar la configuración de LBA puede destruir datos.

Para HDD SATA (si es compatible)

Verifique los tamaños de sector admitidos:

1
sudo hdparm -I /dev/sdX | grep 'Sector size:'

Si es compatible, cambie a 4K (ejemplo):

1
hdparm --set-sector-size 4096 --please-destroy-my-drive /dev/sdX

Verificar:

1
hdparm -I /dev/sdX | grep 'Sector size:'

Para SSD NVMe

Verifique los formatos LBA admitidos:

1
sudo nvme id-ns -H /dev/nvme0n1 | grep "Relative Performance"

O:

1
smartctl -c /dev/nvme0n1

Formato para apuntar al formato LBA (ejemplo):

1
nvme format --lbaf=1 /dev/nvme0n1

lbaf corresponde al ID de formato. Esta operación borrará los datos y luego requerirá pasos de reinicio/reinicialización.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy