Попытка добавить диск для зеркалирования тома LVM в CentOS 7 всегда терпит неудачу с сообщением «Недостаточно свободного места: требуется 1 экстент, но доступно только 0». После поиска решения я попытался указать диски, несколько параметров ведения журнала, добавить третий раздел журнала, но не нашел решения.
Не уверен, делаю ли я ошибку новичка или есть что-то более незаметное (я больше знаком с ZFS, впервые использую LVM):
# lvconvert -m1 centos_bi/home
Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --corelog centos_bi/home
Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --corelog --alloc anywhere centos_bi/home
Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --mirrorlog mirrored --alloc anywhere centos_bi/home /dev/sda2
Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --corelog --alloc anywhere centos_bi/home /dev/sdi2 /dev/sda2
Insufficient free space: 1 extents needed, but only 0 available
Два диска имеют одинаковый размер и имеют идентичную структуру разделов через "sfdisk -d / dev / sdi> part_table; sfdisk / dev / sda <part_table". Текущая конфигурация подробно описана ниже.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 centos_bi lvm2 a-- 496.00m 496.00m
/dev/sda2 centos_bi lvm2 a-- 465.27g 465.27g
/dev/sdi2 centos_bi lvm2 a-- 465.27g 0
# vgs
VG #PV #LV #SN Attr VSize VFree
centos_bi 3 3 0 wz--n- 931.02g 465.75g
# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert Devices
home centos_bi -wi-ao---- 391.64g /dev/sdi2(6050)
root centos_bi -wi-ao---- 50.00g /dev/sdi2(106309)
swap centos_bi -wi-ao---- 23.63g /dev/sdi2(0)
# pvdisplay
--- Physical volume ---
PV Name /dev/sdi2
VG Name centos_bi
PV Size 465.27 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 119109
Free PE 0
Allocated PE 119109
--- Physical volume ---
PV Name /dev/sda2
VG Name centos_bi
PV Size 465.27 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 119109
Free PE 119109
Allocated PE 0
--- Physical volume ---
PV Name /dev/sda1
VG Name centos_bi
PV Size 500.00 MiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 124
Free PE 124
Allocated PE 0
# vgdisplay
--- Volume group ---
VG Name centos_bi
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 10
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 3
Act PV 3
VG Size 931.02 GiB
PE Size 4.00 MiB
Total PE 238342
Alloc PE / Size 119109 / 465.27 GiB
Free PE / Size 119233 / 465.75 GiB
# lvdisplay
--- Logical volume ---
LV Path /dev/centos_bi/swap
LV Name swap
VG Name centos_bi
LV Write Access read/write
LV Creation host, time localhost, 2014-08-07 16:34:34 -0400
LV Status available
# open 2
LV Size 23.63 GiB
Current LE 6050
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/centos_bi/home
LV Name home
VG Name centos_bi
LV Write Access read/write
LV Creation host, time localhost, 2014-08-07 16:34:35 -0400
LV Status available
# open 1
LV Size 391.64 GiB
Current LE 100259
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
--- Logical volume ---
LV Path /dev/centos_bi/root
LV Name root
VG Name centos_bi
LV Write Access read/write
LV Creation host, time localhost, 2014-08-07 16:34:37 -0400
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
Примерно с сентября 2013 года типом зеркального сегмента по умолчанию в lvm2 является raid1 (а не «зеркало»). Это делает --corelog
и --mirrorlog disk/core/mirrored
параметры неприменимы в этом случае по умолчанию, потому что тип сегмента raid1 всегда хранит свои журналы (фактически, подтомы метаданных) на диске в тех же PV, что и зеркалируемый LV. Вам больше не нужен третий PV для журнала или для хранения журнала в памяти.
Есть еще два вывода. Во-первых, упрощается команда для создания зеркала, потому что необходимо указать только логический том, который нужно отразить, и (обычно один) PV, на котором будет храниться зеркальный сегмент: # lvconvert -m1 /dev/my_vg/my_lv /dev/my_new_pv
Во-вторых, есть пара соображений по поводу места. Тебе нужно иметь:
Часто это дополнительное пространство, необходимое для исходного PV, вызывает проблему, потому что в существующем PV нет места даже для 1 нового LE, который можно было бы выделить для журнала. В этом случае вы можете получить ошибку типа OP, т. Е. 1 extents needed, but only 0 available
.
Решение, как указано выше другими, состоит в том, чтобы изменить размер (сжать после сжатия файловой системы) существующего LV, чтобы было место для журнала, которое будет размещено на том же PV. Если вы не можете этого сделать, вы можете использовать --type mirror
для принудительного использования устаревшего типа сегмента «зеркало».