Fixing vgextend Error: Devices have inconsistent logical block sizes

How to troubleshoot vgextend failure caused by mixed logical block sizes.

Why This Error Happens

This usually occurs when the new disk added by vgextend has a different logical block size from disks already in the VG.

Example:

  • Existing VG disks use 512-byte logical sectors
  • Newly added device uses 4K logical sectors

Then vgextend may fail with this error.

Solution 1: Enable mixed block sizes in lvm.conf

Edit /etc/lvm/lvm.conf and set:

1
allow_mixed_block_sizes=1

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

Solution 2: Make block sizes consistent

Adjust device logical block sizes so all disks in the VG use a consistent setting.

Check logical block size

lsblk

1
lsblk -td

PHY-SEC is physical sector size, LOG-SEC is logical sector size.

sysfs

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

fdisk

1
sudo fdisk -l /dev/sda

Look at Sector size (logical/physical).

smartctl (NVMe)

1
sudo smartctl -a /dev/nvme0n1

Check Supported LBA Sizes; + indicates currently selected LBA format.

Change LBA / logical block size

Warning: formatting or changing LBA settings can destroy data.

For SATA HDD (if supported)

Check supported sector sizes:

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

If supported, switch to 4K (example):

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

Verify:

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

For NVMe SSD

Check supported LBA formats:

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

Or:

1
smartctl -c /dev/nvme0n1

Format to target LBA format (example):

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

lbaf corresponds to the format ID. This operation will erase data and requires reboot/reinitialization steps afterward.

记录并分享
Built with Hugo
Theme Stack designed by Jimmy