diff options
author | Ondrej Kozina <okozina@redhat.com> | 2015-05-09 00:59:18 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2015-05-09 00:59:18 +0100 |
commit | e587b0677b705786a78f21bac1966621f70b2752 (patch) | |
tree | e3c742e63c7e2146866a7eadaa39cfd54cb5914e /doc | |
parent | be23fae488b7df19147259d3e8505fc8301076cd (diff) | |
download | lvm2-e587b0677b705786a78f21bac1966621f70b2752.tar.gz |
lvmpolld: Add standalone polldaemon.
See doc/lvmpolld_overview.txt
Diffstat (limited to 'doc')
-rw-r--r-- | doc/lvmpolld_overview.txt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/doc/lvmpolld_overview.txt b/doc/lvmpolld_overview.txt new file mode 100644 index 000000000..8c66e5e1a --- /dev/null +++ b/doc/lvmpolld_overview.txt @@ -0,0 +1,81 @@ +LVM poll daemon overview +======================== + +(last updated: 2015-05-09) + +LVM poll daemon (lvmpolld) is the alternative for lvm2 classical polling +mechanisms. The motivation behind new lvmpolld was to create persistent +system service that would be more durable and transparent. It's suited +particularly for any systemd enabled distribution. + +Before lvmpolld any background polling process originating in a lvm2 command +initiated inside cgroup of a systemd service could get killed if the main +process (service) exited in such cgroup. That could lead to premature termination +of such lvm2 polling process. + +Also without lvmpolld there were no means to detect a particular polling process +suited for monitoring of specific operation is already in-progress and therefore +it's not desirable to start next one with exactly same task. lvmpolld is able to +detect such duplicate requests and not spawn such redundant process. + +lvmpolld is primarily targeted for systems with systemd as init process. For systems +without systemd there's no need to install lvmpolld because there is no issue +with observation described in second paragraph. You can still benefit from +avoiding duplicate polling process being spawned, but without systemd lvmpolld +can't easily be run on-demand (activated by a socket maintained by systemd). + +lvmpolld implement shutdown on idle and can shutdown automatically when idle +for requested time. 60 second is recommended default here. This behaviour can be +turned off if found useless. + +Data structures +--------------- + +a) Logical Volume (struct lvmpolld_lv) + +Each operation is identified by LV. Internal identifier within lvmpolld +is full LV uuid (vg_uuid+lv_uuid) prefixed with LVM_SYSTEM_DIR if set by client. + +such full identifier may look like: + + "/etc/lvm/lvm.confWFd2dU67S8Av29IcJCnYzqQirdfElnxzhCdzEh7EJrfCn9R1TIQjIj58weUZDre4" + +or without LVM_SYSTEM_DIR being set explicitly: + + "WFd2dU67S8Av29IcJCnYzqQirdfElnxzhCdzEh7EJrfCn9R1TIQjIj58weUZDre4" + + +LV carries various metadata about polling operation. The most significant are: + +VG name +LV name +polling interval (usually --interval passed to lvm2 command or default from lvm2 + configuration) +operation type (one of: pvmove, convert, merge, thin_merge) +LVM_SYSTEM_DIR (if set, this is also passed among environment variables of lvpoll + command spawned by lvmpolld) + +b) LV stores (struct lvmpolld_store) + +lvmpolld uses two stores for Logical volumes (struct lvmpolld_lv). One store for polling +operations in-progress. These operations are as of now: PV move, mirror up-conversion, +classical snapshot merge, thin snapshot merge. + +The second store is suited only for pvmove --abort operations in-progress. Both +stores are independent and identical LVs (pvmove /dev/sda3 and pvmove --abort /dev/sda3) +can be run concurently from lvmpolld point of view (on lvm2 side the consistency is +guaranteed by lvm2 locking mechanism). + +Locking order +------------- + +There are two types of locks in lvmpolld. Each store has own store lock and each LV has +own lv lock. + +Locking order is: +1) store lock +2) LV lock + +Each LV has to be inside a store. When daemon requires to take both locks it has +to take a store lock first and LV lock has to be taken afterwards (after the +appropriate store lock where the LV is being stored :)) |