С выходом новой версии OpenVZ 7 появилась проблема с монтирование устройств (или каталогов) в контейнеры (и возможно виртуальные машины).
При попытке смонтировать устройство на физическом сервере в контейнер, выдавалась сообщение:
mount: /dev/md0 is already mounted or /data busy
Изначально я искал проблему совсем не в том месте и не в том направлении — https://unix-garage.tk/?p=396, но потом я стал умнее и начал гуглить правильно, и проблему решил.
Для начала. О «проблеме» было известно ранее и это не проблема, а фишка такая. Если я верно понял, то механизм монтирования чего-либо с хост машины в контейнер — это функиция Shared Folders. Об этом я узнал их материала — https://habr.com/ru/post/309758/. В этом же материала я взял скрипт и положил его в /etc/vz/conf/vps.mount. Содержание:
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/dev/md123 DST=/stg if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t ext4 ${SRC} ${VE_ROOT}${DST} -o ${SRC}
В оригинале в скрипте было simfs, я заменил на ext4, потому что иначе у меня не работало.
Если не ознакомились с ссылкой выше, то поясню, что данный скрипт монтирует SRC в DST во все контейнеры при их старте без исключения. Важный момент, что скрипт должен иметь название именно vps.mount и никак иначе, потому что иначе не работает. Об этом есть подтверждение в официальной доке к Virtuozzo.
Этот скрипт я испытал на openvz-iso-7.0.10-252.iso с контейнерами simfs и ploop, с ОС debian 8 и 9. На виртуальных машинах не пробовал.
Из документации к openvz можно взять информацию о скрипте, которым производится монтирование — https://wiki.openvz.org/Bind_mounts. Обращу внимание bind. Не совсем разобрался связано это или нет, но нашёл вариант монтирование на форуме — https://forum.openvz.org/index.php?t=msg&goto=52632&S=ebba623b6803642842aa8e6ea0a15d80. Этот вариант выглядит вот так:
mount --bind /backup/openvz/vmbackup/ /vz/root/c507428f-75d1-4ba6-b0ae-15424855b765/backup/
Таким способом можно смонтировать только один каталог и только в один контейнер. Неудобно, непрактично, отваливается при перезагрузке, но если вдруг вариант со скриптом не прокатывает, а очень надо, то это вариант. Только с этим вариантом у меня возникли некоторые непонятки, были проблемы с остановкой и запуском контейнера, но решилось всё поиском pid-в занятых в монтирование каталога к контейнеру и мочилове их kill -9