~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/device-mapper/dm-clone.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/device-mapper/dm-clone.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/device-mapper/dm-clone.rst (Version linux-4.18.20)


  1 .. SPDX-License-Identifier: GPL-2.0-only          
  2                                                   
  3 ========                                          
  4 dm-clone                                          
  5 ========                                          
  6                                                   
  7 Introduction                                      
  8 ============                                      
  9                                                   
 10 dm-clone is a device mapper target which produ    
 11 existing, read-only source device into a writa    
 12 presents a virtual block device which makes al    
 13 redirects reads and writes accordingly.           
 14                                                   
 15 The main use case of dm-clone is to clone a po    
 16 read-only, archival-type block device into a w    
 17 for fast, low-latency I/O. The cloned device i    
 18 and the copy of the source device to the desti    
 19 background, in parallel with user I/O.            
 20                                                   
 21 For example, one could restore an application     
 22 accessible through a network storage protocol     
 23 etc.), into a local SSD or NVMe device, and st    
 24 without waiting for the restore to complete.      
 25                                                   
 26 When the cloning completes, the dm-clone table    
 27 replaced, e.g., by a linear table, mapping dir    
 28                                                   
 29 The dm-clone target reuses the metadata librar    
 30 target.                                           
 31                                                   
 32 Glossary                                          
 33 ========                                          
 34                                                   
 35    Hydration                                      
 36      The process of filling a region of the de    
 37      the same region of the source device, i.e    
 38      source to the destination device.            
 39                                                   
 40 Once a region gets hydrated we redirect all I/    
 41 device.                                           
 42                                                   
 43 Design                                            
 44 ======                                            
 45                                                   
 46 Sub-devices                                       
 47 -----------                                       
 48                                                   
 49 The target is constructed by passing three dev    
 50 parameters detailed later):                       
 51                                                   
 52 1. A source device - the read-only device that    
 53    hydration.                                     
 54                                                   
 55 2. A destination device - the destination of t    
 56    clone of the source device.                    
 57                                                   
 58 3. A small metadata device - it records which     
 59    destination device, i.e., which regions hav    
 60    been written to directly, via user I/O.        
 61                                                   
 62 The size of the destination device must be at     
 63 source device.                                    
 64                                                   
 65 Regions                                           
 66 -------                                           
 67                                                   
 68 dm-clone divides the source and destination de    
 69 Regions are the unit of hydration, i.e., the m    
 70 the source to the destination device.             
 71                                                   
 72 The region size is configurable when you first    
 73 recommended region size is the same as the fil    
 74 is 4KB. The region size must be between 8 sect    
 75 (1GB) and a power of two.                         
 76                                                   
 77 Reads and writes from/to hydrated regions are     
 78 device.                                           
 79                                                   
 80 A read to a not yet hydrated region is service    
 81                                                   
 82 A write to a not yet hydrated region will be d    
 83 region has been hydrated and the hydration of     
 84                                                   
 85 Note that a write request with size equal to r    
 86 the corresponding region from the source devic    
 87 destination device directly.                      
 88                                                   
 89 Discards                                          
 90 --------                                          
 91                                                   
 92 dm-clone interprets a discard request to a ran    
 93 as a hint to skip hydration of the regions cov    
 94 skips copying the region's data from the sourc    
 95 only updates its metadata.                        
 96                                                   
 97 If the destination device supports discards, t    
 98 down discard requests to it.                      
 99                                                   
