- PVSM.RU - https://www.pvsm.ru -
Новый OpenVZ 7.0 является гибридом старого доброго OpenVZ и коммерческого Virtuozzo. Хотелось бы думать, что он взял лучшее от обоих родителей, но это не так. В данном случае под нож попал функционал Shared Folders.
Ранее в OpenVZ данная задача решалась .mount-файлами (подробнее тут [1]). Но теперь контейнеры называются как-нибудь так «600adc12-0e39-41b3-bf05-c59b7d26dd73» и создание файла 600adc12-0e39-41b3-bf05-c59b7d26dd73.mount проблему не решает, он просто игнорируется при запуске. Конечно, наличие папки /vz/private/600adc12-0e39-41b3-bf05-c59b7d26dd73/scripts намекает, что возможен запуск каких-то скриптов, но найти документацию об этом не удалось.
В Virtuozzo Shared Folders были реализованы через prlctl set, но в OpenVZ этот функционал портирован не был. Не верите — проверка под катом.
В этом можно убедится введя:
prlctl set СTname --shared
prlctl set СTname --shared-profile
prlctl set СTname --sharedfolder-add
prlctl set СTname --shf-host-add
Никакая из этих команд не работает.
Что же делать?
Первые три способа описаны в официальной документации и есть много информации в интернете. А вот про четвертый способ и расскажет эта статья.
Если коротко, то мы будем из контейнера по ssh запускать скрипт на физическом сервере, делающий bind mount.
Для примера возьмем физический сервер с ip 192.168.0.11 и контейнер 192.168.0.22 UUID 600adc12-0e39-41b3-bf05-c59b7d26dd73 с установленным samba сервером и systemd
HN# useradd mount
CT# ssh-keygen –t rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXPMfZ+9Og1uY+Eq2QE85AxO+0DM0wfejNuIEZfRUi9FZj8/3BLM9u1GrmOKSMRTGIXA3yfyfep+hAm0/phuaqqG8wU2YAai/8aF4PXokeYVPzQqsbK8fK1wLYWgTO3RCtojfpoHPvdQMt28+GFRj4CTRuktUSx63XswNjzPWlqfUjiEnLZRdwbaB6ZKeepdGUmzgYq7dhMxdl3VvtAWahGnkGnn7eXT49Z9SekvFPUL77BsHwQXgspuSosg31YE09+spyA6khzwJKEqPXHRniv4H5DUzdZiQXx3tkGheGCO6JTDmcSElZyWwC9h+H7ZEEJ4IO3RRnDcsxgkW+ixij root@container
HN# ls -al /home/mount/.ssh/
total 12
drwx------ 2 mount users 4096 Sep 10 18:54 .
drwx------ 5 mount users 4096 Sep 10 18:04 ..
-rw------- 1 mount users 485 Sep 10 18:54 authorized_keys
CT# ssh mount@192.168.0.11
CT# mkdir /data
HN# cat <<EOF > /vz/samba.mount
#!/bin/bash
mount -n --bind /data /vz/root/600adc12-0e39-41b3-bf05-c59b7d26dd73/data
EOF
chmod +x /vz/samba.mount
HN# echo "mount ALL=NOPASSWD: /vz/*.mount" > /etc/sudoers.d/mount
HN# sed -i 's/^Defaultss+requiretty/#Defaults requiretty/' sudoers
HN# echo "command="/bin/sudo /vz/samba.mount",no-port-forwarding,no-X11-forwarding,no-agent-forwarding $(cat /home/mount/.ssh/authorized_keys)" > /home/mount/.ssh/authorized_keys
CT# cat <<EOF > /etc/systemd/system/mount.service2
[Unit]
Description=Mount from Hardware node
After=network.target
Before=smbd.service
[Service]
Type=oneshot
ExecStart=/usr/bin/ssh mount@192.168.77.11
[Install]
WantedBy=multi-user.target
EOF
CT# systemctl enable mount.service
Всё. Теперь можно перезагружать контейнер и радоваться монтированию папки /data.
Автор: zystem
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/186422
Ссылки в тексте:
[1] тут: https://wiki.openvz.org/Bind_mounts
[2] Источник: https://habrahabr.ru/post/309758/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.