<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Аспро: ЛайтШоп [тема: [ТУТОРИАЛ] virtiofsd в PVE 8.0.x]</title>
		<link>http://proxmox.su</link>
		<description>Новое в теме [ТУТОРИАЛ] virtiofsd в PVE 8.0.x форума Proxmox Виртуальная Среда на сайте Аспро: ЛайтШоп [proxmox.su]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 03 Apr 2026 23:43:20 +0300</pubDate>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327537/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Приятно, но плагины выглядят немного заброшенными! Я склоняюсь к этому плагину glusterfs-volume. <br />
			<i>23.09.2023 11:43:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327537/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327537/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 11:43:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327536/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Нужно это ещё погуглить, или надежда на то, что найдется хороший разбор где-нибудь! <br />
			<i>23.09.2023 11:35:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327536/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327536/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 11:35:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327535/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Это (не так уж и плохо) на SSD пулах с кодированием стиранием 3+1! <br />
			<i>23.09.2023 11:34:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327535/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327535/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 11:34:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327534/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			@scyto Кажется, теперь работает! Я успешно смонтировал (тестовую) папку CephFS через virtiofs в одну из моих виртуальных машин, и теперь могу читать данные из этой папки CephFS. Информация о том, как это настроить, разбросана, поэтому я написал свои собственные инструкции. Шаг 1. Инструкция: Создание пулов CephFS с кодированием стирания Шаг 2. Инструкция: Монтирование томов в Proxmox VM с virtiofs ​ Кстати, это на GitHub Gists, так как я планирую их обновлять, когда узнаю больше или улучшу. <br />
			<i>23.09.2023 11:33:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327534/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327534/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 11:33:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327533/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Интересно, плагин Docker CSI Driver для CephFS стоит попробовать, но раньше были проблемы, не понимал, как подключиться к нашей loopback Ceph-сети. Еще планирую использовать CephFS для медиа и файлов, так что virtiofs тоже понадобится. <br />
			<i>23.09.2023 00:04:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327533/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327533/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 00:04:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327532/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Да, действительно так, спасибо! Я тоже последние 24 часа изучал cephFS и docker, так что теперь чувствую себя опасным, думая, что знаю, о чем говорю, хотя на самом деле это не так. Что думаешь об использовании одного из этих (поскольку драйвер CSI кажется еще не протестирован...) вместо попыток использовать virtiofs? Мои мысли в том, что FUSE-клиент/ядро, работающие в VM хоста docker, будут отправлять свои коммуникации вниз (вверх?) по стеку сетевых технологий Qemu, через vmbr0 прямо к ближайшему ceph monitor (надеюсь, к самому себе, так как это домашняя лаборатория, где хосты Qemu и ceph хосты - одни и те же узлы. То есть, трафик никогда не должен покидать ядро, или, скорее, никогда не должен достигать физического уровня, и должен быть на скорости памяти?) <noindex><a href="https://github.com/Brindster/docker-plugin-cephfs" target="_blank" rel="nofollow" >https://github.com/Brindster/docker-plugin-cephfs</a></noindex> <noindex><a href="https://github.com/flaviostutz/cepher" target="_blank" rel="nofollow" >https://github.com/flaviostutz/cepher</a></noindex> <noindex><a href="https://gitlab.com/n0r1sk/docker-volume-cephfs" target="_blank" rel="nofollow" >https://gitlab.com/n0r1sk/docker-volume-cephfs</a></noindex> <br />
			<i>22.09.2023 23:39:00, scyto.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327532/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327532/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 22 Sep 2023 23:39:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327531/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я попробовал это, пока что без успеха. Я могу запустить vm, с virtiofsd, загруженным, активным и работающим на хосте. <img class="lazyload "  src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/upload/forum/proxmox/55422-300659f70b9def43cc521e87e4c8b3c2.jpg" alt="Пользователь добавил изображение" border="0" /> Когда я пытаюсь создать точку монтирования на VM, она не создается: Bash: root@lnxsrv01:~# mount -t virtiofs mnt_pve_cephfs_docker /mnt/docker<br />mount: /mnt/docker: wrong fs type, bad option, bad superblock on mnt_pve_cephfs_docker, missing codepage or helper program, or other error. Но то же самое, когда я использую файловую систему EXT4 хоста. @scyto: я сделал небольшой Write-Up: virtiofs.md, возможно, это поможет тебе! <br />
			<i>22.09.2023 22:33:00, Drallas.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327531/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327531/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 22 Sep 2023 22:33:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327530/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			О, интересно, спасибо, что поделился. Это позволит мне передавать Ceph тома гостевой системе? <br />
			<i>01.09.2023 10:16:00, scyto.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327530/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327530/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 01 Sep 2023 10:16:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327529/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Добавил Code: RuntimeDirectory=virtiofsd в systemd unit generation выше, иначе при перезагрузке /run/virtiofsd не существует, и VM не запускается. <br />
			<i>01.09.2023 03:42:00, oztiks.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327529/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327529/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 01 Sep 2023 03:42:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327528/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Спасибо за скрипт, совместимый с Rust! Сегодня попробую обновиться до Proxmox8 + Rust, у меня проблемы с "слишком большим количеством файлов" для некоторых ВМ, несмотря на то, что LimitNOFile установлен в бесконечность в systemd.<br /><br />Код: `$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;`<br /><br />Да, я убрал `$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;` вчера. Похоже, идея была полностью удалить `args` из конфига, да. Это не так уж и нужно, так что все в порядке.<br /><br />Редактирую: Успешно обновился до Proxmox8 и использую новый скрипт выше. <br />
			<i>21.08.2023 09:17:00, scr4tchy.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327528/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327528/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Mon, 21 Aug 2023 09:17:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327527/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Да, это была одна из проблем, с которой я столкнулся, когда пытался настроить virtiofsd в новой VM в начале этого месяца, впервые за год, но я просто проигнорировал её (запустил с hookscript один раз, а потом удалил hookscript из конфигурации VM, так как аргументы всё равно остались, и вручную активировал systemd юниты) на время. И спасибо @oztiks, что попробовал это с PVE 8! Обязательно сохраню твой пост для справки, когда доберусь до обновления. Думаю, это должно было убрать параметр `args` из файла конфигурации VM, если он пустой. Мой скрипт должен был просто временно обновлять аргументы VM перед запуском, но, кажется, часть с очисткой сломалась или я так и не заставил её работать как надо. Чёрт, уж не помню точно, что делал 15 месяцев назад, лол. <br />
			<i>19.08.2023 06:35:00, sikha.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327527/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327527/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 19 Aug 2023 06:35:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327526/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Кажется, я понял, как это работает... Я неделю ломал голову, а оказалось все просто. Я просто добавил это на свой роутер <img class="lazyload "  src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/upload/forum/proxmox/55427-6add80c9fe9418ec5a5ba3212e1fabab.jpg" alt="Пользователь добавил изображение" border="0" /> Теперь любые ВМ, работающие на vmbr0 и имеющие IPv6-адрес в моей локальной сети, могут общаться с моими 3 мониторами в моей приватной Ceph-сети. Трафик никогда не попадет на медленные сети – он либо останется в ядре/loopback (это моя теория) и пойдет к ноде, на которой запущена ВМ, со скоростью памяти, либо, в худшем случае, будет маршрутизироваться через приватную публичную сеть Ceph к одной из других нод. (Моя публичная и приватная сети объединены, так как это трехнодовая домашняя лаборатория с использованием Thunderbolt-net mesh). Роутер был быстрым и простым способом протестировать, конечно, я мог бы настроить эти маршруты вручную внутри каждой ВМ, если бы заботился об изоляции. Адреса fc00:: - это сеть Ceph mesh, которая не имеет соединения ни с чем, кроме каждой ноды. Адреса 2600:: – это IPv6-адреса нод vmbr0 и они полностью маршрутизируемы в моей локальной сети. <br />
			<i>23.09.2023 00:21:00, scyto.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327526/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327526/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 00:21:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327525/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Всё работает. Оставляю последний пост для потомков, если другие не предложат его удалить (прошу прощения, но я больше не часто заглядываю в форумы). В любом случае — ОГРОМНОЕ СПАСИБО, @sikha! Вот мой изменённый скрипт для Proxmox 8:<br /><br />Perl:<br /><br />```perl<br />#!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />my %associations = (<br /> &nbsp;102 =&gt; ['/mnt/local'],<br /> &nbsp;# &nbsp;101 =&gt; ['/zpool/audio', '/zpool/games'],<br />);<br /><br />use PVE::QemuServer;<br /><br />use Template;<br />my $tt = Template-&gt;new;<br /><br />print "GUEST HOOK: " . join(' ', @ARGV) . "\n";<br /><br />my $vmid = shift;<br />my $conf = PVE::QemuConfig-&gt;load_config($vmid);<br />my $vfs_args_file = "/run/$vmid.virtfs";<br />my $virtiofsd_dir = "/run/virtiofsd/";<br />my $DEBUG = 1;<br />my $phase = shift;<br /><br />my $unit_tpl = "[Unit]<br />Description=virtiofsd filesystem share at [% share %] for VM %i<br />StopWhenUnneeded=true<br /><br />[Service]<br />Type=simple<br />RuntimeDirectory=virtiofsd<br />PIDFile=/run/virtiofsd/.run.virtiofsd.%i-[% share_id %].sock.pid<br />ExecStart=/usr/libexec/virtiofsd --log-level debug --socket-path /run/virtiofsd/%i-[% share_id %].sock --shared-dir [% share %] --cache=auto --announce-submounts --inode-file-handles=mandatory<br /><br />[Install]<br />RequiredBy=%i.scope\n";<br /><br />if ($phase eq 'pre-start') {<br /> &nbsp;print "$vmid is starting, doing preparations.\n";<br /><br /> &nbsp;my $vfs_args = "-object memory-backend-memfd,id=mem,size=$conf-&gt;{memory}M,share=on -numa node,memdev=mem";<br /> &nbsp;my $char_id = 0;<br /><br /> &nbsp;# TODO: Have removal logic. Probably need to glob the systemd directory for matching files.<br /> &nbsp;for (@{$associations{$vmid}}) {<br /> &nbsp; &nbsp;my $share_id = $_ =~ s/^\///r =~ s/\//_/gr;<br /> &nbsp; &nbsp;my $unit_name = 'virtiofsd-' . $share_id;<br /> &nbsp; &nbsp;my $unit_file = '/etc/systemd/system/' . $unit_name . '@.service';<br /> &nbsp; &nbsp;print "attempting to install unit $unit_name...\n";<br /> &nbsp; &nbsp;if (not -d $virtiofsd_dir) {<br /> &nbsp; &nbsp; &nbsp; &nbsp;print "ERROR: $virtiofsd_dir does not exist!\n";<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;else { print "DIRECTORY DOES EXIST!\n"; }<br /><br /> &nbsp; &nbsp;if (not -e $unit_file) {<br /> &nbsp; &nbsp; &nbsp;$tt-&gt;process(\$unit_tpl, { share =&gt; $_, share_id =&gt; $share_id }, $unit_file)<br /> &nbsp; &nbsp; &nbsp; &nbsp;|| die $tt-&gt;error(), "\n";<br /> &nbsp; &nbsp; &nbsp;system("/usr/bin/systemctl daemon-reload");<br /> &nbsp; &nbsp; &nbsp;system("/usr/bin/systemctl enable $unit_name\@$vmid.service");<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;system("/usr/bin/systemctl start $unit_name\@$vmid.service");<br /> &nbsp; &nbsp;$vfs_args .= " -chardev socket,id=char$char_id,path=/run/virtiofsd/$vmid-$share_id.sock";<br /> &nbsp; &nbsp;$vfs_args .= " -device vhost-user-fs-pci,chardev=char$char_id,tag=$share_id";<br /> &nbsp; &nbsp;$char_id += 1;<br /> &nbsp;}<br /><br /> &nbsp;open(FH, '&gt;', $vfs_args_file) or die $!;<br /> &nbsp;print FH $vfs_args;<br /> &nbsp;close(FH);<br /><br /> &nbsp;print $vfs_args . "\n";<br /> &nbsp;if (defined($conf-&gt;{args}) && not $conf-&gt;{args} =~ /$vfs_args/) {<br /> &nbsp; &nbsp;print "Appending virtiofs arguments to VM args.\n";<br /> &nbsp; &nbsp;$conf-&gt;{args} .= " $vfs_args";<br /> &nbsp;} else {<br /> &nbsp; &nbsp;print "Setting VM args to generated virtiofs arguments.\n";<br /> &nbsp; &nbsp;print "vfs_args: $vfs_args\n" if $DEBUG;<br /> &nbsp; &nbsp;$conf-&gt;{args} = " $vfs_args";<br /> &nbsp;}<br /> &nbsp;PVE::QemuConfig-&gt;write_config($vmid, $conf);<br />}<br />elsif($phase eq 'post-start') {<br /> &nbsp;print "$vmid started successfully.\n";<br /> &nbsp;my $vfs_args = do {<br /> &nbsp; &nbsp;local $/ = undef;<br /> &nbsp; &nbsp;open my $fh, "&lt;", $vfs_args_file or die $!;<br /> &nbsp; &nbsp;&lt;$fh&gt;;<br /> &nbsp;};<br /><br /> &nbsp;if ($conf-&gt;{args} =~ /$vfs_args/) {<br /> &nbsp; &nbsp;print "Removing virtiofs arguments from VM args.\n";<br /> &nbsp; &nbsp;print "conf-&gt;args = $conf-&gt;{args}\n" if $DEBUG;<br /> &nbsp; &nbsp;print "vfs_args = $vfs_args\n" if $DEBUG;<br /> &nbsp; &nbsp;$conf-&gt;{args} =~ s/\ *$vfs_args//g;<br /> &nbsp; &nbsp;print $conf-&gt;{args};<br /> &nbsp; &nbsp;$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;<br /> &nbsp; &nbsp;print "conf-&gt;args = $conf-&gt;{args}\n" if $DEBUG;<br /> &nbsp; &nbsp;PVE::QemuConfig-&gt;write_config($vmid, $conf) if defined($conf-&gt;{args});<br /> &nbsp;}<br />}<br />elsif($phase eq 'pre-stop') {<br /> &nbsp;#print "$vmid will be stopped.\n";<br />}<br />elsif($phase eq 'post-stop') {<br /> &nbsp;#print "$vmid stopped. Doing cleanup.\n";<br />} else {<br /> &nbsp;die "got unknown phase '$phase'\n";<br />}<br /><br />exit(0);<br />```<br /><br />Я изменил:<br /><br />1. &nbsp;Команду `ExecStart` с новыми аргументами для `virtiofsd` (старые аргументы не работали, поэтому новые аргументы могут потребовать небольшой настройки).<br />2. &nbsp;Добавил строку `mkdir /run/virtiofsd/` если она не существует (иначе `virtiofsd` не смог бы записать свой сокет).<br />3. &nbsp;Функцию `post-start`, чтобы не перезаписывать конфигурацию (`PVE::QemuConfig-&gt;write_config`), если она не определена. <br />
			<i>18.08.2023 23:21:00, oztiks.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327525/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327525/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 18 Aug 2023 23:21:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327524/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Спасибо, что поделились этим! При запуске виртуальной машины (Proxmox 8) возникает ошибка:<br />```<br />qm start 102<br />GUEST HOOK: 102 pre-start<br />102 запускается, выполняются подготовительные действия.<br />попытка установить unit virtiofsd-mnt_local_...<br />ДИРЕКТОРИЯ УЖЕ СУЩЕСТВУЕТ!<br />-object memory-backend-memfd,id=mem,size=2048M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/run/virtiofsd/102-mnt_local_.sock -device vhost-user-fs-pci,chardev=char0,tag=mnt_local_<br />Установка аргументов виртуальной машины в сгенерированные аргументы virtiofs.<br />unable to parse value of 'args' - got undefined value<br />GUEST HOOK: 102 post-start<br />102 успешно запущен.<br />Удаление аргументов virtiofs из аргументов виртуальной машины.<br />hookscript error for 102 on post-start: command '/var/lib/vz/snippets/virtiofs-hook.pl 102 post-start' failed: exit code 255<br />```<br /><br />Любые мысли? Я не вижу, почему это происходит. Я добавил отладочный вывод, и:<br /><br />Perl:<br />```<br />elsif($phase eq 'post-start') {<br /> &nbsp;print "$vmid started successfully.\n";<br /> &nbsp;my $vfs_args = do {<br /> &nbsp; &nbsp;local $/ = undef;<br /> &nbsp; &nbsp;open my $fh, "&lt;", $vfs_args_file or die $!;<br /> &nbsp; &nbsp;&lt;$fh&gt;;<br /> &nbsp;};<br /><br /> &nbsp;if ($conf-&gt;{args} =~ /$vfs_args/) {<br /> &nbsp; &nbsp;print "Removing virtiofs arguments from VM args.\n";<br /> &nbsp; &nbsp;print "conf-&gt;args = $conf-&gt;{args}\n" if $DEBUG;<br /> &nbsp; &nbsp;print "vfs_args = $vfs_args\n" if $DEBUG;<br /> &nbsp; &nbsp;$conf-&gt;{args} =~ s/\ *$vfs_args//g;<br /> &nbsp; &nbsp;print $conf-&gt;{args};<br /> &nbsp; &nbsp;$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;<br /> &nbsp; &nbsp;print "conf-&gt;{args} = $conf-&gt;{args}\n" if $DEBUG;<br /> &nbsp; &nbsp;PVE::QemuConfig-&gt;write_config($vmid, $conf);<br /> &nbsp;}<br />```<br />Результат:<br />```<br />qm start 102<br />GUEST HOOK: 102 pre-start<br />102 запускается, выполняются подготовительные действия.<br />попытка установить unit virtiofsd-mnt_local_...<br />ДИРЕКТОРИЯ УЖЕ СУЩЕСТВУЕТ!<br />-object memory-backend-memfd,id=mem,size=2048M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/run/virtiofsd/102-mnt_local_.sock -device vhost-user-fs-pci,chardev=char0,tag=mnt_local_<br />Установка аргументов виртуальной машины в сгенерированные аргументы virtiofs.<br />vfs_args: -object memory-backend-memfd,id=mem,size=2048M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/run/virtiofsd/102-mnt_local_.sock -device vhost-user-fs-pci,chardev=char0,tag=mnt_local_<br />Use of uninitialized value in concatenation (.) or string at /var/lib/vz/snippets/virtiofs-hook.pl line 96.<br />unable to parse value of 'args' - got undefined value<br />GUEST HOOK: 102 post-start<br />102 успешно запущен.<br />Удаление аргументов virtiofs из аргументов виртуальной машины.<br />conf-&gt;args = -object memory-backend-memfd,id=mem,size=2048M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/run/virtiofsd/102-mnt_local_.sock -device vhost-user-fs-pci,chardev=char0,tag=mnt_local_<br />vfs_args = -object memory-backend-memfd,id=mem,size=2048M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/run/virtiofsd/102-mnt_local_.sock -device vhost-user-fs-pci,chardev=char0,tag=mnt_local_<br />conf-&gt;{args} =<br />hookscript error for 102 on post-start: command '/var/lib/vz/snippets/virtiofs-hook.pl 102 post-start' failed: exit code 255<br />```<br /><br />Я просто изо всех сил пытаюсь понять, почему post-start не удается. Кажется, что Perl: `$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;` отменяет переменную как и предполагалось, но я не понимаю намерений. <br />
			<i>18.08.2023 22:30:00, oztiks.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327524/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327524/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 18 Aug 2023 22:30:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327523/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Ого, огромное спасибо! У меня было несколько ZFS virtio shares, которые я настраивал вручную в args/systemd, но всегда боялся этого процесса. С помощью хук-скрипта теперь я могу настроить это на всем парке, и наконец-то убедиться, что те несколько директорий, которые мне важны в каждой VM, действительно могут находиться в моем ZFS пуле, и делать их резервное копирование отдельно, а не ужасающе все целые VMs.<br /><br />Редактирую: Интересно, что конфиг, обновленный post-start, не перегружается перед запуском VM, поэтому аргументы отсутствуют в команде, выполняемой для запуска VM, несмотря на то, что аргументы есть в файле конфига. Но это небольшое изменение в Proxmox это исправляет. <br />
			<i>18.08.2023 10:54:00, scr4tchy.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327523/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327523/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 18 Aug 2023 10:54:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327522/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			virtiofs по сути предоставляет KVM-эквивалент bind mounts в LXC, работающий как нативно (читай: не тормозит из-за сетевого протокола), для монтирования хранилища хоста внутри гостевой системы как общей файловой системы. Те же самые сценарии использования, что и для этих bind mounts, применимы и здесь. <br />
			<i>18.08.2023 00:36:00, sikha.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327522/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327522/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Fri, 18 Aug 2023 00:36:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327521/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Для чего это можно использовать в продакшене? У кого есть крутые примеры использования, о которых я мог забыть? <br />
			<i>17.08.2023 15:28:00, jsterr.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327521/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327521/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Thu, 17 Aug 2023 15:28:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327520/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я переключился на версию Rust для virtiofsd в PVE 7 и собирался написать статью о процессе, но так и не успел. Последний раз я этим занимался в мае прошлого года, поэтому мало что помню, но я использую следующий Perl-скрипт, чтобы создавать шаблонный файл службы systemd для запуска virtiofsd в определенном каталоге, а затем активирую его для определенного VMID (чтобы он запускался при запуске виртуальной машины и останавливался при ее остановке) и добавляю аргументы в конфигурацию виртуальной машины. Сейчас он использует жестко заданные ассоциации и не имеет никаких шагов очистки, но это может быть полезно как отправная точка для кого-то другого (или я в конце концов займусь его завершением). Альтернативно, если это можно реализовать непосредственно в PVE, это может меня мотивировать исправить и отправить changeset edit: кстати, там уже есть реализация в очереди, которая не использует systemd scope виртуальной машины.<br /><br />Perl: #!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />my %associations = (<br /> &nbsp;100 =&gt; ['/zpool/audio', '/zpool/books', '/zpool/games', '/zpool/work'],<br /> &nbsp;101 =&gt; ['/zpool/audio', '/zpool/games'],<br />);<br /><br />use PVE::QemuServer;<br /><br />use Template;<br />my $tt = Template-&gt;new;<br /><br />print "GUEST HOOK: " . join(' ', @ARGV) . "\n";<br /><br />my $vmid = shift;<br />my $conf = PVE::QemuConfig-&gt;load_config($vmid);<br />my $vfs_args_file = "/run/$vmid.virtfs";<br /><br />my $phase = shift;<br /><br />my $unit_tpl = "[Unit]<br />Description=virtiofsd filesystem share at [% share %] for VM %i<br />StopWhenUnneeded=true<br /><br />[Service]<br />Type=simple<br />PIDFile=/run/virtiofsd/.run.virtiofsd.%i-[% share_id %].sock.pid<br />ExecStart=/usr/lib/kvm/virtiofsd -f --socket-path=/run/virtiofsd/%i-[% share_id %].sock -o source=[% share %] -o cache=always<br /><br />[Install]<br />RequiredBy=%i.scope\n";<br /><br />if ($phase eq 'pre-start') {<br /> &nbsp;print "$vmid начинается, выполняются подготовительные действия.\n";<br /><br /> &nbsp;my $vfs_args = "-object memory-backend-memfd,id=mem,size=$conf-&gt;{memory}M,share=on -numa node,memdev=mem";<br /> &nbsp;my $char_id = 0;<br /><br /> &nbsp;# TODO: Необходимо реализовать логику удаления. Вероятно, потребуется проанализировать каталог systemd на предмет совпадающих файлов.<br /> &nbsp;for (@{$associations{$vmid}}) {<br /> &nbsp; &nbsp;my $share_id = $_ =~ s/^\///r =~ s/\//_/gr;<br /> &nbsp; &nbsp;my $unit_name = 'virtiofsd-' . $share_id;<br /> &nbsp; &nbsp;my $unit_file = '/etc/systemd/system/' . $unit_name . '@.service';<br /> &nbsp; &nbsp;print "попытка установить unit $unit_name...\n";<br /> &nbsp; &nbsp;if (not -e $unit_file) {<br /> &nbsp; &nbsp; &nbsp;$tt-&gt;process(\$unit_tpl, { share =&gt; $_, share_id =&gt; $share_id }, $unit_file)<br /> &nbsp; &nbsp; &nbsp; &nbsp;|| die $tt-&gt;error(), "\n";<br /> &nbsp; &nbsp; &nbsp;system("/usr/bin/systemctl daemon-reload");<br /> &nbsp; &nbsp; &nbsp;system("/usr/bin/systemctl enable $unit_name\@$vmid.service");<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;system("/usr/bin/systemctl start $unit_name\@$vmid.service");<br /> &nbsp; &nbsp;$vfs_args .= " -chardev socket,id=char$char_id,path=/run/virtiofsd/$vmid-$share_id.sock";<br /> &nbsp; &nbsp;$vfs_args .= " -device vhost-user-fs-pci,chardev=char$char_id,tag=$share_id";<br /> &nbsp; &nbsp;$char_id += 1;<br /> &nbsp;}<br /><br /> &nbsp;open(FH, '&gt;', $vfs_args_file) or die $!;<br /> &nbsp;print FH $vfs_args;<br /> &nbsp;close(FH);<br /><br /> &nbsp;print $vfs_args . "\n";<br /> &nbsp;if (defined($conf-&gt;{args}) && not $conf-&gt;{args} =~ /$vfs_args/) {<br /> &nbsp; &nbsp;print "Добавление аргументов virtiofs в аргументы VM.\n";<br /> &nbsp; &nbsp;$conf-&gt;{args} .= " $vfs_args";<br /> &nbsp;} else {<br /> &nbsp; &nbsp;print "Установка аргументов VM для сгенерированных аргументов virtiofs.\n";<br /> &nbsp; &nbsp;$conf-&gt;{args} = " $vfs_args";<br /> &nbsp;}<br /> &nbsp;PVE::QemuConfig-&gt;write_config($vmid, $conf);<br />}<br />elsif($phase eq 'post-start') {<br /> &nbsp;print "$vmid успешно запущен.\n";<br /> &nbsp;my $vfs_args = do {<br /> &nbsp; &nbsp;local $/ = undef;<br /> &nbsp; &nbsp;open my $fh, "&lt;", $vfs_args_file or die $!;<br /> &nbsp; &nbsp;&lt;$fh&gt;;<br /> &nbsp;};<br /><br /> &nbsp;if ($conf-&gt;{args} =~ /$vfs_args/) {<br /> &nbsp; &nbsp;print "Удаление аргументов virtiofs из аргументов VM.\n";<br /> &nbsp; &nbsp;$conf-&gt;{args} =~ s/\ *$vfs_args//g;<br /> &nbsp; &nbsp;print $conf-&gt;{args};<br /> &nbsp; &nbsp;$conf-&gt;{args} = undef if $conf-&gt;{args} =~ /^$/;<br /> &nbsp; &nbsp;PVE::QemuConfig-&gt;write_config($vmid, $conf);<br /> &nbsp;}<br />}<br />elsif($phase eq 'pre-stop') {<br /> &nbsp;#print "$vmid будет остановлен.\n";<br />}<br />elsif($phase eq 'post-stop') {<br /> &nbsp;#print "$vmid остановлен. Выполняется очистка.\n";<br />} else {<br /> &nbsp;die "получена неизвестная фаза '$phase'\n";<br />}<br /><br />exit(0); Я еще не использовал это с PVE 8, однако. Если я правильно понимаю, ключевое различие - это изменение `/usr/lib/kvm/virtiofsd` на `/usr/libexec/virtiofsd`. Но я в конечном итоге протестирую это на PVE 8 и отчитаюсь. <br />
			<i>17.08.2023 15:02:00, sikha.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327520/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327520/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Thu, 17 Aug 2023 15:02:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327519/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Избыточные медиафайлы — прикольно! Я всё равно, возможно, попробую virtioFS (хочу протестировать и это, и плагины Docker, чтобы понять, есть ли ощутимая разница). Твой скрипт делает это более хрупким, чем если бы это было встроено? <br />
			<i>23.09.2023 00:24:00, scyto.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327519/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327519/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Sat, 23 Sep 2023 00:24:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message327518/78165-tutorial_-virtiofsd-v-pve-8.0.x">[ТУТОРИАЛ] virtiofsd в PVE 8.0.x</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			virtiofsd используется для "передачи" частей файловой системы хоста в виртуальную машину с "локальной файловой системой и производительностью". Proxmox перешёл на версию virtiofsd на основе Rust в PVE 8, расположенную здесь. Он установлен как отдельный пакет под названием "virtiofsd" в PVE 8, тогда как другая, не основанная на Rust версия virtiofsd, была "включена" в PVE 7.x. Обратите внимание, что существует несколько интерфейсов и бэкендов, которые можно использовать. То, что описано ниже, работает для меня. Обязательно хорошо протестируйте, прежде чем что-либо переводить в "продакшн". Как было отмечено недавно (спасибо @fabian), будущая версия PVE 8.x будет иметь поддержку WebUI для virtiofsd (см. патч здесь). Я полностью ожидаю, что эти инструкции будут иметь "ограниченный срок службы", но до тех пор, ниже — что я сделал, чтобы реализовать новый virtiofsd в PVE 8.0.x в четырех областях: &lt;VMID&gt;.conf изменения virtiofsd на хосте добавление скрипта для запуска virtiofsd монтирование внутри Linux VM<br /><br />1. &nbsp;Добавьте строку "args:" в файл VMID.conf виртуальной машины, расположенный в /etc/pve/qemu-server. Пожалуйста, обратите внимание, что документация здесь указывает, что это только для экспертов. Bash: args: -chardev socket,id=virtfs0,path=/run/changme.sock -device vhost-user-fs-pci,queue-size=1024,chardev=virtfs0,tag=changeme_tag -object memory-backend-file,id=mem,size=32768M,mem-path=/dev/shm,share=on -numa node,memdev=mem Замените " changeme.sock ", " changeme_tag " и " size " выше на соответствующие значения, где: changeme.sock = полное имя файла сокета, используемого для IPC между VM и хостом changeme_tag = имя, используемое внутри VM для команды монтирования или в /etc/fstab size = размер оперативной памяти, используемой VM (протестировано только с размером, равным оперативной памяти VM) НОТА: после добавления строки "args:" виртуальная машина не запустится, если файл сокета не существует. virtiofsd создает файл сокета (см. следующий шаг). Убедитесь, что args: является частью конфигурации с помощью команды: qm config VMID И чтобы "увидеть" способ, которым KVM/Qemu запускает VM: qm showcmd VMID --pretty Последние 3-4 строки должны содержать компоненты строки args:.<br /><br />2. &nbsp;Запустите virtiofsd на хосте. Чтобы протестировать, virtiofsd можно запустить вручную, но его нужно запустить перед VM, чтобы он мог создать файл сокета *.sock, на который ссылается "args:". Чтобы запустить вручную, используйте: /usr/libexec/virtiofsd --syslog --socket-path /run/changeme.sock --shared-dir /dir/to/share/with/vm --announce-submounts --inode-file-handles=mandatory Замените: changeme.sock на имя, используемое в args: в шаге (1) /dir/to/share/with/vm на основную папку хоста, экспонируемую для VM. Вместо "--syslog" используйте "--log-level debug" для устранения неполадок. Для дополнительных/других вариантов см. файл README документации virtiofsd здесь. Чтобы запустить его вручную как демон, добавьте префикс nohup и фон амперсанд (&): nohup command_above & Особая НОТА, эта версия virtiofsd должна быть "двойной разветвленной" для запуска как демон. Это означает, что после запуска будет два процесса virtiofsd, "родительский" и "дочерний". Если вы изучите PID, PID "прародительского" должен быть 1. "Прародительский" должен быть PID 1. Подробнее об этом в следующем разделе. После запуска запустите VM как обычно и посмотрите, как смонтировать общую папку в Linux в шаге (4).<br /><br />3. &nbsp;Запустите virtiofsd в скрипте запуска. Это автоматически запустит virtiofsd перед VM. Если необходимо, см. Скрипты запуска в документации PVE здесь. Из четырех фаз скрипта запуска virtiofsd должен быть запущен в фазе pre-start. Если ваши скрипты запуска написаны на perl, я не могу прокомментировать, как запустить virtiofsd, поскольку все мои скрипты запуска написаны на bash. (Пожалуйста, не стесняйтесь добавить эквивалент на perl в комментариях). Если ваши скрипты запуска написаны на Bash, запуск virtiofsd может быть проблематичным, поскольку он должен быть двойной разветвленной. Для полного охвата того, что это означает, см. здесь. Попытав много команд, включая: Bash here документы, выполнение этого здесь дока, eval(), setsig(1), nohup и другие, способ, который я нашел, который работал, это создание одноразового сервисного юнита systemd с помощью systemd-run(1). В фазе "pre-start" вашего bash-скрипта запуска запустите virtiofsd с помощью: Bash: systemd-run --unit=changeme_service /usr/libexec/virtiofsd --syslog --socket-path /run/changeme.sock --shared-dir /dir/to/share/with/vm --announce-submounts --inode-file-handles=mandatory Замените: changeme_service на имя сервиса systemd по вашему выбору changeme.sock на имя, используемое в args: в шаге (1) /dir/to/share/with/vm для основной папки хоста, экспонируемой для VM. После этого сервис systemd можно будет изучить с помощью: systemctl status changeme_service &nbsp;# или имя, которое вы изменили его на<br /><br />4. &nbsp;Монтируйте внутри Linux VM. Чтобы смонтировать его вручную, создайте (или определите) каталог для использования в качестве точки монтирования: mkdir /mnt/mountpoint Затем выполните следующую команду монтирования, используя changeme_tag, определенный в шаге 1: mount -t virtiofs changeme_tag /mnt/mountpoint Протестируйте с помощью: ls -l /mnt/mountpoint Если что-то не так, команда будет казаться "зависшей". После успешной работы и рабочего скрипта запуска добавьте монтирование в /etc/fstab навсегда, как это: Code: changeme_tag /mnt/mountpoint virtiofs defaults См. fstab(5) для других опций, если это необходимо. Последнее, virtiofsd автоматически завершит работу после остановки VM, которая его использует. Нет необходимости останавливать его из скрипта запуска. Это по дизайну. <br />
			<i>12.07.2023 23:55:00, BobC.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message327518/78165-tutorial_-virtiofsd-v-pve-8.0.x</link>
			<guid>http://proxmox.su/forum/messages/forum63/message327518/78165-tutorial_-virtiofsd-v-pve-8.0.x</guid>
			<pubDate>Wed, 12 Jul 2023 23:55:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
	</channel>
</rss>
