2021-09-07 15:58:12 +02:00
|
|
|
==================================
|
2020-11-12 15:40:40 +01:00
|
|
|
QEMU persistent reservation helper
|
|
|
|
==================================
|
|
|
|
|
|
|
|
Synopsis
|
|
|
|
--------
|
|
|
|
|
|
|
|
**qemu-pr-helper** [*OPTION*]
|
|
|
|
|
|
|
|
Description
|
|
|
|
-----------
|
|
|
|
|
|
|
|
Implements the persistent reservation helper for QEMU.
|
|
|
|
|
|
|
|
SCSI persistent reservations allow restricting access to block devices
|
|
|
|
to specific initiators in a shared storage setup. When implementing
|
|
|
|
clustering of virtual machines, it is a common requirement for virtual
|
|
|
|
machines to send persistent reservation SCSI commands. However,
|
|
|
|
the operating system restricts sending these commands to unprivileged
|
|
|
|
programs because incorrect usage can disrupt regular operation of the
|
|
|
|
storage fabric. QEMU's SCSI passthrough devices ``scsi-block``
|
|
|
|
and ``scsi-generic`` support passing guest persistent reservation
|
|
|
|
requests to a privileged external helper program. :program:`qemu-pr-helper`
|
2022-07-07 18:37:15 +02:00
|
|
|
is that external helper; it creates a listener socket which will
|
|
|
|
accept incoming connections for communication with QEMU.
|
2020-11-12 15:40:40 +01:00
|
|
|
|
|
|
|
If you want to run VMs in a setup like this, this helper should be
|
|
|
|
started as a system service, and you should read the QEMU manual
|
|
|
|
section on "persistent reservation managers" to find out how to
|
|
|
|
configure QEMU to connect to the socket created by
|
|
|
|
:program:`qemu-pr-helper`.
|
|
|
|
|
|
|
|
After connecting to the socket, :program:`qemu-pr-helper` can
|
|
|
|
optionally drop root privileges, except for those capabilities that
|
|
|
|
are needed for its operation.
|
|
|
|
|
|
|
|
:program:`qemu-pr-helper` can also use the systemd socket activation
|
|
|
|
protocol. In this case, the systemd socket unit should specify a
|
|
|
|
Unix stream socket, like this::
|
|
|
|
|
|
|
|
[Socket]
|
|
|
|
ListenStream=/var/run/qemu-pr-helper.sock
|
|
|
|
|
|
|
|
Options
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. program:: qemu-pr-helper
|
|
|
|
|
|
|
|
.. option:: -d, --daemon
|
|
|
|
|
|
|
|
run in the background (and create a PID file)
|
|
|
|
|
|
|
|
.. option:: -q, --quiet
|
|
|
|
|
|
|
|
decrease verbosity
|
|
|
|
|
|
|
|
.. option:: -v, --verbose
|
|
|
|
|
|
|
|
increase verbosity
|
|
|
|
|
|
|
|
.. option:: -f, --pidfile=PATH
|
|
|
|
|
|
|
|
PID file when running as a daemon. By default the PID file
|
|
|
|
is created in the system runtime state directory, for example
|
|
|
|
:file:`/var/run/qemu-pr-helper.pid`.
|
|
|
|
|
|
|
|
.. option:: -k, --socket=PATH
|
|
|
|
|
|
|
|
path to the socket. By default the socket is created in
|
|
|
|
the system runtime state directory, for example
|
|
|
|
:file:`/var/run/qemu-pr-helper.sock`.
|
|
|
|
|
|
|
|
.. option:: -T, --trace [[enable=]PATTERN][,events=FILE][,file=FILE]
|
|
|
|
|
|
|
|
.. include:: ../qemu-option-trace.rst.inc
|
|
|
|
|
|
|
|
.. option:: -u, --user=USER
|
|
|
|
|
|
|
|
user to drop privileges to
|
|
|
|
|
|
|
|
.. option:: -g, --group=GROUP
|
|
|
|
|
|
|
|
group to drop privileges to
|
|
|
|
|
|
|
|
.. option:: -h, --help
|
|
|
|
|
|
|
|
Display a help message and exit.
|
|
|
|
|
|
|
|
.. option:: -V, --version
|
|
|
|
|
|
|
|
Display version information and exit.
|