1dm-linear 2========= 3 4Device-Mapper's "linear" target maps a linear range of the Device-Mapper 5device onto a linear range of another device. This is the basic building 6block of logical volume managers. 7 8Parameters: <dev path> <offset> 9 <dev path>: Full pathname to the underlying block-device, or a 10 "major:minor" device-number. 11 <offset>: Starting sector within the device. 12 13 14Example scripts 15=============== 16[[ 17#!/bin/sh 18# Create an identity mapping for a device 19echo "0 `blockdev --getsize $1` linear $1 0" | dmsetup create identity 20]] 21 22 23[[ 24#!/bin/sh 25# Join 2 devices together 26size1=`blockdev --getsize $1` 27size2=`blockdev --getsize $2` 28echo "0 $size1 linear $1 0 29$size1 $size2 linear $2 0" | dmsetup create joined 30]] 31 32 33[[ 34#!/usr/bin/perl -w 35# Split a device into 4M chunks and then join them together in reverse order. 36 37my $name = "reverse"; 38my $extent_size = 4 * 1024 * 2; 39my $dev = $ARGV[0]; 40my $table = ""; 41my $count = 0; 42 43if (!defined($dev)) { 44 die("Please specify a device.\n"); 45} 46 47my $dev_size = `blockdev --getsize $dev`; 48my $extents = int($dev_size / $extent_size) - 49 (($dev_size % $extent_size) ? 1 : 0); 50 51while ($extents > 0) { 52 my $this_start = $count * $extent_size; 53 $extents--; 54 $count++; 55 my $this_offset = $extents * $extent_size; 56 57 $table .= "$this_start $extent_size linear $dev $this_offset\n"; 58} 59 60`echo \"$table\" | dmsetup create $name`; 61]] 62