Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | dm-linear |
| 2 | ========= |
| 3 | |
| 4 | Device-Mapper's "linear" target maps a linear range of the Device-Mapper |
| 5 | device onto a linear range of another device. This is the basic building |
| 6 | block of logical volume managers. |
| 7 | |
| 8 | Parameters: <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 | |
| 14 | Example scripts |
| 15 | =============== |
| 16 | [[ |
| 17 | #!/bin/sh |
| 18 | # Create an identity mapping for a device |
| 19 | echo "0 `blockdev --getsize $1` linear $1 0" | dmsetup create identity |
| 20 | ]] |
| 21 | |
| 22 | |
| 23 | [[ |
| 24 | #!/bin/sh |
| 25 | # Join 2 devices together |
| 26 | size1=`blockdev --getsize $1` |
| 27 | size2=`blockdev --getsize $2` |
| 28 | echo "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 | |
| 37 | my $name = "reverse"; |
| 38 | my $extent_size = 4 * 1024 * 2; |
| 39 | my $dev = $ARGV[0]; |
| 40 | my $table = ""; |
| 41 | my $count = 0; |
| 42 | |
| 43 | if (!defined($dev)) { |
| 44 | die("Please specify a device.\n"); |
| 45 | } |
| 46 | |
| 47 | my $dev_size = `blockdev --getsize $dev`; |
| 48 | my $extents = int($dev_size / $extent_size) - |
| 49 | (($dev_size % $extent_size) ? 1 : 0); |
| 50 | |
| 51 | while ($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 | ]] |