mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Implementation of block cloning for ZFS
Block Cloning allows to manually clone a file (or a subset of its blocks) into another (or the same) file by just creating additional references to the data blocks without copying the data itself. Those references are kept in the Block Reference Tables (BRTs). The whole design of block cloning is documented in module/zfs/brt.c. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Christian Schwarz <christian.schwarz@nutanix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Rich Ercolani <rincebrain@gmail.com> Signed-off-by: Pawel Jakub Dawidek <pawel@dawidek.net> Closes #13392
This commit is contained in:
committed by
GitHub
parent
da19d919a8
commit
67a1b03791
@@ -347,6 +347,20 @@ BLAKE3 is a secure hash algorithm focused on high performance.
|
||||
.Pp
|
||||
.checksum-spiel blake3
|
||||
.
|
||||
.feature com.fudosecurity block_cloning yes
|
||||
When this feature is enabled ZFS will use block cloning for operations like
|
||||
.Fn copy_file_range 2 .
|
||||
Block cloning allows to create multiple references to a single block.
|
||||
It is much faster than copying the data (as the actual data is neither read nor
|
||||
written) and takes no additional space.
|
||||
Blocks can be cloned across datasets under some conditions (like disabled
|
||||
encryption and equal
|
||||
.Nm recordsize ) .
|
||||
.Pp
|
||||
This feature becomes
|
||||
.Sy active
|
||||
when first block is cloned.
|
||||
When the last cloned block is freed, it goes back to the enabled state.
|
||||
.feature com.delphix bookmarks yes extensible_dataset
|
||||
This feature enables use of the
|
||||
.Nm zfs Cm bookmark
|
||||
|
||||
+20
-7
@@ -42,13 +42,26 @@ change the behavior of the pool.
|
||||
.Pp
|
||||
The following are read-only properties:
|
||||
.Bl -tag -width "unsupported@guid"
|
||||
.It Cm allocated
|
||||
.It Sy allocated
|
||||
Amount of storage used within the pool.
|
||||
See
|
||||
.Sy fragmentation
|
||||
and
|
||||
.Sy free
|
||||
for more information.
|
||||
.It Sy bcloneratio
|
||||
The ratio of the total amount of storage that would be required to store all
|
||||
the cloned blocks without cloning to the actual storage used.
|
||||
The
|
||||
.Sy bcloneratio
|
||||
property is calculated as:
|
||||
.Pp
|
||||
.Sy ( ( bclonesaved + bcloneused ) * 100 ) / bcloneused
|
||||
.It Sy bclonesaved
|
||||
The amount of additional storage that would be required if block cloning
|
||||
was not used.
|
||||
.It Sy bcloneused
|
||||
The amount of storage used by cloned blocks.
|
||||
.It Sy capacity
|
||||
Percentage of pool space used.
|
||||
This property can also be referred to by its shortened column name,
|
||||
@@ -103,16 +116,16 @@ Over time
|
||||
will decrease while
|
||||
.Sy free
|
||||
increases.
|
||||
.It Sy leaked
|
||||
Space not released while
|
||||
.Sy freeing
|
||||
due to corruption, now permanently leaked into the pool.
|
||||
.It Sy guid
|
||||
A unique identifier for the pool.
|
||||
.It Sy health
|
||||
The current health of the pool.
|
||||
Health can be one of
|
||||
.Sy ONLINE , DEGRADED , FAULTED , OFFLINE, REMOVED , UNAVAIL .
|
||||
.It Sy guid
|
||||
A unique identifier for the pool.
|
||||
.It Sy leaked
|
||||
Space not released while
|
||||
.Sy freeing
|
||||
due to corruption, now permanently leaked into the pool.
|
||||
.It Sy load_guid
|
||||
A unique identifier for the pool.
|
||||
Unlike the
|
||||
|
||||
Reference in New Issue
Block a user