| 
									
										
										
										
											2021-09-07 15:58:12 +02:00
										 |  |  | ==================================
 | 
					
						
							| 
									
										
										
										
											2020-11-12 14:40:40 +00: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 17:37:15 +01:00
										 |  |  | is that external helper; it creates a listener socket which will
 | 
					
						
							|  |  |  | accept incoming connections for communication with QEMU.
 | 
					
						
							| 
									
										
										
										
											2020-11-12 14:40:40 +00: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.
 |