 1da177e4c3
			
		
	
	
	1da177e4c3
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| dm-zero
 | |
| =======
 | |
| 
 | |
| Device-Mapper's "zero" target provides a block-device that always returns
 | |
| zero'd data on reads and silently drops writes. This is similar behavior to
 | |
| /dev/zero, but as a block-device instead of a character-device.
 | |
| 
 | |
| Dm-zero has no target-specific parameters.
 | |
| 
 | |
| One very interesting use of dm-zero is for creating "sparse" devices in
 | |
| conjunction with dm-snapshot. A sparse device reports a device-size larger
 | |
| than the amount of actual storage space available for that device. A user can
 | |
| write data anywhere within the sparse device and read it back like a normal
 | |
| device. Reads to previously unwritten areas will return a zero'd buffer. When
 | |
| enough data has been written to fill up the actual storage space, the sparse
 | |
| device is deactivated. This can be very useful for testing device and
 | |
| filesystem limitations.
 | |
| 
 | |
| To create a sparse device, start by creating a dm-zero device that's the
 | |
| desired size of the sparse device. For this example, we'll assume a 10TB
 | |
| sparse device.
 | |
| 
 | |
| TEN_TERABYTES=`expr 10 \* 1024 \* 1024 \* 1024 \* 2`   # 10 TB in sectors
 | |
| echo "0 $TEN_TERABYTES zero" | dmsetup create zero1
 | |
| 
 | |
| Then create a snapshot of the zero device, using any available block-device as
 | |
| the COW device. The size of the COW device will determine the amount of real
 | |
| space available to the sparse device. For this example, we'll assume /dev/sdb1
 | |
| is an available 10GB partition.
 | |
| 
 | |
| echo "0 $TEN_TERABYTES snapshot /dev/mapper/zero1 /dev/sdb1 p 128" | \
 | |
|    dmsetup create sparse1
 | |
| 
 | |
| This will create a 10TB sparse device called /dev/mapper/sparse1 that has
 | |
| 10GB of actual storage space available. If more than 10GB of data is written
 | |
| to this device, it will start returning I/O errors.
 | |
| 
 |