Reiser5 Logical Volume Management - Updates

From: Edward Shishkin
Date: Sun Nov 22 2020 - 15:24:38 EST


Reiser5 Logical Volume Management - Updates


I am happy to inform, that Logical Volumes stuff has become more
stable. Also we introduce the following changes, which make logical
volumes administration more flexible and simple:


1. No balancing by default


Now all volume operations except brick removal don't invoke balancing
by default. Instead, they mark volume as "unbalanced". To complete any
operation with balancing specify option -B (--with-balance), or run
volume.reiser4(8) utility with the option -b (--balance) later.

This allows to speed up more than one operations over logical volume
being performed at once. For example, if you want to add more than one
brick to your volume at once, first add all the bricks, then run
balancing. There is no need to balance a volume between the addition
operations.


2. Removal completion


Operation of brick removal always includes balancing procedure as its
part. This procedure moves out all data block from the brick to be
removed to remaining bricks of the volume. Thus, brick removal is
usually a long operation, which may be interrupted for various reasons
In such cases the volume is automatically marked with an "incomplete
removal" flag.

It is not allowed to perform essential volume operations on a volume
marked as "with incomplete removal": first, user should complete
removal by running volume.reiser4 utility with option
-R (--finish-removal). Otherwise, the operation will return error
(-EBUSY).

There is no other restrictions: you are allowed to add a brick to
unbalanced volume, and even remove a brick from an unbalanced volume
(assuming it is not incomplete removal).

Comment. "--finish-removal" is a temporary option. In the future the
file system will detect incomplete removal and automatically perform
removal completion by itself.


3. Balancing is always defined


Operation of volume balancing (regardless of its balanced status) is
always defined, and can be launched at any moment. If the volume is
balanced, then the balancing procedure just scans the volume without
any useful work.

It is allowed to run more than one balancing threads on the same
volume, however currently it will be inefficient: other threads will
be always going after the single leader without doing useful work.
Efficient volume balancing by many threads (true parallelism) is not a
trivial task. We estimate its complexity as 2/5.


4. Restore regular distribution on the volume


Custom (defined by user) file migration can break fairness of data
distribution among the bricks. To restore regular (fair) distribution
on the volume, run volume.reiser4 utility with the option -S
(--restore-regular). It launches a balancing procedure, which performs
mandatory data migration of all files (including the ones marked as
"immobile") in accordance with regular distribution policy on the
volume. Moreover, when the balancing procedure encounters a file
marked as "immobile", its "immobile" flag is cleared up.


5. How to test


The new functionality is available starting with the kernel patch
reiser4-for-linux-5.10-rc3 and reiser4progs-2.0.4 (Software Framework
Release number of both is 5.1.3).

Links for download:

https://sourceforge.net/projects/reiser4/files/v5-unstable/kernel/
https://sourceforge.net/projects/reiser4/files/v5-unstable/progs/

Find updated documentation on getting started with logical volumes:

https://reiser4.wiki.kernel.org/index.php/Logical_Volumes_Administration
https://reiser4.wiki.kernel.org/index.php/Proxy_Device_Administration
https://reiser4.wiki.kernel.org/index.php/Transparent_File_Migration

Also see manual pages for volume.reiser4(8) utility.