Я готовлю облачный образ Centos7.4 и установил облачные утилиты cloud-init и cloud-growpart.
Когда я импортирую в Openstack как изображение qcow2, размер моего корня не изменяется, если я создаю экземпляр с диском большего размера, чем исходное изображение. Если я использую обычные диски без LVM и с одним разделом, он работает.
По какой-то причине это не похоже на настройку двух разделов, где / boot - это раздел 1, а / - раздел 2. Кажется, все документы говорят, что cloud-utils-growpart будет работать с lvm и ext4, если корневой раздел является последним разделом. Любые идеи ?
fstab
# /etc/fstab
# Created by anaconda on Fri Jan 19 16:49:58 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# /dev/mapper/centos-root / ext4 defaults 1 1 UUID=aa806546-2582-411d-9eba-7217376a8aa3 /boot ext3 defaults 1 2
и fdisk -l
[root@localhost ~]# fdisk -l
Disk /dev/vda: 9234 MB, 9234180096 bytes, 18035508 sectors Units =
sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512
bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos Disk identifier: 0x000b5cce
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 616447 307200 83 Linux
/dev/vda2 616448 18034687 8709120 8e Linux LVM
Disk /dev/mapper/centos-root: 8917 MB, 8917090304 bytes, 17416192
sectors Units = sectors of 1 * 512 = 512 bytes Sector size
(logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal):
512 bytes / 512 bytes
У меня такая же проблема - причина в LVM. Если вы посмотрите на /var/log/cloud-init.log
вы увидите такие записи:
cc_growpart.py[DEBUG]: '/' SKIPPED: device_part_info(/dev/mapper/centos_lxopce64v070-root) failed: /dev/mapper/centos_lxopce64v070-root not a partition
Так что ответ - либо сделать корневой раздел физическим диском, либо добавить собственную логику роста. На самом деле я предпочитаю иметь свою собственную логику, поскольку она позволяет очень легко расширить корневой диск постфактум, не требуя изменения размера OpenStack (что требует перестройки виртуальной машины). Вы просто присоединяете блочный том, а затем добавляете блочный том к LVM.
Итак, вот мой код (очень похожий код, если вы добавляете объем блока и увеличиваете LVM). Ваш код, вероятно, отличается только именем корневой группы томов (the_root_vgname
):
the_root_device='/dev/vda'
the_dynamic_partition='3'
the_dynamic_partition_path="${the_root_device}${the_dynamic_partition}"
the_root_vgname='centos_lxopce64v070'
the_root_lvname='root'
the_root_lvpath="/dev/${the_root_vgname}/${the_root_lvname}"
(echo n; echo p; echo $the_dynamic_partition; echo ; echo; echo t; echo $the_dynamic_partition; echo 8e; echo w) | fdisk ${the_root_device}
sync; sync; sync
partprobe
sync; sync; sync
pvcreate $the_dynamic_partition_path
sync; sync; sync
vgextend $the_root_vgname $the_dynamic_partition_path
sync; sync; sync
lvextend $the_root_lvpath $the_dynamic_partition_path
sync; sync; sync
xfs_growfs $the_root_lvpath
sync; sync; sync