forum.wfido.ru

forum.wfido.ru (http://forum.wfido.ru/index.php)
-   RU.LINUX (http://forum.wfido.ru/forumdisplay.php?f=83)
-   -   aws и монтирование волума инит скриптом (http://forum.wfido.ru/showthread.php?t=87288)

Sergey Zabolotny 12.12.2019 14:52

aws и монтирование волума инит скриптом
 
Sergey Zabolotny написал(а) к All в Dec 19 12:03:08 по местному времени:

Нello [i]All.[/i]

есть инстанс развернутый из 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-Service[b]Pack[/b]3 i1586)


Текущее время: 18:29. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot