Я тестирую virtioFS. У меня есть хранилище cephFS на моих нодах Proxmox, доступное по адресу /etc/pve/docker-cephFS. Оно содержит только данные, используемые для bind-монтирования для Docker внутри виртуальных машин. Оно передается виртуальной машине как устройство virtiofs. Я случайно накосячил с ceph на 15 минут, пока возился с сетью. Виртуальная машина запустилась до того, как ceph был готов (я полагаю). На ноде Proxmox /etc/pve/docker-cephFS содержит все содержимое, которое я ожидаю в виртуальной машине. Переданное устройство похоже на пустое. Перезагрузка виртуальной машины решила проблему. Есть ли способ заставить виртуальную машину запускаться только в том случае, если хранилище, лежащее в основе virtioFS, в порядке (например, проверять наличие файла .something в корневой точке монтирования в виртуальной машине)?
--редактировано--
Я забыл про hookscripts. Я не могу написать код с нуля, чтобы спасти свою жизнь, поэтому я спросил Copilot. Он пропустил код фазы предварительного запуска в своей первой попытке. Я попросил его попробовать снова и включить его в предварительную фазу, и он предложил вот этот пример, мне кажется, что это сработает… насколько хорошо справился Copilot?
Код:
#!/bin/bash
# Путь к файлу, который нужно проверить
FILE_PATH="/path/to/your/file"
# ID виртуальной машины
VMID=$1
PHASE=$2
# Запускать проверку только во время фазы предварительного запуска
if [ "$PHASE" == "pre-start" ]; then
# Проверить наличие файла
if [ ! -f "$FILE_PATH" ]; then
echo "Файл $FILE_PATH не существует. Виртуальная машина $VMID не будет запущена."
exit 1
fi
echo "Файл $FILE_PATH существует. Виртуальная машина $VMID будет запущена."
fi
exit 0
--редактировано--
Я забыл про hookscripts. Я не могу написать код с нуля, чтобы спасти свою жизнь, поэтому я спросил Copilot. Он пропустил код фазы предварительного запуска в своей первой попытке. Я попросил его попробовать снова и включить его в предварительную фазу, и он предложил вот этот пример, мне кажется, что это сработает… насколько хорошо справился Copilot?
Код:
#!/bin/bash
# Путь к файлу, который нужно проверить
FILE_PATH="/path/to/your/file"
# ID виртуальной машины
VMID=$1
PHASE=$2
# Запускать проверку только во время фазы предварительного запуска
if [ "$PHASE" == "pre-start" ]; then
# Проверить наличие файла
if [ ! -f "$FILE_PATH" ]; then
echo "Файл $FILE_PATH не существует. Виртуальная машина $VMID не будет запущена."
exit 1
fi
echo "Файл $FILE_PATH существует. Виртуальная машина $VMID будет запущена."
fi
exit 0
