58 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| =====================
 | |
| Device-Mapper Logging
 | |
| =====================
 | |
| The device-mapper logging code is used by some of the device-mapper
 | |
| RAID targets to track regions of the disk that are not consistent.
 | |
| A region (or portion of the address space) of the disk may be
 | |
| inconsistent because a RAID stripe is currently being operated on or
 | |
| a machine died while the region was being altered.  In the case of
 | |
| mirrors, a region would be considered dirty/inconsistent while you
 | |
| are writing to it because the writes need to be replicated for all
 | |
| the legs of the mirror and may not reach the legs at the same time.
 | |
| Once all writes are complete, the region is considered clean again.
 | |
| 
 | |
| There is a generic logging interface that the device-mapper RAID
 | |
| implementations use to perform logging operations (see
 | |
| dm_dirty_log_type in include/linux/dm-dirty-log.h).  Various different
 | |
| logging implementations are available and provide different
 | |
| capabilities.  The list includes:
 | |
| 
 | |
| ==============	==============================================================
 | |
| Type		Files
 | |
| ==============	==============================================================
 | |
| disk		drivers/md/dm-log.c
 | |
| core		drivers/md/dm-log.c
 | |
| userspace	drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h
 | |
| ==============	==============================================================
 | |
| 
 | |
| The "disk" log type
 | |
| -------------------
 | |
| This log implementation commits the log state to disk.  This way, the
 | |
| logging state survives reboots/crashes.
 | |
| 
 | |
| The "core" log type
 | |
| -------------------
 | |
| This log implementation keeps the log state in memory.  The log state
 | |
| will not survive a reboot or crash, but there may be a small boost in
 | |
| performance.  This method can also be used if no storage device is
 | |
| available for storing log state.
 | |
| 
 | |
| The "userspace" log type
 | |
| ------------------------
 | |
| This log type simply provides a way to export the log API to userspace,
 | |
| so log implementations can be done there.  This is done by forwarding most
 | |
| logging requests to userspace, where a daemon receives and processes the
 | |
| request.
 | |
| 
 | |
| The structure used for communication between kernel and userspace are
 | |
| located in include/linux/dm-log-userspace.h.  Due to the frequency,
 | |
| diversity, and 2-way communication nature of the exchanges between
 | |
| kernel and userspace, 'connector' is used as the interface for
 | |
| communication.
 | |
| 
 | |
| There are currently two userspace log implementations that leverage this
 | |
| framework - "clustered-disk" and "clustered-core".  These implementations
 | |
| provide a cluster-coherent log for shared-storage.  Device-mapper mirroring
 | |
| can be used in a shared-storage environment when the cluster log implementations
 | |
| are employed.
 |