|  | ================================== | 
|  | 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` | 
|  | is that external helper; it creates a listener socket which will | 
|  | accept incoming connections for communication with QEMU. | 
|  |  | 
|  | 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. |