brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 11fb5cf Raw
38 lines · plain
1=======2dm-zero3=======4 5Device-Mapper's "zero" target provides a block-device that always returns6zero'd data on reads and silently drops writes. This is similar behavior to7/dev/zero, but as a block-device instead of a character-device.8 9Dm-zero has no target-specific parameters.10 11One very interesting use of dm-zero is for creating "sparse" devices in12conjunction with dm-snapshot. A sparse device reports a device-size larger13than the amount of actual storage space available for that device. A user can14write data anywhere within the sparse device and read it back like a normal15device. Reads to previously unwritten areas will return a zero'd buffer. When16enough data has been written to fill up the actual storage space, the sparse17device is deactivated. This can be very useful for testing device and18filesystem limitations.19 20To create a sparse device, start by creating a dm-zero device that's the21desired size of the sparse device. For this example, we'll assume a 10TB22sparse device::23 24  TEN_TERABYTES=`expr 10 \* 1024 \* 1024 \* 1024 \* 2`   # 10 TB in sectors25  echo "0 $TEN_TERABYTES zero" | dmsetup create zero126 27Then create a snapshot of the zero device, using any available block-device as28the COW device. The size of the COW device will determine the amount of real29space available to the sparse device. For this example, we'll assume /dev/sdb130is an available 10GB partition::31 32  echo "0 $TEN_TERABYTES snapshot /dev/mapper/zero1 /dev/sdb1 p 128" | \33     dmsetup create sparse134 35This will create a 10TB sparse device called /dev/mapper/sparse1 that has3610GB of actual storage space available. If more than 10GB of data is written37to this device, it will start returning I/O errors.38