100 Background Hydration                              
101 --------------------                              
102                                                   
103 dm-clone copies continuously from the source t    
104 all of the device has been copied.                
105                                                   
106 Copying data from the source to the destinatio    
107 can set a throttle to prevent more than a cert    
108 any one time. Moreover, dm-clone takes into ac    
109 the devices and pauses the background hydratio    
110                                                   
111 A message `hydration_threshold <#regions>` can    
112 of regions being copied, the default being 1 r    
113                                                   
114 dm-clone employs dm-kcopyd for copying portion    
115 destination device. By default, we issue copy     
116 region size. A message `hydration_batch_size <    
117 size of these copy requests. Increasing the hy    
118 dm-clone trying to batch together contiguous r    
119 batches of this many regions.                     
120                                                   
121 When the hydration of the destination device f    
122 to user space.                                    
123                                                   
124 Updating on-disk metadata                         
125 -------------------------                         
126                                                   
127 On-disk metadata is committed every time a FLU    
128 such requests are made then commits will occur    
129 dm-clone device behaves like a physical disk t    
130 power is lost you may lose some recent writes.    
131 consistent in spite of any crash.                 
132                                                   
133 Target Interface                                  
134 ================                                  
135                                                   
136 Constructor                                       
137 -----------                                       
138                                                   
139   ::                                              
140                                                   
141    clone <metadata dev> <destination dev> <sou    
142          [<#feature args> [<feature arg>]* [<#    
143                                                   
144  ================ ============================    
145  metadata dev     Fast device holding the pers    
146  destination dev  The destination device, wher    
147  source dev       Read only device containing     
148  region size      The size of a region in sect    
149                                                   
150  #feature args    Number of feature arguments     
151  feature args     no_hydration or no_discard_p    
152                                                   
153  #core args       An even number of arguments     
154                   passed to dm-clone              
155  core args        Key/value pairs passed to dm    
156                   256`                            
157  ================ ============================    
158                                                   
159 Optional feature arguments are:                   
160                                                   
161  ==================== ========================    
162  no_hydration         Create a dm-clone instan    
163                       disabled                    
164  no_discard_passdown  Disable passing down dis    
165  ==================== ========================    
166                                                   
167 Optional core arguments are:                      
168                                                   
169  ================================ ============    
170  hydration_threshold <#regions>   Maximum numb    
171                                   the source t    
172                                   one time, du    
173  hydration_batch_size <#regions>  During backg    
174                                   together con    
175                                   from the sou    
176                                   batches of t    
177  ================================ ============    
178                                                   
179 Status                                            
180 ------                                            
181                                                   
182   ::                                              
183                                                   
184    <metadata block size> <#used metadata block    
185    <region size> <#hydrated regions>/<#total r    
186    <#feature args> <feature args>* <#core args    
187    <clone metadata mode>                          
188                                                   
189  ======================= =====================    
190  metadata block size     Fixed block size for     
191  #used metadata blocks   Number of metadata bl    
192  #total metadata blocks  Total number of metad    
193  region size             Configurable region s    
194  #hydrated regions       Number of regions tha    
195  #total regions          Total number of regio    
196  #hydrating regions      Number of regions cur    
197  #feature args           Number of feature arg    
198  feature args            Feature arguments, e.    
199  #core args              Even number of core a    
200  core args               Key/value pairs for t    
201                          `hydration_threshold     
202  clone metadata mode     ro if read-only, rw i    
203                                                   
204                          In serious cases wher    
205                          unsafe no further I/O    
206                          will just contain the    
207                          mode changes, a dm ev    
208  ======================= =====================    
209                                                   
210 Messages                                          
211 --------                                          
212                                                   
213   `disable_hydration`                             
214       Disable the background hydration of the     
215                                                   
216   `enable_hydration`                              
217       Enable the background hydration of the d    
218                                                   
219   `hydration_threshold <#regions>`                
220       Set background hydration threshold.         
221                                                   
222   `hydration_batch_size <#regions>`               
223       Set background hydration batch size.        
224                                                   
225 Examples                                          
226 ========                                          
227                                                   
228 Clone a device containing a file system           
229 ---------------------------------------           
230                                                   
231 1. Create the dm-clone device.                    
232                                                   
233    ::                                             
234                                                   
235     dmsetup create clone --table "0 1048576000    
236       $source_dev 8 1 no_hydration"               
237                                                   
238 2. Mount the device and trim the file system.     
239    sent by the file system and it will not hyd    
240                                                   
241    ::                                             
242                                                   
243     mount /dev/mapper/clone /mnt/cloned-fs        
244     fstrim /mnt/cloned-fs                         
245                                                   
246 3. Enable background hydration of the destinat    
247                                                   
248    ::                                             
249                                                   
250     dmsetup message clone 0 enable_hydration      
251                                                   
252 4. When the hydration finishes, we can replace    
253    table.                                         
254                                                   
255    ::                                             
256                                                   
257     dmsetup suspend clone                         
258     dmsetup load clone --table "0 1048576000 l    
259     dmsetup resume clone                          
260                                                   
261    The metadata device is no longer needed and    
262    for other purposes.                            
263                                                   
264 Known issues                                      
265 ============                                      
266                                                   
267 1. We redirect reads, to not-yet-hydrated regi    
268    reading the source device has high latency     
269    the same regions, this behaviour could degr    
270    these reads as hints to hydrate the relevan    
271    rely on the page cache to cache these regio    
272    reading them multiple times from the source    
273                                                   
274 2. Release in-core resources, i.e., the bitmap    
275    hydrated, after the hydration has finished.    
276                                                   
277 3. During background hydration, if we fail to     
278    destination device, we print an error messa    
279    continues indefinitely, until it succeeds.     
280    hydration after a number of failures and em    
281    notice.                                        
282                                                   
283 Why not...?                                       
284 ===========                                       
285                                                   
286 We explored the following alternatives before     
287                                                   
288 1. Use dm-cache with cache size equal to the s    
289    cloning policy:                                
290                                                   
291    * The resulting cache device is not a one-t    
292      and thus we cannot remove the cache devic    
293                                                   
294    * dm-cache writes to the source device, whi    
295      the source device must be treated as read    
296                                                   
297    * Caching is semantically different from cl    
298                                                   
299 2. Use dm-snapshot with a COW device equal to     
300                                                   
301    * dm-snapshot stores its metadata in the CO    
302      is not a one-to-one mirror of the source     
303                                                   
304    * No background copying mechanism.             
305                                                   
306    * dm-snapshot needs to commit its metadata     
307      completes, to ensure snapshot consistency    
308      need to be so strict and can rely on comm    
309      or FUA bio is written, or periodically, l    
310      improves the performance significantly.      
311                                                   
312 3. Use dm-mirror: The mirror target has a back    
313    mechanism, but it writes to all mirrors, th    
314    the source device must be treated as read-o    
315                                                   
316 4. Use dm-thin's external snapshot functionali    
317    promising among all alternatives, as the th    
318    one-to-one mirror of the source device and     
319    un-provisioned/not-yet-cloned areas the sam    
320                                                   
321    Still:                                         
322                                                   
323    * There is no background copying mechanism,    
324                                                   
325    * Most importantly, we want to support arbi    
326      destination of the cloning process and no    
327      thinly-provisioned volumes. Thin-provisio    
328      overhead, for maintaining the thin volume    
329      degrades performance.                        
330                                                   
331    Moreover, cloning a device shouldn't force     
332    the other hand, if we wish to use thin prov    
333    LV as dm-clone's destination device.           
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php