62 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | dm-linear | ||
|  | ========= | ||
|  | 
 | ||
|  | Device-Mapper's "linear" target maps a linear range of the Device-Mapper | ||
|  | device onto a linear range of another device.  This is the basic building | ||
|  | block of logical volume managers. | ||
|  | 
 | ||
|  | Parameters: <dev path> <offset> | ||
|  |     <dev path>: Full pathname to the underlying block-device, or a | ||
|  |                 "major:minor" device-number. | ||
|  |     <offset>: Starting sector within the device. | ||
|  | 
 | ||
|  | 
 | ||
|  | Example scripts | ||
|  | =============== | ||
|  | [[ | ||
|  | #!/bin/sh | ||
|  | # Create an identity mapping for a device | ||
|  | echo "0 `blockdev --getsize $1` linear $1 0" | dmsetup create identity | ||
|  | ]] | ||
|  | 
 | ||
|  | 
 | ||
|  | [[ | ||
|  | #!/bin/sh | ||
|  | # Join 2 devices together | ||
|  | size1=`blockdev --getsize $1` | ||
|  | size2=`blockdev --getsize $2` | ||
|  | echo "0 $size1 linear $1 0 | ||
|  | $size1 $size2 linear $2 0" | dmsetup create joined | ||
|  | ]] | ||
|  | 
 | ||
|  | 
 | ||
|  | [[ | ||
|  | #!/usr/bin/perl -w | ||
|  | # Split a device into 4M chunks and then join them together in reverse order. | ||
|  | 
 | ||
|  | my $name = "reverse"; | ||
|  | my $extent_size = 4 * 1024 * 2; | ||
|  | my $dev = $ARGV[0]; | ||
|  | my $table = ""; | ||
|  | my $count = 0; | ||
|  | 
 | ||
|  | if (!defined($dev)) { | ||
|  |         die("Please specify a device.\n"); | ||
|  | } | ||
|  | 
 | ||
|  | my $dev_size = `blockdev --getsize $dev`; | ||
|  | my $extents = int($dev_size / $extent_size) - | ||
|  |               (($dev_size % $extent_size) ? 1 : 0); | ||
|  | 
 | ||
|  | while ($extents > 0) { | ||
|  |         my $this_start = $count * $extent_size; | ||
|  |         $extents--; | ||
|  |         $count++; | ||
|  |         my $this_offset = $extents * $extent_size; | ||
|  | 
 | ||
|  |         $table .= "$this_start $extent_size linear $dev $this_offset\n"; | ||
|  | } | ||
|  | 
 | ||
|  | `echo \"$table\" | dmsetup create $name`; | ||
|  | ]] |