#1
|
|||
|
|||
aws и монтирование волума инит скриптом
Sergey Zabolotny написал(а) к All в Dec 19 12:03:08 по местному времени:
Нello All. есть инстанс развернутый из cloudformation темплейта с установленой убунтой 18.04.1. инит скрипт проверяет наличие дополнительных волумов подключеннх в систему. есть таковые нашлись, проверяется наличие партиций на диске, их файловые системы, метки томов. если диск не размечен и партиций у нас нет мы их создаем, форматируем во что нам надо и монтируем. если нашли существующую файловую систему просто монтируем куда надо. так вот понадобилось поднять версию убунты до 18.04.3 и инит скрипт в этом случае перестал видеть партиции на подключаемом волуме. в инит скрипте который работает в 18.04.1 использовался банальный partprobe, который заставлял систему перечитать список дисков и всю инфу о том, что на нем есть. после этого запуском lsblk -p -n -P -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT ${DATA_DISK} можно было получить сразу всю информацию о диске, его партициях, файловых системах, метках томов. в 18.04.3 после партпроба я вижу только диск, никаких партиций и тем более файловых систем. заменил партпроб на hdparm -z ${DEVICE} >>/var/log/device.log 2>&1 || true и чудо случилось, но только наполовину. теперь я вижу списки партиций, но все равно не вижу какие там файловые системы и метки. для того, чтоб получить файловую систему и метку тома перепробовал кучу вариантов и так не остановился на каком-то одном рабочем т.к. так и не понял какая именно команда надежно заставляет систему перечитать инфу о партициях. добавил пачку команд: hdparm -z ${DEVICE} >>/var/log/device.log 2>&1 || true file -s ${DEVICE} >>/var/log/device.log 2>&1 || true partprobe ${DEVICE} >>/var/log/device.log 2>&1 || true blockdev --rereadpt -v ${DEVICE} >>/var/log/device.log 2>&1 || true fdisk -l ${DEVICE} >>/var/log/device.log 2>&1 || true которые запускаются каждый раз при попытке получить данные о диске или партиции. в моем случае в качестве ${DEVICE} передается сначала имя диска, читается результат, из результата вытаскивается партишн нэйм и повторно вызывается эта пачка команд, но уже в качестве девайса подставляется имя партиции. вот кусок дебаг лога из 18.04.3, который показывает что возвращается в качестве результата и после чего: 1 проход - ищем партицию, в качестве параметра передается имя устройства + DEVICE=/dev/nvme1n1 + hdparm -z /dev/nvme1n1 + file -s /dev/nvme1n1 + partprobe /dev/nvme1n1 + blockdev --rereadpt -v /dev/nvme1n1 + fdisk -l /dev/nvme1n1 ++ lsblk -p -n -P -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT /dev/nvme1n1 ++ sed 's/ /;/g' ++ grep part + result='NAME="/dev/nvme1n1p1";TYPE="part";FSTYPE="";LABEL="";MOUNTPOINT=""' вернуло список партиций, но не вернуло типы файловых систем и метки томов. в 18.04.1 в этом месте я сразу получал все что мне надо. 2 проход - берем данные фстайп, метки томов по найденой партиции в проходе 1 + DEVICE=/dev/nvme1n1p1 + hdparm -z /dev/nvme1n1p1 + true + file -s /dev/nvme1n1p1 + partprobe /dev/nvme1n1p1 + blockdev --rereadpt -v /dev/nvme1n1p1 + true + fdisk -l /dev/nvme1n1p1 ++ lsblk -p -n -P -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT /dev/nvme1n1p1 ++ sed 's/ /;/g' ++ grep part + result='NAME="/dev/nvme1n1p1";TYPE="part";FSTYPE="ext4";LABEL="data-volume";MOUNTPOINT=""' так вот собственно 2 вопроса: 1. какого оно стало вести себя в 18.04.3 не так как в версии 18.04.1? 2. какой есть надежный способ заставить систему видеть все что есть на дисках не используя целуя пачку команд? что самое интересное, если не трогать волум при инициализации системы, а зайти в нее после старта и ручками сказать lsblk -p -n -P -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT /dev/nvme1n1 то я вижу все данные как и в версии убунты 18.04.1 wtf и что с этим делать? --- GoldED+ 1.1.5-031023 (WinNT 5.1.2600-ServicePack3 i1586) |