Commit | Line | Data |
---|---|---|
f0ba4377 | 1 | ======= |
1da177e4 LT |
2 | dm-zero |
3 | ======= | |
4 | ||
5 | Device-Mapper's "zero" target provides a block-device that always returns | |
6 | zero'd data on reads and silently drops writes. This is similar behavior to | |
7 | /dev/zero, but as a block-device instead of a character-device. | |
8 | ||
9 | Dm-zero has no target-specific parameters. | |
10 | ||
11 | One very interesting use of dm-zero is for creating "sparse" devices in | |
12 | conjunction with dm-snapshot. A sparse device reports a device-size larger | |
13 | than the amount of actual storage space available for that device. A user can | |
14 | write data anywhere within the sparse device and read it back like a normal | |
15 | device. Reads to previously unwritten areas will return a zero'd buffer. When | |
16 | enough data has been written to fill up the actual storage space, the sparse | |
17 | device is deactivated. This can be very useful for testing device and | |
18 | filesystem limitations. | |
19 | ||
20 | To create a sparse device, start by creating a dm-zero device that's the | |
21 | desired size of the sparse device. For this example, we'll assume a 10TB | |
f0ba4377 | 22 | sparse device:: |
1da177e4 | 23 | |
f0ba4377 MCC |
24 | TEN_TERABYTES=`expr 10 \* 1024 \* 1024 \* 1024 \* 2` # 10 TB in sectors |
25 | echo "0 $TEN_TERABYTES zero" | dmsetup create zero1 | |
1da177e4 LT |
26 | |
27 | Then create a snapshot of the zero device, using any available block-device as | |
28 | the COW device. The size of the COW device will determine the amount of real | |
29 | space available to the sparse device. For this example, we'll assume /dev/sdb1 | |
f0ba4377 | 30 | is an available 10GB partition:: |
1da177e4 | 31 | |
f0ba4377 MCC |
32 | echo "0 $TEN_TERABYTES snapshot /dev/mapper/zero1 /dev/sdb1 p 128" | \ |
33 | dmsetup create sparse1 | |
1da177e4 LT |
34 | |
35 | This will create a 10TB sparse device called /dev/mapper/sparse1 that has | |
36 | 10GB of actual storage space available. If more than 10GB of data is written | |
37 | to this device, it will start returning I/O errors. |